如果从应用层的应用开发出发,建议先熟悉API函数,推荐《UNIX环境高级编程》,现在应该是第3版了,如果从应用层的界面开发出发,则建议学习Qt,WinCE或Android等。
但真实的嵌入式开发,熟悉以上还是远远不够的,建议如下学习曲线
第一节段 熟练使用Linux操作系统
学习Linux操作系统的概念和安装方法,理解Linux下的基本命令、管理配置和编辑器,包括VI编辑器,GCC编译器,GDB调试器和 Make 项目管理工具等知识。
第二阶段 精通linux下C语言
通过大量编程实例重点学习C语言的高级编程知识,包括函数与程序结构、指针、数组、常用算法、库函数的使用等知识,另外,还要学习数据结构的基础内容,包括链表、队列、栈、树、哈希表、图等内容。
第三阶段 嵌入式Linux应用编程
精通嵌入式Linux下的程序设计,精通嵌入式Linux开发环境,强化对Linux应用开发的理解和编码调试的能力,包括系统编程、文件I/O、多进程和多线程、网络编程、GUI图形界面编程、数据库。
第四阶段 嵌入式入门阶段-ARM体系结构
ARM处理器体系结构、编程环境、指令集、寻址方式、调试、汇编和混合编程。ARM的常用接口开发及硬件电路设计基础(包括IO、串口、看门狗、实时时钟、SPI、IIC、扫描键盘、FLASH操作等),为以后的设备驱动的学习打好基础。
第五阶段 嵌入式高级阶段-Linux内核和驱动开发
深入内核细节,了解Linux相关运行机理,为后面的驱动开发打好理论基础,内容包括内核源码结构、内存管理、进程管理、中断管理、系统调用、内核同步、时钟和定时器管理、信号、调度、进程间通信、文件系统和I/O设备管理等方面的内容。
第六阶段 嵌入式硬件开发(学软件的可以不学,但了解硬件对学嵌入式软件有更深入的了解,尤其对系统的理解更深入。)
内容包括单片机的学习,电路分析和电路的原理,PCB设计,主要包括Altium Designed,电子设计基础知识,原理图初步设计,进阶,提高,深入,pcb库的设计,集成库的作用和制作,pcb设计初步,PCB设计提高,PCB深入,对FPGA和CPLD系统的相关基础概念等
第七阶段 嵌入式深入阶段
变成高手,你还要进一步学习内核和系统,内容包括计算机系统结构和汇编,linux内核编程,linux内核的基础知识,汇编及保护模式,linux内核体系结构,linux引导程序分析,linux内核代码分析,linux块设备驱动程序分析等
第八阶段 实践阶段
其实就是循序渐进,先学好基础理论知识,然后动手试验,最后总结试验结果,验证所学知识并积累经验
希望对你有帮助,加油!