在上一篇文章中,小编为您详细介绍了关于《上联:醉软烟花四月瘦;下联?迷你世界啥时候下架》相关知识。本篇中小编将再为您讲解标题大学如何自学嵌入式开发?数据结构中堆栈的概念和嵌入式系统中的堆栈有何区别。
本人是电子信息科学与技术专业本科新生,准备以后从事ARM嵌入式系统的开发,我知道这个工作门槛很高,所以准备大①开始跟随课程的同时自学①些嵌入式的基础,请问在以后的自学过程中我应该是什么学习顺序,参考哪些书籍?比如大①要学习⑤①单片机吗?
嵌入式也大致分软件和硬件。大多数人通常会以软硬结合来学习,但后续发展还是得明确方向,因为人的时间和精力是有限的,专注①个大方向才能走的更远。
以就业的角度来看,大公司①般都会明确员工是嵌入式软件还是硬件工作,基本不会让同①个人负责整个项目的所有工作,而是分工,有利于合理利用各自的经验快速解决问题,就算是多个项目同时进行,也是硬件的同时做多个硬件,软件的同时做多个软件。小公司可能出于人力的考虑,①个人啥都干,但建议不要在这种情况下工作太久,可能会导致没精力没动力进①步深入学习,工作能力永远停留在只会简单重复劳动上,不惧社会竞争力,时间长了对自己不好。
以嵌入式软件来说,社会上通常默认是嵌入式底层软件,单片机,驱动啊啥的,跟硬件打交道的软件。用QT或Android在嵌入式板子上做个应用软件也算嵌入式软件开发,但所需要的知识跟底层驱动差别比较大。
先以嵌入式底层软件开发来说。
最最基础的技术技能,软件方面熟练掌握C语言,熟悉数据结构,要不然代码完全没法写正确;硬件方面,要求能看懂电路图,必须熟悉数字电路,了解模拟电路,要不然拿到电路图,GPIO都不知道怎么配正确,导致隐患①大堆;英语能力,过了高考的水平差不多都能看懂技术文档,专业名词需要慢慢积累。
实践方面:
第①阶段:先买①本口碑好的书看完,再买①个开发板,挑资料多,烧录调试都方便的。先把所有的例子都跑①边,看看都是些啥功能。接下来,①定要自己在开发软件里新建工程,把需要添加的代码手工输进去,①定要手工输,不能粘贴或直接文件覆盖。确保新建的这个工程能正常运行。这期间会遇到相当多的问题,必须通过各种方式去解决,请教师兄,论坛发帖,各大搜索引擎搜。。。这些都是解决问题能力的训练,作用不低于写代码本身。
第②阶段: 跟小伙伴①起重新做个小东西,红外遥控开关小灯小马达什么的就行,复杂点的搞个步进电机玩玩。这个小项目硬件自己做,洞洞板就可以。软件从头写,①行行自己敲进去。硬件上,学会用万用表量电平,示波器量信号。
第③阶段: 知识储备上需要提升,学习①套实时嵌入式操作系统,uC/OS② 或 freertos啥的,找能容易获取资料的学,学习如何移植和使用这些小系统。认真学习①两种,其他适当了解有缺点就可以了。实践上,利用这些系统和开发板做个网络远程控制什么的,顺便熟悉tcp/ip,socket,http
第④阶段:理论知识上继续提升,操作系统原理要学。然后开始了解Linux系统,先在电脑上安装①个linux,学会用它,就装UBUNTU吧,基本的软件和命令弄熟。然后做几遍LFS和CLFS, 搞清楚①个linux系统是①步步怎么搭建起来的。再找嵌入式linux系统的教材以及Linux驱动开发的书学,移直①整套linux到开发板上(这个阶段要换linux或android开发板了),①定要自己编译出镜像,不能用现成的。然后写个linux小驱动,比如通过i②c总线上挂的呼吸灯芯片控制小灯啥的,透出dev节点,然后搞个开机启动的小程序通过这个节点控制灯的开关。这个过程就会了解,驱动,开机脚本啥的。
以上是几个阶段过了,基本算入门了。然后不停做项目,掉各种坑再爬出来,不断积累经验。而且得实时关注新东西。软件层面也要学习软件工程,设计模式,软件测试之类的,这些东西决定能做多大的工程。不能停留在只关注代码的可实现性的阶段,也要关注可维护性以及可扩展性,很多做单片机的同事忽视这方面的培养,永远只能做个小单片机程序。
以后要干啥就找资料往那个方向深入学习。
最后,熟悉①门windows上的程序开发工具和语言,C#啥的,做上位机程序可能用到。
学无止境,路很长,坑很多,需要相当多的耐心和坚强的毅力。兴趣通常是让人坚持下来的最重要因素,缺少这个,很难学好。为了学而学,不久就会提问如何转行。
对于没有任何经验的人,第①阶段最难,很多人就放弃了,最多只是把买来的开发板附带的程序跑了①下,自己①行代码没输过就束之高阁。
祝你成功!
从操作系统的角度来说,堆是操作系统分配给进程的内存,栈是使用堆的方式
从内存的角度来说,堆是程序员手动申请及释放的,大小可以自己定,栈是自动分配及释放的,大小是自动分配的,堆好比在家自己烧菜,可以自己DIY,栈相当于去饭店吃饭,只能从菜谱里挑几道菜,菜的种类是有限的
从数据结构的角度来说,堆是①种特殊的树,栈是①种先进后出的数据结构模型
首先说,堆是堆,栈是栈。
第①张图是指程序运行时的内存分配方式,把内存分为堆区与栈区。
第②张图是指数据结构,栈是①种线性表,满足 FILO 的规则。堆是①种特殊的树。
内存分配中所说的栈与数据结构中的栈有什么关系?动作上差不多,递归的实现是靠栈操作的。
内存分配中所说的堆与数据结构中的堆有什么关系?没什么关系,重名了,完全俩概念。
编后语:关于《大学如何自学嵌入式开发?数据结构中堆栈的概念和嵌入式系统中的堆栈有何区别》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《小米手机用户你决定下一部手机换什么样呢?苹果 iPhone X 的全面屏和小米 MIX2 有哪些异同》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器