ARM+Linux是目前比较吃香的嵌入式软件开发组合,但很多新手对于如何入门嵌入式感觉不知从何下手,本文分析了学习嵌入式软件开发需要具备哪些基本知识和技能,开发学习的基本步骤,并给出了各种参考资料及网站。
1 软硬件的基本技能
关于ARM+linux,涉及软硬件两块,要求通吃,这种人才比较适合成长为嵌入式系统架构师
1.1 硬件包括处理器的体系结构及硬件总线接口两部分
处理器的体系结构
需要对微机原理、单片机、处理器等有所了解,基本上搞明白一种处理器如ARM、MIPS、PPC、DSP,学习其他的就很快了
硬件总线接口
最底层的,驱动开发是最常见的工作了
这需要对各种硬件总线接口等有所了解,如IIS、IIC、UART、SPI、CAN、MDIO、USB、PCI、PCMCIA、SDRAM、FLASH及EEPROM等,设备千差万别,但基本的连接都是通过这些接口进行的,搞明白了接口剩下的就是具体芯片的事了
1.2 软件主要包括开发语言及操作系统开发
开发语言
嵌入式软开以C语言开发为主,要求精通指针、结构指针、指针函数及所有的数据类型转换,对const、static、volatile、packed、aligned等关键字有深入的认识
操作系统开发
如果想搞嵌入式软件开发的话,不学点操作系统方面的知识你会发现没什么市场
现在基本上是个平台都想跑个操作系统
控制类的uC/OS-II,eCos,这些都是小型的操作系统,学起来简单,但在求职中市场小
手机类的,如Windows Mobile、Sybian、PalmOS及Andriod,搞Sybian、PalmOS的人还不多,Windows Mobile和Andriod还是挺火的,也是未来的领导者
网络通信类的,如VxWorks、Linux等大型复杂的操作系统,也是企业要求最多的,还有不太知名的OSE,但其在基站设备中占据了50%的市场份额
当然还有不带MMU的,如uClinux、Nucleus等
个人感觉尤其是Linux是目前求职市场中最火的,主要是由于其开源的优势,很多单位都在往这方面投入以减少成本
如果以前对操作系统方面了解较少的话,个人建议可以先学学uC/OS-II,简单易上手,主要是借此学习操作系统的相关知识
然后主打Linux,要结合开发板来学,这样才上手的快
2 开发板
广州优龙、华恒等都是比较知名的开发板厂家,配套的资料比较完善,相应的技术支持也不错,可以考虑
3 开发流程及参考书目
嵌入式开发需要遵循一个基本的流程,首先是开发环境及流程,然后是驱动开发和应用程序开发,最后就是深入内核的海洋,学习设计理念及方法,最高境界就是就是将这些设计思路娴熟的运用在任意一个应用环境中,那时候就是神了~~~
3.1 嵌入式开发设计流程:
1、ARM嵌入式Linux系统构造与驱动开发范例
2、嵌入式设计及Linux驱动开发指南
3、嵌入式Linux应用程序开发详解
都属于Linux开发设计流程方面的入门书籍,嵌入式开发的基础
3.2 Linux驱动开发:
1、嵌入式系统接口设计与Linux驱动程序开发 北京航空航天大学出版社 刘淼 强烈推荐; 包括各种硬件总线接口范例,接口开发必备
2、Linux设备驱动程序<Linux Device Drivers third edition>,Linux驱动开发必备经典,粗读查询即可,当然最基本的字符设备驱动和块设备驱动必须熟练掌握
3.3 Linux应用程序开发:
UNIX环境高级编程
UNIX网络编程全卷
3.4 Linux内核开发:
内核完全注释,源代码级的分析,但版本较低
深入理解Linux内核Understanding the Linux Kernel,太深了,东西太多,最后看合适
Linux内核设计与实现Linux Kernel Development,内核整体结构和基本理论知识
3.5 ARM:
ARM体系结构与编程
ARM应用系统开发详解
4 相关Linux网站
http://www.makeru.com.cn/ |