注:以韦东山的书籍和视频,以MINI2440开发板开始学习嵌入式LINUX的知识,边学边记录,先尝试着写博客,慢慢改进和提高!加油!欢迎交流。
一:BootLoader的认识:
BootLoader的作用是初始化硬件设备,准备好软件环境,将操作系统内核复制到内存中,然后启动内核。
为了开发方便,工程师们增强了BootLoader的功能,实际上,在生产的产品中并不需要这些功能,为了提高我们的开发效率而增加功能而已。
BootLoader跟硬件关系紧密,像U-BOOT这种比较凶猛的BootLoader也还是有些CPU架构不支持的,像U-BOOT这种BootLoader如果想拿来用在自己的板子上,也是需要进行一些一直的。
U-BOOT是一个功能强大,支持很多CPU架构,开源的BootLoader。
二:BootLoader启动方式
启动加载模式:BootLoader运行起来后,直接把内核拷贝到RAM中运行。
下载模式:用来下载文件或其他一些开发中所需要的动作。
三:CPU上电后,从哪个地址执行。
MINI2440一上电,如果从NAND FLASH启动,从片内的RAM的0地址开始执行。嵌入式开发板中,需要把存储器ROM或FLASH等映射到这个地址。MINI2440从NAND FLASH启动的话,已经默认是从0地址开始执行的。
四:板子和主机间传输文件时,使用到的协议包括如下:
串口:xmodem/ymodem/zmodem 简单,速度慢
网络:tftp,nfs 要求:主机上要开启tftp、nfs服务
其他:USB
五:嵌入式LINUX系统的4个层次(软件角度):
1.引导加载程序:固件中的boot的代码(可选)和BootLoader(主要目的为加载内核到内存中,然后启动内核。上电后执行的第一个程序)
2.Linux内核:为自己的板子定制的内核以及内核的启动参数(启动参数是为了告诉内核的,包含内存的大小,以及命令行参数等等)。
启动参数:可以是BootLoader传递给内核(BootLoader把启动参数放在某个地址,然后再启动内核时,把地址传给内核,内核启动前获取完参数,解析后,启动内核),
也可以是内核默认的。
3.文件系统:包括根文件系统和建立与Flash内存设备之上的文件系统。
文件系统包含了系统启动所必须的文件,包括:内核启动后运行的第一个程序(init),给用户提供操作LINUX的控制界面的shell程序,应用程序所依赖的库等。 这些必须、基本的文件合称为根文件系统。它们存放在一个分区中,Linux启动后首先挂接在这个分区。其他分区上的所有目录、文件的集合也称为文件系统。
4.用户应用程序:存储在文件系统中。在用户应用程序与内核层之间may be 有一个嵌入式图形用户界面(嵌入式GUI)。eg:Qtopia ,MiniGui,QT.
关于4个程序的表述如下图所示:截图来自(韦东山的嵌入式LINUX应用开发)