首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ARM bootloader程序的理解(2)

ARM bootloader程序的理解(2)

三、TCM的配置
      TCM和cache是有区别的,虽然都是为了加快速度,但是TCM必须给它指定地址,TCM和cache的用途也不样,TCM保存常用到的数据如中断向量表和realtime数据,而cache只是为了加快处理器和外设之间的数据处理。
      
      ldr r0, =0x0;
      mrc p15, 0, r1, c9, c1, 1;读coprocessor instruction tcm region register.
      orr r0, r0, r1;
      mov r1, #1
      orr r1, r1, r0;instruction tcm bit_o 置1,enable insturction tcm.
      mcr p15,0,r1,c9,c1,1;写入
     其它的cache配置也类似,主要读懂ARM document.
四、建立一个程序运行文境:
      image(bin文件)包括俩部分:RO and RW,RO部分一般我们在加载前后的位置都不用变化,但是RW必须在加载后把他放到RAM中执行,所以RW部分我们把它映射到RAM地址中。
      IMPORT |Image$$RO$$Base| ;image RO 开始地址
      IMPORT |Image$$RO$$Limit|
      IMPORT |Image$$RO$$Length|
      IMPORT |Image$$RW$$Base|
      IMPORT |Image$$RW$$Limit|
      IMPORT |Image$$RW$$Length|
      IMPORT |Image$$ZI$$Base|
      IMPORT |Image$$ZI$$Limit|
      IMPORT |Image$$ZI$$Length|
      ldr r0,=|Image$$RO$$Limit|
      ldr r1,=|Image$$RW$$Base|
      ldr r2,=|Image$$RW$$Limit|

3
     cmp r1,r2
     bge %B3
     ldrcc r3,[r0],#4;从RO段的结束地址+1load rw段数据
     strcc r3,[r1],#4;重新写入到rw段
     b %B4
4
     ldr r0,=|Image$$ZI$$Base|;处理ZI段数据
     ldr r1,=|Image$$ZI$$Length|
     add r1, r1, r0
     ldr r1, =0X2000
     ldr r2,=0
5
     cmp r0, r1
     bge %B6
     strcc r2,[r0],#4;初始化ZI段数据为0
     b %B5
6
五、对内存进行测试:
      由于系统中有各种各样的内存,可以对内存进行简单测试。
六、UART的配置:
      UART在嵌入式系统中很重要,虽然它很简单,但是在早期开发中,UART是必须的设备之一。UART作为下一篇中将进一步详细讨论。
继承事业,薪火相传
返回列表