如何学习嵌入式系统
答:
(1)C语言是所有编程语言中的王者(MCU、DSP以及各种类似ARM的芯片都可以用C语言编程),所以必须掌握得非常熟练。本科教学的C语言远远不够。有两个非常重要的内容不谈“文件操作”和“IO操作”,其中“IO操作”是必须掌握的技术。
(2)操作系统的原理是必要的。计算机专业毕业没关系。如果不是计算机专业的,一定要找一本比较简单的计算机原理书看一看,把“进程”、“线程”、“系统调度”等基本问题讲清楚。
(3)计算机原理应该是指x86的微机原理,但在嵌入式领域,x86处理器只是冰山一角,还有很多处理器叫ARM、XScale、SuperH、68K、PowerPC等。还有数不清的其他处理器,有些我叫不出名字。但x86通用规则是基础,需要深入学习(尤其是想学Linux的朋友,想读内核必须深入学习下面的X86体系架构)。
如何学习嵌入式开发?
答:
大家都知道这方面的人才非常稀缺,但是学习周期长,需要的知识面广,所以不要心急。让我们来看看以下问题,以了解您目前的知识水平:
(1)你有没有用VC++或者BC++写过应用?
如果你写了一个应用程序,你已经做得很好了。如果没有做过上层应用,怎么去理解越来越深的底层程序?那就赶紧补上这一课!!!
(2)你写过单片机或DSP程序吗?
我们把一个运行在没有操作系统的51单片机或DSP上的程序叫做“代码裸奔”,我们也写过裸奔代码。因为有时候,比如我们写一个简单的程序,只需要点击几个led,检测几个按钮的状态,那么“代码裸奔”得到一个while(1)的无限循环就够了,何必一刀杀鸡。
写这个裸奔代码也是学习嵌入式的必经之路,因为你会用C语言写控制字到寄存器,这是以后写驱动的基础。
另外需要注意的是,从概念上来说,“代码裸奔”也属于嵌入式开发的范畴。
(3)最后一个阶段,可以开始找一个方向(uCos,Linux,VxWorks,WindowsCE,Palm等。)并用操作系统学习嵌入式开发。
嵌入式操作系统的种类数不胜数,有些我连名字都叫不出来,太多了。但幸运的是,这些操作系统是相似的,并且是相通的。
你在读书,建议学习uCos操作系统(见邵贝贝的UC/OS操作系统);如果不喜欢这样的基础操作系统,VxWorks也是不错的选择。VxWorks在中国已经很多年了,在中国出版的书也很不错。特别推荐陈志宇的《VxWorks程序开发实践》和周启平的《VxWorks设备驱动和BSP开发指南》。Linux是一个噩梦,但如果你能走出这个噩梦,你就会成为一个专家。
就说这么多吧。这是一条漫长的路,修远。祝你成功!!!