医疗电子技术网|技术阅读
登录|注册

您现在的位置是:医疗电子技术网 > 技术阅读 > 最最简单的Bootloader怎么写?

最最简单的Bootloader怎么写?

Tips:

内核从板载启动的 bootargs--内核启动参数, bootargs 是 bootloader 传递给内核的启动字符串。

BootLoader的目标是启动内核, 大多数 boot loader 都包含两种不同的操作模式:"启动加载"模式和"下载"模式 。 


在嵌入式操作系统中,BootLoader是在操作系统内核运行之前运行。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像BIOS那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由BootLoader来完成。在一个基于ARM7TDMI core的嵌入式系统中,系统在上电或复位时通常都从地址0x00000000处开始执行,而在这个地址处安排的通常就是系统的BootLoader程序。常见的BootLoader程序如下:


最简单的bootloader的编写步骤:

1). 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH

       1.关看门狗:2440的开发板一上电看门狗是打开的,不关闭的话每三秒就会复位一次开发板。看门狗的地址为:0x53000000

      2.设置时钟:CLKDVIN寄存器的地址为0x4c000014,必须设置为异步模式,这是datasheet所规定的。  


注:

判断从nand启动还是nor启动就往内存中写数据即可,之后看是否能从内存相应地址读出对应的值。


Nand_Flash的时序(s3c2440中)nand-flash存在先天缺陷:会位反转为此引入OOB out of bank。


Nand_Flash芯片手册中


相关时间参数的获取:



2). 如果bootloader比较大,要把它重定位到SDRAM

3). 把内核从NAND FLASH读到SDRAM

4). 设置"要传给内核的参数"

        在u-boot中查看分区,使用命令 mtd


5). 跳转执行内核

在简单的BootLoader编写的过程中出现过以下错误,错误之处是.lds链接脚本文件出错,要注意相关格式。

修改完最后的这个错误,最终一个最简BootLoader及完成了。

本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!

广告

关于立创商城

立创商城(WWW.SZLCSC.COM)是一站式电子元器件线上采购自营商城,拥有10000多自营仓库,现货库存超190000种。保证100%原装正品,并已实现4小时闪电发货!集团电子全产业链自营服务涵盖在线EDA(LCEDA)、PCB打样、元器件商城、钢网制造、SMT贴片、电子设计教育及方案等。