嵌入式学习是一个循序渐进的过程,如果是希望向嵌入式软件方向发展的话,目前最常见的是嵌入式Linux 方向,关注这个方向,我认为大概分3 个阶段: 1、嵌入式linux 上层应用,包括 QT 的GUI 开发 2、嵌入式linux 系统开发 3、嵌入式linux 驱动开发 嵌入式目前主要面向的几个操作系统是,LINUX,WINCE、VxWorks 等等 Linux 是开源免费的,而且其源代码是开放的,更加适合我们学习嵌入式
你可以尝试以下路线: (1) C 语言是所有编程语言中的强者,单片机、DSP、类似 ARM 的种种芯片的编程都可以用 C 语言搞定),因此必须非常熟练的掌握
推荐书籍:《The C Programming Language》 这本经典的教材是老外写的,也有中译版本
(2) 操作系统原理,是必需的,如果你是计算机专业毕业那也就无所谓了,如果是非计算机专业的就必须找一本比较浅显的计算机原理书籍看一看,把啥叫“进程”“线程”“系统调度”等等基本问题搞清楚
(3)Linux 操作系统就是用 C 语言编写的,所以你也应该先学习下 Linux 方面的编程,只有你会应用了,才能近一步去了解其内核的精髓
推荐书籍:《UNIX 环境高级编程》(第 2 版) (4) 了解 ARM 的架构,原理,以及其汇编指令,我们在嵌入式开发中,一般很少去写汇编,但是最起码的要求是能够看懂 arm 汇编
(5) 系统移植的时候,就需要你从最下层的bootloader 开始,然后内核移植,文件系统移植等
而移植这部分对硬件的依赖是非常大的,其配置步骤也相对复杂,也没有太多详细资料
(6) 驱动开发 linux 驱动程序设计既是个极富有挑战性的领域,又是一个博大精深的内容
linux 驱动程序设计本质是属于 linux 内核编程范畴的,因而是对 linux 内核和内核编程是有要求的