Linux下嵌入式学习方法

2019-07-13 03:57发布

学校这学期课程,准备重点学的一门课《嵌入式系统应用基础》 找到了这篇文章:以下。 想学好嵌入式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语言要过关,刚开始学习的时候,可以模仿驱动的源代码,尽管是很简单的驱动。