本文主要介绍的是嵌入式系统开发学习心得体会及经验总结,首先介绍了嵌入式系统开发的三大关键点,其次推荐了嵌入式系统开发必读的书籍,最后介绍了学习嵌入式系统开发的体会及经验总结。
嵌入式系统开发简介
嵌入式系统开发是对于除了电脑之外的所有电子设备上操作系统的开发,开发对象有手机,掌上电脑,机电系统等,一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成。
嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬件可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用 户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
嵌入式系统一般指非PC系统,它包括硬件和软件两部分。硬件包括处理器/微处理器、存储器及外设器件和I/O端口、图形控制器等。软件部分包括操作系统软件(OS)(要求实时和多任务操作)和应用程序编程。有时设计人员把这两种软件组合在一起。应用程序控制着系统的运作和行为;而操作系统控制着应用程序编程与硬件的交互作用。
嵌入式系统开发的三大关键点
1、嵌入式系统是相对于PC平台而言的,使用的平台一般是针对ARM,PPC,DSP等非PC平台的,所以使用的编译和调试工具不是VC6.0,而是不同的平台需要专门的编译开发工具,交叉编译是嵌入式特有的概念;
2、嵌入式系统往往指带有操作系统的系统,以前简单的系统可以直接在裸机(如51单片机)上开发,而现在OS成为嵌入式的一个基本特征,已经有各种实时内核或者全功能的OS,因此对程序员要求较高;
3、嵌入式系统往往包括软件和硬件两个部分,软件开发人员往往也需要知道硬件的知识,只有知道硬件的特性才能开发出高性能的程序。另外不想在PC上开发,驱动程序都已经有了,在嵌入式系统中由于所接的外设复杂,很多时候需要自己编写驱动程序,结果是在程序开发之前一般需要看硬件手册。
嵌入式系统开发从何学起?
这是一个初学者很想知道的问题,然而又是很难回答的问题,我初学时也是一样的。学习嵌入式不能着急,我觉得最重要的还是打好基础,从简单的做起。其中的基本功主要有:
1、微机原理和接口要很熟悉,至少知道一门汇编语言,不是要你去记指令,而是要弄清楚处理器执行的过程和常用的指令执行的操作;
2、熟悉常用的体系结构。ARM架构处理器应用越来越广泛,值得研究一下,当然还有很多的体系架构,开发时再看硬件手册这个过程就是训练自己阅读手册和查询手册的能力,手册很长,往往只要知道个大概。细节需要在使用时查询;
3、C语言编程:C语言大家都会用,我知道在学校学习时都是基于PC,基本不会用C语言程序访问寄存器或者外设,而在嵌入式开发时你会发现有很多地方需要小心,举个例子,一般中断服务程序需要访问的全局变量需要用volatile申明。
嵌入式系统开发必读书籍推荐
1、针对入门级的教材
推荐高等教育出版社的全国计算机等级考试-三级教程(嵌入式系统开发技术),此书对嵌入式系统的整体把握还是很好的,此书的汇编指令介绍得也很不错,尽管这本书较少提及linux方面的知识,也几乎没有u-boot方面的内容,但每个部分简明扼要,全书314页左右,没有太多代码,让没有基础的你,在阅读的时候不至于淹没于代码的海洋,此书强烈建议大一新生直接使用,自学,并参加计算机三级考试,对嵌入式系统有一个轮廓性的认识。
2、与第一本书同时阅读参考的教材
嵌入式系统基础教程(俞建新,王健,宋健健),此书为全国重点大学计算机教材,同样的特点,薄,但是这本书相对于第一本,更精,对比其中介绍DRAM和SRAM的内容,就可以知道此书作者的用心程度,如果不考计算机等级考试,直接看这本入门即可,而且此书图很丰富,在让你不陷入代码的同时,不陷入文字,更精准理解知识点。
3、linux操作系统使用
《鸟哥的Linux私房菜 》、文东戈老师的《linux操作系统实用教程》、刘忆智《linux从入门到精通》。
4、大名鼎鼎的韦东山教材
《嵌入式linux应用开发完全手册》, 此书必读,不可替代,没有之一,在前两本的熏陶下,你就会开始好奇嵌入式系统的工作原理,这时候你再泡入代码,已经可以开始在代码中遨游,尤其韦老师写书写得很细致,对代码不仅做了详细注释,还对其进行点评,相信结合代码,你对嵌入式系统的硬件体系架构,特殊功能寄存器配置,中断体系架构会有更深刻的理解,全书采取案例教学,并不对某些很细的知识点展开,所以你需要阅读相应知识点更专业的教材,例如makefile,arm汇编,shell编程等等,这些都是体现在案例分析中,没有很全面列出,但是这不影响此书成为嵌入式业界顶级教材的地位。
5、linux程序设计
推荐徐城老师编写的《linux环境C程序设计》、电子科技大学李林老师编著的《linux程序设计实践》和Neil Matthew的《linux程序设计》 。
6、linux内核方面
好的教材有:韩国人写的《arm linux内核源码剖析》和德国人写的《深入linux内核架构》,都是翻译本。
7、linux驱动方面
国内最好的教材:宋宝华老师的《Linux设备驱动开发详解:基于最新的Linux 4.0内核》,美国人写的 Linux设备驱动程序(中文版第三版)也是经典教材。
8、《程序员的自我修养-链接、装载与库》。
9、《深入浅出嵌入式底层软件开发》
10、《ARM+LINUX入门与实践 》
11、《嵌入式Linux系统工程师标准培训教材》
嵌入式系统开发学习心得体会
以下主要是讲在嵌入式开发学习和应用阶段,需要注意的一些细节和一些习惯,相信我的嵌入式开发学习心得对你会有帮助。
都说字如其人,但作为嵌入式工程师来讲,编制程序的习惯同样能够反应出其水平,每位工程师都会有自己的程序设计风格和逻辑思路,所以想要成为一名合格的嵌入式工程师,形成良好的编程习惯是非常有必要的,如果便编写的程序结构合理、清晰、便于执行,便于调试和维护,不仅自己看得懂,别人也可以看懂,这样的程序何乐而不为呢?下面就简单来了解下基本的编程习惯需注意的几点内容,也就是我的嵌入式开发学习心得。
1、模块化的程序结构编程习惯。
模块化设计简单来讲就是程序的编写用主程序、子程序和子过程等框架把软件的主要结构和流程描述出来,同时定义和调试好各个框架之间的输入和输出链接关系,通过一些列的以功能块为单位的算法描述进行设计,使程序复杂度、程序设计、调试和维护等等操作过程更为简单化。
说到这里我想起了学习时实操项目的一些经历,如果要设计一款单片机控制器,该控制器接收串口发送来的文字信息,显示在128X64的单色液晶屏上。通过约定的协议方式来确定文字的字体、大小、文字内容等什么位置显示、最终这些信息会以什么样的方式显示出来。根据模块化的程序设计思想,程序代码分布在串口数据收发模块、数据协议解析处理模块、LCD文字显示处理模块和主程序模块四个模块内。经过简单的分析和设计思想,使每个模块都形成目的明确、功能单一的程序代码,然后每个模块再通过头文件,将模块中的接口函数、全局变量、结构体等内容导出。最终系统功能就会很好地实现。
2、清晰移动的命名规则编程习惯
命名规则对于嵌入式工程师来讲在工作中扮演者不可或缺的角色,对于一般的事物来讲,我们可以通过名字便可知道与它相关的一系列信息,同样在编写程序的过程中,我们也可以通过简单的命名来实现所写程序的可读性,但在命名过程中我们要注意程序当中的这些函数、变量、和常量等元素不能够随意命名,如果你只是简单随意的命名就会使程序的易读性大大降低,当然程序的维护性也会大打折扣。
讲到命名规则的相关内容,大家不妨可以了解了解华清远见授课老师的一则案例讲解内容,通过简单的了解之后,肯定获益良多,命名管道的简单使用。
3、简洁明了的注释方法编程习惯
在编写程序的过程中注释是相当有必要的,恰当的注释可以很好的将程序模块清晰的描述出来,当然在编写程序过程中,复杂的算法需要加上流程说明,这时候恰当的注释就可以将函数的功能作用描述的非常具体了,同时还可将重要的变量作用与用途标注的清晰具体是非常有帮助的。
4、清晰易读的文本格式编程习惯
无规矩不成方圆,通过程序代码书写的格式就可以大概了解你的程序质量,程序代码并不是你随意堆砌在,必须要格式工整。程序书写时,必须要有缩进,而且每一条语句必须要换行。通过恰当的所以可以很清晰的读懂代码的嵌套关系。程序是最复杂的东西,是需要用智力去把握的智力产品。良好的格式能使程序结构一目了然,帮助你和别人理解它,帮助你的思维,也帮助你发现程序中不正常的地方,使程序中的错误更容易被发现。
嵌入式系统开发经验总结
1、目标要明确,不要得过且过,不要追逐热门的东西。不管在什么时候,心里都要有自己的信念和理想,不要被其他东西左右了自己。
2、要从兴趣和竞争出发,因为这才是你产生动力源的地方。学东西时,要让自己先喜欢上它,要学会享受学习它的时间,喜欢乔***的都知道,乔老爷子最常说的一句就是要享受比赛的时间。因为只有你喜欢上了它,享受了它,才不会被它所产生的压力压倒自己,不要产生一种厌恶的心理。而且心态要调整,不要一味的蛮学,死学,在没有什么兴趣学的时候可以先玩几天,在回过头来,或者用其他的方式来转换。
3、要抱着一种十年方能磨一剑的心理,扎扎实实从基础开始,不要为高速开发的一些现象所迷惑,那些都只是软件的功劳。我个人认为搞编程,英语和数学很重要,大家一定要时时的抓,至于怎么抓那就是另外一回事了,当然其他的知识也要汲取, 可以多接触点天文,地理, 人文方面的东西来补充自己。