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
。。。
在使用的时候