电子说
现在嵌入式开发越来越吃香,很多人都想要学习却不知道要从何下手。本文分析了学习嵌入式软件开发需要具备哪些基本知识和技能,开发学习的基本步骤,并给出了各种参考资料及网站,同时小编还推荐了学习嵌入式开发的书籍。
一、软硬件的基本技能
关于ARM+linux,涉及软硬件两块,要求通吃,这种人才比较适合成长为嵌入式系统架构师
1、硬件包括处理器的体系结构及硬件总线接口两部分
1)处理器的体系结构
需要对微机原理、单片机、处理器等有所了解,基本上搞明白一种处理器如ARM、MIPS、PPC、DSP,学习其他的就很快了
2)硬件总线接口
最底层的,驱动开发是最常见的工作了。
这需要对各种硬件总线接口等有所了解,如IIS、IIC、UART、SPI、CAN、MDIO、USB、PCI、PCMCIA、SDRAM、FLASH及EEPROM等,设备千差万别,但基本的连接都是通过这些接口进行的,搞明白了接口剩下的就是具体芯片的事了。
2、软件主要包括开发语言及操作系统开发
1)开发语言
嵌入式软开以C语言开发为主,要求精通指针、结构指针、指针函数及所有的数据类型转换,对const、static、volatile、packed、aligned等关键字有深入的认识。
2)操作系统开发
如果想搞嵌入式软件开发的话,不学点操作系统方面的知识你会发现没什么市场。现在基本上是个平台都想跑个操作系统,控制类的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,要结合开发板来学,这样才上手的快。
二、开发板
广州优龙、华恒等都是比较知名的开发板厂家,配套的资料比较完善,相应的技术支持也不错,可以考虑。
三、开发流程及参考书目
嵌入式开发需要遵循一个基本的流程,首先是开发环境及流程,然后是驱动开发和应用程序开发,最后就是深入内核的海洋,学习设计理念及方法,最高境界就是就是将这些设计思路娴熟的运用在任意一个应用环境中,那时候就是神了~~~
1、嵌入式开发设计流程:
1)ARM嵌入式Linux系统构造与驱动开发范例
2)嵌入式设计及Linux驱动开发指南
3)嵌入式Linux应用程序开发详解
都属于Linux开发设计流程方面的入门书籍,嵌入式开发的基础
2、Linux驱动开发:
1)嵌入式系统接口设计与Linux驱动程序开发 北京航空航天大学出版社 刘淼 强烈推荐; 包括各种硬件总线接口范例,接口开发必备
2)Linux设备驱动程序《Linux Device Drivers third edition》,Linux驱动开发必备经典,粗读查询即可,当然最基本的字符设备驱动和块设备驱动必须熟练掌握
3、 Linux应用程序开发:
UNIX环境高级编程
UNIX网络编程全卷
4、Linux内核开发:
内核完全注释,源代码级的分析,但版本较低
深入理解Linux内核Understanding the Linux Kernel,太深了,东西太多,最后看合适
Linux内核设计与实现Linux Kernel Development,内核整体结构和基本理论知识
5、ARM:
ARM体系结构与编程,杜春蕾
ARM应用系统开发详解
四、相关Linux网站
1、各种Linux论坛
http://www.linuxforum.net/forum/ubbthreads.php
http://www.linuxsir.org/bbs/
http://bbs.chinaunix.net/
http://www.linuxeden.com/forum/
http://www.linuxfans.org/bbs/index.php
2、开源网站
http://sourceforge.net/
http://www.denx.de
http://www.pudn.com/
http://download.chinaunix.net/
3、内核源代码学习下载
http://lxr.linux.no/linux+v2.6.19/
http://www.kernel.org/pub/linux/kernel/
一、Linux基础
1、《Linux与Unix Shell 编程指南》
二、C语言基础
1、《C Primer Plus,5th Edition》【美】Stephen Prata着
2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着
3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE)
4、《嵌入式Linux应用程序开发详解》
三、Linux内核
1、《深入理解Linux内核》(第三版)
2、《Linux内核源代码情景分析》毛德操 胡希明著
四、研发方向
1、《UNIX Network Programming》(UNP)
2、《TCP/IP详解》
3、《Linux内核编程》
4、《Linux设备驱动开发》(LDD)
5、《Linux高级程序设计》 杨宗德著
五、硬件基础
1、《ARM体系结构与编程》杜春雷着
2、S3C2410 Datasheet
六、英语基础
1、《计算机与通信专业英语》
七、系统教程
1、《嵌入式系统――体系结构、编程与设计》
2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着
3、《Building Embedded Linux Systems》
4、《嵌入式ARM系统原理与实例开发》 杨宗德著
八、理论基础
1、《算法导论》
2、《数据结构(C语言版)》
3、《计算机组织与体系结构?性能分析》
4、《深入理解计算机系统》【美】Randal E. Bryant David O‘’Hallaron着
5、《操作系统:精髓与设计原理》
6、《编译原理》
7、《数据通信与计算机网络》
8、《数据压缩原理与应用》
九、C语言书籍推荐
1、The C programming language 《C程序设计语言》
2、Pointers on C 《C和指针》
3、C traps and pitfalls 《C陷阱与缺陷》
4、Expert C Lanuage 《专家C编程》
5、Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs
《编程精粹--Microsoft 编写优质无错C程序秘诀》
6、Programming Embedded Systems in C and C++ 《嵌入式系统编程》
7、《C语言嵌入式系统编程修炼》
8、《高质量C++/C编程指南》林锐
全部0条评论
快来发表一下你的评论吧 !