EDN China > 设计实例 > 嵌入式系统 > 开发工具 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

关于三星S3C44B0X目标板的uClinux Bootloader

来源:电子产品世界/作者:盛磊?? 2005年09月12日 ?? 收藏0

?????? uClinux是为控制领域设计的嵌入式Linux操作系统,它沿袭了主流Linux的大部分特性,并进行了一定幅度的裁减。其设计主要针对没有内存管理单元(MMU)的微处理器,例如基于ARM7TDMI内核的S3C44B0X。

?????? 嵌入式Linux系统通常由三部份组成:Bootloader、Kernel和File System。其中Bootloader是在系统启动之后、Kernel运行之前所执行的第一段代码,其任务是为调用Kernel准备必要的软硬件环境。由此可见,Bootloader是非常依赖于硬件和操作系统的。所谓依赖于硬件,是指Bootloader的实现与处理器体系架构和板级硬件资源密切相关;所谓依赖于操作系统,是指不同操作系统的内核对调用方式和运行环境有不同的要求。

?????? 理论上,uClinux在引导时并非一定需要一个独立于Kernel Image的Bootloader Im

age。然而将Bootloader与Kernel分开设计能够使软件架构更加清晰,也有助于灵活地支持多种引导方式,实现必要的辅助功能。uClinux Bootloader的主要任务可概括如下:

?????? ●?引导和初始化
?????? ●?加载uClinux Kernel
?????? ●?设置内核启动参数
?????? ●?调用uClinux Kernel
?????? ●?辅助功能:文件下载、Flash烧写、人机界面等

?????? 对于常见架构的处理器,一般都能找到现成的Bootloader,但其结构往往较为复杂,且仍需要针对具体的目标板进行移植。当然,也可以选择自行开发Bootloader。由于Bootloader Image在物理上独立于Kernel Image,因此不一定跟随Linux选用GNU作为开发工具。对于ARM处理器,完全可以使用ADS或RVDS等集成环境来开发Bootloader。

?????? 1.引导和初始化

?????? 1.1?硬件初始化阶段一
?????? S3C44B0X在上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的第一条指令:b ResetHandler,跳转到标号ResetHandler处进行第一阶段的硬件初始化,主要内容为:关WDT,关中断,配置PLL和时钟,初始化Memory Controller。这里比较重要的是配置PLL的输出频率,S3C44B0X最高能够支持66MHz;如果目标板上使用DRAM/SDRAM,应当据此计算刷新频率等相关参数。

?????? 1.2?建立异常向量表
??????
ARM7TDMI内核规定:包括Reset Exception Vector在内的异常向量表的基地址是0x0,所以存放Bootloader的Flash基地址也必须是0x0;而S3C44B0X处理器又不支持Remap,这意味着一旦发生中断,程序就要跳转到Flash中的异常向量表(中断属于异常的一种)。uClinux会在RAM里建立自己的二级异常向量表(基地址缺省为0x0C000000);所以编写Bootloader时,0x0处的一级异常向量表只需简单地包含向二级异常向量表的跳转:


上一页1234下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

目标板? uClinux? Bootloader?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈