ARM Linux bootloader笔记

Posted Hello$word

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ARM Linux bootloader笔记相关的知识,希望对你有一定的参考价值。

 1     .text   //指定了后续编译出来的内容放在代码段【可执行】
 2     .global  //告诉编译器后续跟的是一个全局可见的名字【可能是变量,也可以是函数名】
 3     _start   /*函数的其实地址,也是编译、链接够程序的起始地址。由于程序是通过加载器来加载的,
          必须找到_start名字的函数,因此_start必须定义成全局的,以便存在于编译后的全局符合表中,
          供其他程序【如加载器】寻找到。*/
 4     _start:
 5     /*1.关看门狗*/
 6     ldr r0,=53000000
 7     /*2.设置时钟*/
 8     
 9     /*3.初始化SDRAM*/
10     ldr r0,=MEM_CTL_BASE
11     adr r1,sdram_config //得到当前地址
12     ldr r2,[r1],#4
13     add r3,r0,#(13*4)
14 
15     1:    
16     ldr r2,[r1],#4
17     ltr r2,[r0],#4
18     cmp r0,r3
19     bne  1b  //不相等,调回前面的1标号
20     /*4.重定位*/ 
21     ldr sp,=34000000  //设置函数栈,执行最高内存
22     bl copy_code_to_sdram
23     
24     /*5.执行main函数*/ 
25     ldr lr,=halt //main函数返回地址
26     ldr pc,=main
27     halt:
28         b halt
29     sdram_config:
30     .long 0x22011110   //BWSCON
31     .long 0x00000700   //BANKCON0
32     .long 0x00000700   //BANKCON1
33     .long 0x00000700   //BANKCON2
34     .long 0x00000700   //BANKCON3
35     .long 0x00000700   //BANKCON4
36     .long 0x00000700   //BANKCON5
37     .long 0x00018005   //BANKCON6
38     .long 0x00018005   //BANKCON7
39     .long 0x008C04F4   //REFRESH
40     .long 0x000000B1   //BANKSIZE
41     .long 0x00000030   //MRSRB6
42     .long 0x00000030   //MRSRB7
43 
44     

以上是关于ARM Linux bootloader笔记的主要内容,如果未能解决你的问题,请参考以下文章

Linux学习笔记:00?BootLoader能够做什么

2014025658《嵌入式系统程序设计》第四周学习总结

2014025681《嵌入式系统程序设计》第四周学习总结

linux arm 运行 shell .sh 脚本文件报错:/bin/bash^M: bad interpreter: No such file or directory(dos2unix )(代码片

第一课 不要用老方法学习单片机和ARM

ARM处理器启动流程