|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
搞了S3C44BO这个片子有段时间了,但是对于Bootloader这个还只是停留在一个概念的层次上,因为玩的那个箱子里面的Bootloader时已经编写好了的,但是没自己编写过适合自己要用的Bootloader,先写下觉得理解Bootloader要用到的概念,然后再根据自己的程序编写下Bootloader。
1:Bootloader的概念
Bootloader时系统加电后运行的第一段软件代码,通过这段代码,可以初始化硬件设备,建立内存空间的映射图(S3C44B0没有映射功能,暂时不知道时幸运还时不幸运),为系统最终调用操作系统内核或用户应用程序(就时你用C编写好的你要实线功能的程序)准备好的环境
2:Bootloader的移植和修改
每种不同的CPU都有不同的Bootloader,除了以来与CPU的系统结构外,Bootloader实际也以来于具体的硬件配置,比如硬件地址的分配,RAM芯片的类型以及其他的外设的类型等等。(即使两个半子的CPU相同,但是其他硬件不同,他们的Bootloader也不一样)
3:Bootloader的安装
系统加电或者复位后,所有的CPU通常都从CPU制造商预先安排的地址商取指令(S3C44BO复位时都从地址0x00000000取他的第一条指令)嵌入式系统通常都有某种类型的固态存储设备(比如FLASH,ROM,EEPROM)被安排在这个起始地址上。
4:用来控制Bootloader的设备或机制
串口通讯,如果速度不够,可以用网络或USB通讯,那么Bootloader中就需要编写各自的驱动
5:Bootloader的启动过程
Bootloader分为stage1和stage2
stage1:设备初始化代码等,用汇编编写,短小
stage2:c编写,可读性和可移植性好
Bootloader的stage1包括
(1)硬件设备初始化
(2)为加载Bootloader的stage2准备RAM空间
(3)拷贝Bootloader的stage2到RAM空间
(4)设置好堆栈
(5)跳转到stage2的C入口点
Bootloader的stage2包括
(1)初始化本阶段所要使用的硬件设备
(2)调用应用程序或启动内核(暂时我用启动程序)
stage1的功能:
Bootloader的入口---设置中断向量表---切换到超级模式,并禁止中断---
设置中断模式---关闭所有中断---关闭看门狗---使能回写到Buffer和Cache
---设置非Cache区域---设置端口---关闭数据线0-15位---设置外部中断的
触发方式---设置CPU的运行频率,系统各部件的总线宽度已经各部件的时钟---
将Bootloader拷贝到RAM---跳至C代码程序
稍后具体的函数代码
更多ARM内容访问个人博客 http://blog.sina.com.cn/u/1217992037
|
|