2、vivi的启动过程分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、vivi的启动过程分析
这里我们主要是用vivi的源码来进行分析,因为vivi的源码都是从Linux内核的源码中抠出来的,所以理解了vivi的启动过程,那么对于理解Linux操作系统也是很有帮助的,bootloader的启动过程大多是分两个阶段,即stage1和stage2,依赖CPU体系结构的代码通常放在stage1中,而且通常用汇编语言实现,stage2中的代码通常用C语言实现,这样可以实现更复杂的功能,而且代码会具有更好的可读性和移植性,这个可以看一下祥电子S3C2440开发平台光盘→资料盘→TX-2440A盘20111012更新→嵌入式学习资料压缩包中的bootloader技术内幕这篇文章,这里很详细的介绍了bootloader的启动过程,3.1.Boot Loader 的stage1所完成的工作是基本硬件的初始化,3.1.2.为加载stage2准备RAM空间,3.1.3.拷贝stage2代码到RAM中,3.1.4.设置堆栈指针sp,3.1.5.跳转到第二阶段stage2的C程序入口点,我们可以看一下vivi的源码,在天祥电子S3C2440开发平台光盘→资料盘→TX-2440A盘20111012更新→源码包→bootloader源码压缩包的vivi源码→vivi_2440文件夹中,第一阶段的代码是在/arch/s3c2440文件夹head.S这个文件中,我们用Notepad++文本编辑器打开head.S文件,看一下发现这里都是用汇编语言写的
2、bootloader的stage2阶段
通常包括一下步骤:1、初始化本阶段要用到的硬件设备,那至少要初始化一个串口,以便和用户进行交互 2、检测系统内存映射,因为后面要将Flash中的内核镜像 加载到RAM空间,那就要在这之前检查系统的内存映射情况 3、将kernel映像和根文件系统映像从Flash上读到RAM空间 4、为内核设置启动参数,把这些参数传递给内核 5、调用内核,那这些程序都在/vivi_2440/arch/lib目录下,由这个文件夹下的文件实现的,第二阶段stage2的入口函数就是main函数,它在\vivi_2440\vivi_2440\init这个文件夹main.c文件中,就是由main函数来调用lib目录下的函数来实现第二阶段的工作,看一下vivi的源码目录结构,arch文件夹中包含了执行目标板的子目录,这里就有一个s3c2440子目录,drivers文件夹包含引导系统需要的设备驱动程序,比如serial子目录的串口和/mtd/nand子目录下的nandflash及/mtd/nor子目录下的norflash等等,include文件夹是公共的头文件目录,init文件夹中就有main.c和version.c这两个文件,lib文件夹下第二阶段的初始化代码和vivi常用命令的实现,net文件夹是一些网络文件,scripts文件夹是一些脚本文件,usb文件夹是usb的驱动代码,关于vivi源码分析,我们这里还有一篇文章,就是天祥电子S3C2440开发平台光盘→资料盘→TX-2440A盘20111012更新→嵌入式学习资料压缩包→bootloader文件夹下的vivi-bootloader.pdf即vivi-bootloader的实现,
这篇文章把源码分析的非常详细,那我就不领大家分析了,大家可以参考这些资料自己去学习vivi的源码,理解它的启动过程