嵌入式开发学习(零):概述
总阅读次
- 1. 前言
- 1.1. Linux研究领域
- 1.2. 架构
- 1.3. Bootloader
- 1.4. Bootloader这段小程序初始化硬件设备、建立内存空间映射图,从而将操作系统的软硬件带到一个合适的状态以备为最终调用操作系统内核准备好正确的环境
- 1.5. Linux启动到最后等所有驱动初始化后,最后一步才挂载文件系统## Kernel内核Linux操作系统本身的代码;+ Android、QT、Ubuntu底层都是Linux内核+ Android、QT、Ubuntu的差异在于文件系统
- 1.6. 文件系统
- 1.7. 应用程序
- 1.8. Linux驱动(属于操作系统的一部分)
- 1.9. 框架学习方法
- 1.10. 嵌入式技术研发职位
- 1.11. 学习路线
2016-4-3 周六; 11:43AM——10:AM
参考教材《迅为电子开发板入门实验手册》
前言
Linux研究领域
- 服务器维护:需要了解Linux服务器,熟练使用shell,了解网络配置。
- 服务器开发:需要学习Linux程序设计和Linux网络编程。
- 嵌入式Linux应用程序:需要学习C语言和基本的Linux常识
- 嵌入式Linux驱动:除了需要学习“嵌入式Linux应用程序”的知识以外,还需要了解简单的芯片原理
以及一些电路基础知识,还需要对Linux内核有一定的了解。 - Linux可视化应用程序:除了需要学习“嵌入式Linux应用程序”的知识以外,还需要学习GDK或者QT或者Android的知识。
架构
Bootloader
Bootloader是一个引导程序,在硬件复位以后,第一个
要执行的程序;主要工作:初始化操作系统运行的环境(如初始化内存后Bootloader会把操作系统的代码加载到内存,即从Bootloader跳转到操作系统;一旦操作系统运行起来了,Bootloader便不再起作用了)例如:U-boot
、Vivi、RedBoot
Uboot是一个开源系统
U-boot和操作系统Linux有什么区别?
U-boot是最大的裸机系统,但是U-boot没有多任务的机制,不能实现任务调度。注意可以没有Bootloader
OS要在不同的平台运行比如在X86上在ARM上、PowerPC,但不同处理器的初始化操作是不同的 操作系统代码不考虑各种处理器的差异
Bootloader特点:
- 以硬件关系密切(如CPU类型)
- 与具体操作系统无关
- 一旦操作系统运行起来,Bootloader便不再起作用了。
Bootloader这段小程序初始化硬件设备、建立内存空间映射图,从而将操作系统的软硬件带到一个合适的状态以备为最终调用操作系统内核准备好正确的环境
Linux启动到最后等所有驱动初始化后,最后一步才挂载文件系统
## Kernel内核
Linux操作系统本身的代码;
+ Android、QT、Ubuntu底层都是Linux内核
+ Android、QT、Ubuntu的差异在于文件系统
文件系统
应用程序
运行在操作系统上,通过调用操作系统资源来工作(是最终业务逻辑)
Linux驱动(属于操作系统的一部分)
Linux驱动有3种
- 字符设备驱动(适合初学者开发)
- 块设备驱动
- 网络设备
框架学习方法
学习快速原型,逐渐迭代开发(学习),快速开发产品雏形,然后逐渐清晰,逐步完成开发。掌握一定基础,再去学习框架,然后逐步深入学习。
嵌入式技术研发职位
嵌入式驱动工程师
单片机原理、C语言编程经验、Linux基础框架
高级嵌入式驱动工程师
数据结构、算法原理
系统构架师
计算机系统体系架构、操作系统(从抽象到具体)
学习路线
嵌入式知识非常广,要明确路线。
step1:清楚最基本概念:
bootloader引导程序
linux操作系统内核(kernel)
文件系统(可能包含2个文件)
step2:搭建开发环境
Linux或Android系统编译和烧写都是依赖开发环境
搭建好环境就可以学习源代码编译和系统的烧写
step3:Linux应用程序的设计
step4:Linux驱动程序学习
全面掌握Linux驱动程序设计很困难,Linux驱动总体分为3种:
- 字符类设备(必须掌握)
如:GPIO操作、步进电机、开关量、继电器、电流电压模拟量、PWM
2. 网络设备(默认移植好的,可直接使用,不需要太多研究)
3. 块设备(默认移植好的,可直接使用,通常不需要太多研究)
- 单片机+C语言
- Linux基础框架(Bootloader、Kernerl、文件系统)
- Linux字符类驱动程序
- 更深入学习,不断迭代。