Bootloader代码分析报告徐凯2007-8-3Bootloader代码分析报告..............................................................................................................11.启动代码分析..................................................................................................................11.1.vector.s代码分析..................................................................................................11.1.1.宏定义..............................................................................................................51.1.3.判断是否是thumb指令...................................................................................61.1.4.定义新程序、引入新符号...............................................................................61.1.5.定义新程序、引入新符号...............................................................................71.1.6.定义系统异常向量表.......................................................................................71.1.7.程序跳转宏定义...............................................................................................71.1.8.异常处理程序定义...........................................................................................71.1.9.声明C主函数程序入口.................................................................................101.1.10.定义vector.s中需要用到的连接器变量.................................................101.1.11.定义从FLASH启动程序的函数...................................................................111.2.sysinit.s代码分析..............................................................................................111.2.1.引入S3C4510相关系统配置寄存器的地址.................................................181.2.2.定义用于配置ROM和RAM的宏......................................................................181.2.3.定义用于配置SYSCFG的宏...........................................................................181.2.4.定义用于初始化内存的函数InitMemory....................................................181.2.5.定义用于初始化内存的函数InitMemory....................................................201.2.6.定义内存重设置函数ResetMemSet..............................................................211.2.7.初始化21种中断源响应函数InitInterrupt.............................................211.2.8.初始化18个外部I/O端口函数InitPort...................................................211.2.9.初始化2个计时器的函数InitTimer..........................................................221.2.10.初始化2个串口函数InitUart..................................................................221.2.11.初始化栈函数InitStack............................................................................231.2.12.系统初始化函数InitSystem241.启动代码分析1.1.vector.s代码分析由于连接器参数中有-firstvector.o,所以先从这个文件开始分析。首先,列出源代码:1ModeMaskEQU0x1F2SVC32ModeEQU0x133IRQ32ModeEQU0x124FIQ32ModeEQU0x115User32ModeEQU0x106Abort32ModeEQU0x177Undef32ModeEQU0x1B8IRQ_BITEQU0x809FIQ_BITEQU0x4010;RomBaseAddrEQU011RamBaseAddrEQU&10012;RamEndAddrEQU&20013GBLSMainEntry14MainEntrySETS"main"15IMPORT$MainEntry16;**********************************************************17;シ・鯡ヌキケモテtasm.exeスミア默・18GBLLTHUMBCODE19[{CONFIG}=1620THUMBCODESETL{TRUE}21CODE3222|23THUMBCODESETL{FALSE}24]25[THUMBCODE26CODE32;forstart-upcodefor...