学校这学期课程,准备重点学的一门课《嵌入式系统应用基础》 找到了这篇文章:以下。
想学好嵌入式Linux,首先要解决两个重要问题:
1. 学什么?
2. 怎么学?
先来
看看一个成熟的嵌入式产品的开发流程是怎么一个过程:
- 1.硬件开发
- 责任人: 硬件工程师
- 负责部分:基于EVM板, 添加、修改、删除硬件
- 2.Bootloader移植
- 责任人:系统工程师或驱动工程师
- 负责部分:将Bootloader移植到流程1所开发出来的硬件平台
- 3. Linux内核
- 责任人:系统工程师或驱动工程师
- 负责部分:将Linux内核移植到流程1所开发出来的硬件平台
- 4.根文件系统制作
- 责任人:系统工程师
- 负责部分:制作供内核启动的根文件系统
- 5.1 业务相关的应用程序
- 责任人:应用工程师
- 负责部分:开发和产品密切相关的应用程序
- 5.2 业务相关的驱动程序
- 责任人:驱动工程师
- 负责部分:开发和产品密切相关的驱动程序,如触摸屏、无线网卡
- 6. 功能测试,性能测试,系统集成测、实验局(系统设备)、发布
看完上面这些,你应该对嵌入式Linux有一个大概的认识了。我们再来理清一下知识结构,再对其进行细分。先来看预览一下“学什么”知识结构:
- 1.嵌入式处理器与裸机程序
- 2.Linux系统管理
- 3.Linux应用程序开发
- 4.Linux驱动程序开发
- 5.Linux内核开发与系统移植
再来对每一项要学习的东西进行汇集:
处理器:
1. ARM处理器工作模式
2. ARM系统寄存器
3. ARM寻址方式
4. ARM 汇编指令集
5. ARM环境C语言编程
6. ARM中断与异常
7. ADS集成开发环境
8. 裸机程序开发(串口、LCD、时钟、LED、按键……)
系统管理:
1. Linux定制安装
2. Linux命令详解
3. samba、nfs、tftp、wireshark使用
4. Shell编程
应用程序开发:
1. GCC、GDB、Makefile
2. 文件、时间编程
3. 多进程、多线程程序设计
4. 进程间通讯
5. 网络编程
6. QT图形化应用程序开发
7. Android图形化应用程序开发
内核开发:
1. Linux内核配置与裁剪
2. Linux内核模块开发
3. 根文件系统制作
4. 进程子系统
5. 内存子系统
6. Proc文件系统
7. 系统调用
8. 内核定时器
9. 内核异常分析
驱动程序开发:
1. 字符设备驱动程序
2. 总线、设备、驱动模型
3. 硬件访问技术
4. 中断处理
5. Input设备驱动
6. Platform驱动程序
7. PCI、USB驱动程序
8. 网卡驱动程序
9. 触摸屏驱动程序
10. 串口驱动程序
学好C语言对于学习嵌入式来说,C语言就是基础部分,它就像你的双脚,你想要跑起来,你对C语言的掌握就一定要达到精通。C语言是可以跟汇编结合对硬件进行操作,嵌入式开发基本用的都是C语言。所以你必须努力将C语言学好。
学习嵌入式LINUX我们知道ARM嵌入式都是带系统,也就是ARM+WinCE、ARM+LINUX或者ARM+VXWORKS。从事嵌入式的工程师至少要掌握一个嵌入式操作系统,这是所以项目中的关键
学习arm体系结构即使大家觉得汇编设计较枯燥乏味,学汇编可以让你掌握处理器的运行机制,让你写出最优秀、高效率的C语言代码。
深入学习内核驱动学习驱动呢,你就必须看得懂各个内核函数代码,所以你的C语言要过关,刚开始学习的时候,可以模仿驱动的源代码,尽管是很简单的驱动。