• 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  //设置函数栈,执行最高内存,设置要再main函数之前,避开片内4k内存。
    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     
    
  • 相关阅读:
    Excel宏开发之合并单元格
    excel破解工作簿与工作表保护
    jquery高级编程学习
    Git 和 SVN 存储方式的差异对比
    SSH 连接时间超时
    linux 使用 Python 画图工具matplotlib 提示display 错误
    centos安装字体
    linux编译安装中configure、make和make install各自的作用
    npm run build
    centos ssh 免密码登录
  • 原文地址:https://www.cnblogs.com/Hello-words/p/5834603.html
Copyright © 2020-2023  润新知