自己写bootloader1 - start.S,基于s3c2440
2016-09-04 16:47
267 查看
bootloader的目的是启动内核。主要做两方面的工作:把内核从nand读入sdram,跳转执行。 bootloader分成两步走:第一是硬件相关的初始化,然后跳转到main中执行。 首先是硬件相关初始化:关看门狗,设置时钟,初始化SDRAM,代码重定位,跳转到main中执行。 start.S里面的代码(start.S不能是start.s) #define S3C2440_MPLL_200MHZ ((0x5c<<12)|(0x01<<4)|(0x02)) #define S3C2440_MPLL_200MHZ ((0x5c<<12)|(0x01<<4)|(0x02)) #define MEM_CTL_BASE 0x48000000 text .global _start _start: /*1关看门狗*/ ldr r0, =0x53000000 mov r1, #0 str r1, [r0] /* 2: 设置时钟*/ ldr r0, =0x4c000014 mov r1, #0x03; str r1, [r0] mrc p15, 0, r1, c1, c0, 0 orr r1, r1, #0xc0000000 mcr p15, 0, r1, c1, c0, 0 ldr r0, =0x4c000004 ldr r1, =S3C2440_MPLL_200MHZ str r1, [r0] /* 3: 初始化sdram*/ ldr r0, =MEM_CTL_BASE adr r1, sdram_config /*得到当前的地址,不是链接地址*/ add r3, r0, #(13*4) 1: ldr r2, [r1], #4 str r2, [r0], #4 cmp r0, r3 bne 1b /* 4: 重定位:把bootloader 的代码从flash到sdram中*/ ldr sp, =0x34000000 bl nand_init mov r0, #0 ldr r1, =_start ldr r2, =__bss_start sub r2, r2, r1 bl copy_to_sdram bl clean_bss /* 5: 调用main*/ ldr lr, =halt ldr pc, =main halt: b halt sdram_config: .long 0x22011110 //BWSCON .long 0x00000700 //BANKCON0 .long 0x00000700 //BANKCON1 .long 0x00000700 //BANKCON2 .long 0x00000700 //BANKCON3 .long 0x00000700 //BANKCON4 .long 0x00000700 //BANKCON5 .long 0x00018005 //BANKCON6 .long 0x00018005 //BANKCON7 .long 0x008C04F4 // REFRESH .long 0x000000B1 //BANKSIZE .long 0x00000030 //MRSRB6 .long 0x00000030 //MRSRB7
相关文章推荐
- 自己写bootloader1 - start.S,基于s3c2440
- 自己写bootloader2 -跳转执行,基于s3c2440
- [Funkunux] 自己写MMU实验 基于S3C2440
- u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- 自己写bootloader(1)——start.S
- 菜鸟要飞向ARM城堡——MDK中对基于S3C2440工程的配置
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- 基于S3C2440——SD/MMC
- 自己写bootloader笔记2---start.S分析
- ADS 开发基于 2440 bootloader
- 自己写bootloader2 -跳转执行,基于s3c2440
- 自己写bootloader2 -init.c,基于s3c2440
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- 自己写bootloader2 -init.c,基于s3c2440
- 基于 mini2440 电阻式触摸屏(二):S3C2440 电阻式触摸屏接口、内部ADC结构
- u-boot移植总结(三)(转)S3C2440对Nand Flash操作和电路原理(基于K9F2G08U0A)
- 自己写bootloader笔记2---start.S分析
- 基于Ti的SDK u-boot添加自己的板子支持(2)