一.Bootloader
理论上,uClinux引导时并非一定需要一个独立于Kernel Image的Bootloader Image。然而,将Bootloader与Kernel分开设计能够使软件架构更加清晰,也有助于灵活地支持多种引导方式,实现一些有用的辅助功能。Bootloader的主要任务可以概括如下:
1.硬件初始化和系统引导;
2.加载uClinux Kernel Image (如果需要);
3.设置需要传递给Kernel的启动参数(如果需要);
4.调用uClinux Kernel;
5.辅助功能:从主机下载新的Image;
6.辅助功能:烧写Flash Memory;
7.辅助功能:支持功能5和6所需的人机界面,如串行终端上的命令行接口。
对于常见的几类处理器内核,现在一般都找得到现成的Bootloader可用,不过需要针对具体的Board做些移植。在实现上述功能的前提下,也可以选择自行开发。由于Bootloader Image在物理上独立于Kernel Image,因此不一定选择GNU作为开发工具。对于以ARM7TDMI为内核的S3C44B0X处理器,完全可以使用ADS来开发Bootloader。
1.硬件初始化和系统引导完整的Bootloader引导流程可描述如下:
硬件初始化阶段一 -> 复制二级Exception Vector Table -> 初始化各种处理器模式 -> 复制RO和RW,清零ZI -> (跳转到C代码入口函数) -> 初始化Exception/Interrupt Handler Entry Table -> 初始化Device Drivers -> 硬件初始化阶段二 -> 建立人机界面
下面对上述各步骤逐一加以说明。
(由于排版原因,本文不完整,请看原文)
阅读(1171) | 评论(0) | 转发(0) |