1. 平时学习单片机的模式:集成度太高,学习不到单片机的本质
2. 嵌入式Linux系统的软件组成
2.1. 系统的启动过程
Windows:PC机一上电的时候,黑色屏幕上会显示BIOS,这个BIOS的目的是去启动Windows内核。Windows内核再挂载C盘(系统盘)、D盘(应用盘),最后再去启动应用程序,像QQ、网游等。
Linux:Android手机或者工控设备也有BIOS,但在嵌入式Linux系统里面不叫BIOS,而是叫Bootloader,他的目的是去启动Linux内核。 他首先也是识别应用程序所在的存储设备,挂载根文件系统(Windows系统里面的C盘&D盘,在Linux里面称为根文件系统)。最后去启动应用程序。
仔细的分析下Bootloader,他去启动内核,他去哪里启动内核呢? 显然是去某个地方读出内核,就比如说BIOS是去C盘上读出Windows内核,我们的Bootloader是去Flash或者SD卡读取内核。 因此Bootloader要拥有读取Flash或者SD卡的能力。有些Bootloader还要显示logo,因此还要具有操作LCD的能力。Bootloader还要设置开发板的环境,比如,初始化时钟、初始化内存、还要设置网卡等。
3. Bootloader是单片机程序的大全
4. 驱动程序
我们再来看看Bootloader启动内核之后,内核再去挂载根文件系统,意味着内核也要有操作硬件的能力,这就是驱动程序。我们首先来看看一个简单的驱动程序是什么样子。 首先我们的应用程序是调用open()、read()、write()这些标准的接口去访问硬件。那么就进入驱动程序里面,驱动程序里面有对应的drive_open()、drive_read()、drive_write()。最后在驱动程序里面,去配置硬件。 如果是一个LED点灯驱动,那么drive_open()要把GPIO设置为输出引脚,drive_read(),返回GPIO状态,driver_write()则写GPIO,让引脚输出高电平或者低电平。
驱动程序的构成: