文章摘要:嵌入式开发做什么
由于物联网的发展,现在没人不知道嵌入式系统了,加上身边也有很多嵌入式的设备,所以大家开始都转入到嵌入式门下。那 […]
由于物联网的发展,现在没人不知道嵌入式系统了,加上身边也有很多嵌入式的设备,所以大家开始都转入到嵌入式门下。那么嵌入式开发怎么入门呢?现在就来看看吧。
嵌入式开发入门方法
1、C语言的学习
C语言是嵌入式软件开发人员必须熟练掌握的编程语言。作为C语言的初学者重点掌握基本数据类型、复合数据类型、流程控制、数组、指针、函数这几方面的基本知识。本人建议通过观看视频教学的方式进行学习,这样既快速又通俗易懂,当然前提是必须找到优质的教学视频资源。此外,可以配合入门书籍谭浩强的《C语言程序设计》进行学习。如果想深入的学习可以参考美国人写的人民邮电出版社出版的《CPrimer Plus》。
2、C语言的磨炼
掌握了基本的C语言语法以后并不代表我们就学会了C语言,关键是如何灵活的去运用。我们可以练习编写C语言学习书籍的课后习题或者在网站上搜索C语言笔试题库进行练习。也可以百度寻找经典的C语言编程案例进行学习。总之,就是将C语言运用的越熟练越好。至于开发环境可以选择VC++6.0 或者linux。
3、硬件电路基础
嵌入式软件工程师还必须懂一些硬件电路的基本知识。当然,对于刚入门的软件开发人员没必要非常精通电路技术,熟悉基本的电子元器件的功能即可。例如,电阻、电容、电感的作用以及符号,三极管、MOS管导通截止的条件,微处理器、晶振的基本概念等。至于,以上这些基本知识我们可以通过童诗白的第四版《模拟电子技术基础》和网上查阅的资料进行学习。
4、看懂原理图
作为嵌入式软件开发人员我们经常会和硬件打交道,我们的程序最终会被烧录到微处理器内部运行。所以,我们必须要会看硬件原理图,看懂之后才知道如何写程序。首先,我们要知道嵌入式硬件最小系统的组成部分,包括电源电路、晶振、微处理器、复位电路。然后以微处理器为中心向四周查看,主要看我们可以操纵的外设资源。以上知识的学习我们不妨经常浏览一下某些知名IT网站其他人上传的经典原理图。
5、基本外设知识
嵌入式程序很大一部分工作都是在控制外部设备或者与外部设备进行通信。例如,LED灯、数码管、RS232、AD/DA、I2C总线、SPI总线等。以上基本外设的知识完全可以通过百度百科或者网站大牛们写的博客进行学习。这样比查阅相关书籍学习的要快而且深入。此时,基本了解各个外设的概念、原理即可。至于深入的掌握还需进行实战开发。
6、开发板实战
以上基本都是理论知识的学习,要想真正的理解并且深刻的掌握。必须通过实战开发来更加深入的学习。我们可以买一个51系列的开发板或者高级一点的STM32开发板进行实战演练。根据开发板提供的教学视频或者自己摸索实践将开发板自带的常用外设全部调试一遍。至于,针对51开发板、STM32开发板的嵌入式开发环境我们可以采用KEIL4_MDK进行开发。
7、项目整合
有了以上的基础理论知识和简单的实战经验,我们还需要通过完整的项目来整合自己的技能和熟悉项目的开发过程。我们可以利用开发板自带的资源来开发万年历、遥控开关、计算器等小项目。或者采购一些比较有意思的项目套件进行开发,例如智能小车、遥控飞机等。通过以上步骤的练习,如果你能顺利的坚持下来,我想你已经进入嵌入式软件开发的大门了。
如何从零开始学习嵌入式开发技术
一、练好基本功
嵌入式系统专业是综合了计算机硬件技术,计算机软件技术以及电子电路技术的一门综合学科,所涉及的内涵和知识非常广泛,包括:数字电路,模拟电路,计算机组成原理,单片机基础,C语言基础,操作系统,数据结构,编译原理,计算机控制,计算机网络等知识。
在真正学习嵌入式开发之前,首先要打好基础。其中最重要的是C语言基础、数字电路、计算机组成原理三门课程。对于C语言,至少能单独编写调试一个3 ~500行的程序,能够了解C语言的基本语法规则,基本语句的使用,理解指针概念并能灵活使用各种指针。
二、嵌入式Linux应用开发
嵌入式开发基础知识学习完后,这时候你已经有了一定的嵌入式开发基础了,可以进行基于单片机的嵌入式系统设计了。单片机编程本身也是属于嵌入式编程,但是在这里我们只是把单片机开发当作嵌入式系统开发的基础,不把单片机开发作为真正的嵌入式系统开发,在这里我们的嵌入式系统开发是指在带有操作系统的嵌入式平台上的应用和驱动开发,特别指在嵌入式Linux平台上的开发。
很多同学这时候就开始买Linux书籍,从图书馆借了一大堆关于Linux的书:什么《Linux使用基础教程》、《Linux源码深度分析》、《Linux情景分析等》、《Linux高级使用指南》等等。结果抱着这些图书看了10天半个月还是不知所云,当初学习的激情慢慢就消退了,最后不了了之,终究没有进入嵌入式开发大门。究其原因,是因为没有找到合适学习嵌入式开发的方法,做任何事情都有方法可循,找对了学习方法往往就能事半功倍;否则就可能是事倍功半,甚至劳而无功。接下来我先分析一下同学们的几种常见的嵌入式Linux学习误区,然后提出一种比较合适的嵌入式Linux学习方法。
三、嵌入式Linux系统和驱动开发
有了嵌入式Linux平台上开发应用程序的基础,你已经对Linux的功能、Linux对应用程序提供的接口和系统调用有了一定的了解,知道如何利用Linux提供的功能来进行应用程序开发,知道如何来使用设备驱动来进行应用程序设计,有了这些知识后,你就可以更深入的去学习Linux系统原理和基于Linux驱动的开发,Linux内核的裁剪,文件系统构,bootloader等等底层的知识了。
四、更上一层楼
深入理解了嵌入式内核和驱动开发,这时候写个什么驱动对你已经没有什么问题了,开发过程中一些基本问题都难不倒你了。这时你可能想优化一下系统的性能,比如实时性,提高系统的启动速度,或者优化系统的内存管理机制,要达到修改内核核心机制的境界,你就需要去深入去研读Linux内核源码了,参考《Linux源码深度分析》、《Linux情景分析等》等Linux源码分析的书籍,深入理解Linux各部分的实现机制和原理,以及可能存在的问题。你只有在深入理解现有代码和实现机制的基础上,才能提出更好的改进方案。如果你能达到这个境界,那你已经是高手中的高手,可以笑傲群雄了。
嵌入式学习小技巧
1、重构思维模式
不要一上来就开始写代码,要掌握尽量多的重构方法,重构思维方式,掌握重构并不一定是要对原来代码的重构,而是让自己在操作之前就想好该怎么去进行。
2、搞清需求再动手
看到需求之后,肯定多多少少会有一些问题,或是理解上的错误,或是功能实现上的问题,这时,必须要交流清楚,否则,后续将会有更多问题。
3、文档也要写
可能不少人觉得文档没人看,写不写没关系。但是,文档没人看,还是要写。文档的作用大部分时候并不是用来沟通的,而是用来做记录的,大部分需求还是通过口头沟通,但是不写文档做记录,后续就容易扯皮。
4、必须写代码注释
必须写注释,如果不写注释,时间久了,回过头来连你自己都看不懂。而且,一个项目不可能就你一个人负责,注释也能够让别的同事看懂你的代码,
5、沟通需求并更改
别指望需求会稳定不变,产品需求是根据商业需求不断调整和优化的,改需求是再正常不过的事,不要总是抱怨,调整心态做好才是硬道理。
6、处理好和业务的关系
无论是技术还是业务,都不要想着凌驾于对方之上,应该是相辅相成的关系。不为公司商业做服务的技术,是毫无价值的,公司赚钱才是硬道理。不要纠结公司一直改需求,改业务。
7、不要心存侥幸
如果某个地方你感觉会出bug,那么,一定就是bug。千万不要心存侥幸,一定要把自己感觉会出bug的地方优化好,不留后患。
8、自己先测试几遍
不要写完就扔给测试人员去测,一定要自己动手先测试几遍,自己写的东西自己更熟悉,也更容易找到问题。经自己手的东西,要保证质量。
9、尽可能自己解决问题
遇到问题,先自己尽力解决,实在解决不了再求助别人。职场上,没有人有义务为你擦屁股,上司和同事都有自己事情要解决。不过,如果问题很紧急或严重,一定要尽快求助解决,不要害怕被骂,真等出现问题的时候,可能后果更严重。
10、慎用新技术
不否认新技术是好东西,但使用的时候,没有百分百把握就自作主张,多半是作死。如果真的出了问题,自己解决不了,就会出现无法挽回的损失。