bootloader启动代码分析

bootloader启动代码分析

ID:14267205

大小:254.00 KB

页数:14页

时间:2018-07-27

bootloader启动代码分析_第1页
bootloader启动代码分析_第2页
bootloader启动代码分析_第3页
bootloader启动代码分析_第4页
bootloader启动代码分析_第5页
资源描述:

《bootloader启动代码分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、bootloader启动代码分析1,bootloader(第一部分)主要完成以下工作:1,设置CPU工作模式;2,关闭中断;3,关闭Cache和Writebuffer;4,初始化SDRAM,配置存储设备;5,复制FLASH中的代码和数据到SDRAM中;6,内存重映射,配置存储设备;7,把RM和ZI从LOADADDR复制到executeADDR.8,设置栈空间指针,跳转到C语言函数入口(启动代码第二部分)。2,具体代码分析1,设置CPU工作模式MRSr0,cpsr#读取CPSR状态寄存器的值CPSR状态寄存器结构:NZCVIFTModeBICr0,r0,#M

2、ASK_MODE&定义值为0x0000003F,把MODE清零;ORRr0,r0,#MODE_SVC32&宏定义值为0x00000013,把MODE设置为SVC模式;ORRr0,r0,#I_BIT&宏定义值为0x80,关IRQ;ORRr0,r0,#F_BIT&宏定义值为0x40,关FIQ;MSRcpsr_c,r0&回写cpsr状态寄存器设置完CPSR后,状态寄存器中的值:NZCV11T100112,关闭中断LDRr2,=ARM7_INTMASK&ARM7_INTMASK宏定义值为ASIC_BASE+0x4008,读取interruptcontroller寄

3、存器MVNr1,#0&FFFFFFFFSTRr1,[r2]&回写interruptcontroller寄存器,之后寄存器的值为全1,既关闭所有的中断源;LDRr2,=ARM7_INTPEND&ARM7_INTPEND宏定义值为ASIC_BASE+0x4004,取interruptpend寄存器.MVNr1,#0&FFFFFFFFSTRr1,[r2]&回写ARM7_INTPEND寄存器,之后寄存器的值为全1,既关闭所有的中断标志位;3,关闭Cache和WritebufferASIC_BASE宏定义值为0x03ff0000LDRr0,=ARM7_SYSCFG&

4、宏定义值为ASIC_BASE+0x0000LDRr1,=0x87ffffA00X87ffffA0的二进制为10000111111111111111111110100000SEMustbesettozero.CEWhensetto'1',cacheoperationsareenabled.设置为0,将CACHE禁用。WEWhensetto"1",writebufferoperationsareenabled.设置为0,将writebuffer禁用。CMThis2-bitvaluedetermineshowinternalmemoryistobedevided

5、intocacheandSRAM.00=4-KbyteSRAM,4Kbytecache01=0-KbyteSRAM,8Kbytecache10=8-KbyteSRAM,0Kbytecache设置为10,将CACHE大小设置为0。InternalSRAM基地址为3FE(1111111110)寄存器的基地址为3FF《16为变成3FF0000,所以ASIC_BASE宏定义值为0x03ff0000。STRr1,[r0];将设置写入SYSCFG寄存器4,初始化SDRAM,配置存储设备IMPORT

6、Image$$RO$$Base

7、IMPORT

8、Image$$RO$$L

9、imit

10、IMPORT

11、Image$$RW$$Base

12、IMPORT

13、Image$$RW$$Limit

14、IMPORT

15、Image$$ZI$$Base

16、IMPORT

17、Image$$ZI$$Limit

18、Image$$RO$$Base为RO段基地址,Image$$RO$$Limit为RO段结束地址;Image$$RW$$Base为RW段基地址,Image$$RW$$Limit为RW段结束地址;Image$$ZI$$Base为ZI段基地址,Image$$ZI$$Limit为ZI段结束地址;导入这些内置变量,这些变量由编译器产生。初始化数据总线寄存器LDRr1,=r

19、EXTDBWTH;EXTDBWTH宏定义值为0x00003001。即[1:0]DatabuswidthforROM/SRAM/FLASHbank0(DSR0)01=Byte(8bits)(FLASH数据总线宽度为一个字节)[13:12]DatabuswidthforDRAMbank0(DSD0)11=Word(32bits)(DRAM数据总线宽度为4个字节)初始化FLASHLDRr2,=rROMCON0;ROMCON0宏定义值为0x02000060(00000010000000000000000001100000),即FLASH基地址为0,结束地址为200

20、000(20〈〈16)(0-2M)LDRr3,=rROMCON1;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。