bootloader的移植

jz2440开发板

在介绍bootloader里边的内容的时候,需要知道的是:

bootloader的引入的目的就是启动linux内核,一个简单的bootloader编写需要以下的步骤:

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

②把内核从NAND FLASH独到SDRAM

③保存要传给内核的参数到指定的位置

④跳转执行内核


有的时候,会遇到bootloader很大的情况,那么就会有一步在①和②之间加一个重新定位在SDRAM中地址。


新建start.S文件,

其中“.text”表示下边是代码段

“.global _start”表示_start是全局标号

“ldr r0, =0x53000000”这句中ldr带=的指令是伪汇编指令,最终的结果就是r0=0x53000000

str r1,[r0]表示将r1的值放到r0所代表的地址上去


在汇编中可以有#define,定义了复杂的define的变量后,比如

#define S3C2440_MPLL_200MHZ     ((0x5c<<12)|(0x01<<4)|(0x02))

在使用S3C2440_MPLL_200MHZ的时候要用ldr这条伪汇编

ldr r1, =S3C2440_MPLL_200MHZ

sdram_config:

相当于定义了一个数组,格式就是

.long 0x22011110 //BWSCON
.long 0x00000700 //BANKCON0

。。。

在使用的时候


版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/otaku-lip/p/4765010.html