bootloader代码分析报告.doc_第1页
bootloader代码分析报告.doc_第2页
bootloader代码分析报告.doc_第3页
bootloader代码分析报告.doc_第4页
bootloader代码分析报告.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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.定义用于初始化内存的函数InitMemory181.2.5.定义用于初始化内存的函数InitMemory201.2.6.定义内存重设置函数ResetMemSet211.2.7.初始化21种中断源响应函数InitInterrupt211.2.8.初始化18个外部I/O端口函数InitPort211.2.9.初始化2个计时器的函数InitTimer221.2.10.初始化2个串口函数InitUart221.2.11.初始化栈函数InitStack231.2.12.系统初始化函数InitSystem241. 启动代码分析1.1. vector.s代码分析由于连接器参数中有-first vector.o,所以先从这个文件开始分析。首先,列出源代码:1 ModeMask EQU0x1F2 SVC32ModeEQU0x133 IRQ32ModeEQU0x124 FIQ32ModeEQU0x115 User32ModeEQU0x106 Abort32ModeEQU0x177 Undef32ModeEQU0x1B8 IRQ_BITEQU0x809 FIQ_BITEQU0x4010 ;RomBaseAddrEQU011 RamBaseAddrEQU&10012 ;RamEndAddr EQU&20013 GBLSMainEntry14 MainEntrySETSmain15 IMPORT$MainEntry16 ;*17 ;鯡tasm.exe默18 GBLL THUMBCODE19 CONFIG = 1620 THUMBCODE SETLTRUE21 CODE3222 | 23 THUMBCODE SETLFALSE24 2526 THUMBCODE27 CODE32 ;for start-up code for Thumb mode28 2930 ;*31 AREASelfBoot,CODE,READONLY3233 IMPORTUDF_INS_VECTOR34 IMPORTSWI_SVC_VECTOR35 IMPORTINS_ABT_VECTOR36 IMPORTDAT_ABT_VECTOR37 IMPORTIRQ_SVC_VECTOR38 IMPORTFIQ_SVC_VECTOR3940 ENTRY41 IF :DEF: |ads$version|42 ELSE43 EXPORT_main44 _main45 ENDIF46 ResetEntry47 bSYS_RST_HANDLER48 bUDF_INS_HANDLER49 bSWI_SVC_HANDLER50 bINS_ABT_HANDLER51 bDAT_ABT_HANDLER52 b.53 bIRQ_SVC_HANDLER54 bFIQ_SVC_HANDLER5556 ;*57 MACRO58 $LabelHANDLER$Vector59 $Label60 sublr, lr, #461 stmfdsp!, r0-r3, lr62 ldrr0, =$Vector63 ldrpc, r064 ldmfdsp!, r0-r3, pc65 MEND6667 UDF_INS_HANDLER68 stmfdsp!, r0-r3, lr69 ldrr0, =UDF_INS_VECTOR70 movlr, pc71 ldrpc, r072 ldmfdsp!, r0-r3, pc73 SWI_SVC_HANDLER74 stmfdsp!, r0-r3, lr75 ldrr0, =SWI_SVC_VECTOR76 movlr, pc77 ldrpc, r078 ldmfdsp!, r0-r3, pc79 INS_ABT_HANDLER80 sublr, lr, #481 stmfdsp!, r0-r3, lr82 ldrr0, =INS_ABT_VECTOR83 movlr, pc84 ldrpc, r085 ldmfdsp!, r0-r3, pc86 DAT_ABT_HANDLER87 sublr, lr, #488 stmfdsp!, r0-r3, lr89 ldrr0, =DAT_ABT_VECTOR90 movlr, pc91 ldrpc, r092 ldmfdsp!, r0-r3, pc93 IRQ_SVC_HANDLER94 sublr, lr, #495 stmfdsp!, r0-r12, lr96 mrsr0, spsr97 stmfdsp!, r098 ldrr0, =IRQ_SVC_VECTOR99 ldrpc, r0100 FIQ_SVC_HANDLER101 sublr, lr, #4102 stmfdsp!, r0-r12, lr103 mrsr0, spsr104 stmfdsp!, r0105 ldrr0, =IRQ_SVC_VECTOR106 ldrpc, r0107108 ;*109 SYS_RST_HANDLER110 mrsr0, cpsr;enter svc mode and disable irq,fiq111 bicr0, r0, #ModeMask112 orrr0, r0, #(SVC32Mode :OR: IRQ_BIT :OR: FIQ_BIT)113 msrcpsr_c, r0114115 IMPORTInitSystem116 blInitSystem117118 adrr0, ResetEntry119 movr3, #(RamBaseAddr16)120 ldrr1, BaseOfROM121 ldrr2, TopOfROM122 addr1, r1, r3123 addr2, r2, r3124 0125 ldmiar0!, r4-r11126 stmiar1!, r4-r11127 cmpr1, r2128 bcc%B0129130 subr1, r1, r2131 subr0, r0, r1132 ldrr1, BaseOfBSS133 ldrr2, BaseOfZero134 addr1, r1, r3135 addr2, r2, r3136 1137 cmpr1,r2138 ldrccr4, r0, #4139 strccr4, r1, #4140 bcc%B1141142 movr0,#0143 ldrr2,EndOfBSS144 addr2, r2, r3145 3146 cmpr1,r2147 strccr0, r1, #4148 bcc%B3149150 IMPORTRemapMemory151152 adrr0, ResetEntry153 ldrr1, =RemapMemory154 ldrr2, BaseOfROM155 subr2, r1, r2156 addr0, r0, r2157 addr1, r2, r3158 movr2,#32159 0160 ldrr3, r0, #4161 strr3, r1, #4162 subsr2, r2,#1163 bne%B0164165 ldrlr,GotoMain 166 bRemapMemory 167168 GotoMainDCD$MainEntry169170 ;*171 IMPORT|Image$RO$Base|; ROM code start172 IMPORT|Image$RO$Limit|; RAM data starts after ROM program173 IMPORT|Image$RW$Base|; Pre-initialised variables174 IMPORT|Image$ZI$Base|; uninitialised variables175 IMPORT|Image$ZI$Limit|; End of variable RAM space176177 BaseOfROMDCD|Image$RO$Base|178 TopOfROMDCD|Image$RO$Limit|179 BaseOfBSSDCD|Image$RW$Base|180 BaseOfZeroDCD|Image$ZI$Base|181 EndOfBSSDCD|Image$ZI$Limit|182183 ;*184 TIP_SIZEEQU256185186 IMPORTResetMemSet187 EXPORTtrans_to_boot188 trans_to_boot189 movlr, r1; a2 = r1190 ldrr1, =ResetMemSet191 ldrr2, BaseOfROM192 subr2, r1, r2193 addr0, r0, r2; a1 = r0194 movr2,#TIP_SIZE195 0196 ldrr3, r1, #4197 strr3, r0, #4198 subsr2, r2,#1199 bne%B0200201 subr0, r0, #TIP_SIZE*4202 movpc,r0203204 ;*205206 END1.1.1. 宏定义1ModeMask EQU0x1F2SVC32ModeEQU0x133IRQ32ModeEQU0x124FIQ32ModeEQU0x115User32ModeEQU0x106Abort32ModeEQU0x177Undef32ModeEQU0x1B8IRQ_BITEQU0x809FIQ_BITEQU0x4010;RomBaseAddrEQU011RamBaseAddrEQU&10012;RamEndAddr EQU&200行1定义了CPSR中表示模式位的5位。行2-7定义了6种处理器模式(除system模式)对应的CPSR位。行8-7定义了CPSR中FIQ与IRQ置位。行10、12为注释,行11定义了一个宏,&的意义等于DCD伪指令,其分配一个字的内存,并用100初始化该字的内存,并使用RomBaseAddr标志这段内存的实际地址。1.1.2. 宏定义13GBLSMainEntry14MainEntrySETSmain15IMPORT$MainEntry行13-15声明了一个字符串变量MainEntry,并将其设置为”main”,并引入外部符号”main”。1.1.3. 判断是否是thumb指令18GBLL THUMBCODE19 CONFIG = 1620THUMBCODE SETLTRUE21CODE3222| 23THUMBCODE SETLFALSE242526 THUMBCODE27CODE32 ;for start-up code for Thumb mode28 行18声明了逻辑变量THUMBCODE行19-24执行了一个IF ELSE ENDIF指令,CONFIG变量是1中第88页说明的汇编器域定义变量,如果其为32则说明本文件采用ARM汇编器,相应地把THUMBCODE设置为FALSE,若为16则是使用thumb汇编器,相应地把THUMBCODE设置为TRUE。行26-28,强制执行32位的ARM指令,感觉很奇怪,应该是用CODE16命令才对。1.1.4. 定义新程序、引入新符号31AREASelfBoot,CODE,READONLY3233IMPORTUDF_INS_VECTOR34IMPORTSWI_SVC_VECTOR35IMPORTINS_ABT_VECTOR36IMPORTDAT_ABT_VECTOR37IMPORTIRQ_SVC_VECTOR38IMPORTFIQ_SVC_VECTOR行31定义了一个新的程序段SelfBoot。行33-38引入了一系列的符号,这些符号在sysinit.s中定义并导出。1.1.5. 定义新程序、引入新符号40ENTRY41IF :DEF: |ads$version|42ELSE43EXPORT_main44_main45ENDIF行40首先声明了程序的入口根据1中第89页的说明,行41-45判断程序是给ADS还是SDT执行的,如果是如果是SDT,则导出_main符号,并开始定义_main函数的开始。1.1.6. 定义系统异常向量表46ResetEntry47bSYS_RST_HANDLER48bUDF_INS_HANDLER49bSWI_SVC_HANDLER50bINS_ABT_HANDLER51bDAT_ABT_HANDLER52b.53bIRQ_SVC_HANDLER54bFIQ_SVC_HANDLER行46-54定义了系统异常处理向量表,并在vector.o首次执行时首先执行行47的代码。1.1.7. 程序跳转宏定义57MACRO58$LabelHANDLER$Vector59$Label60sublr, lr, #461stmfdsp!, r0-r3, lr62ldrr0, =$Vector63ldrpc, r064ldmfdsp!, r0-r3, pc65MEND行57-65定义了一个有1个参数的宏HANDLER,该宏实现程序跳转,跳转到$Vector所指向内存所保存的内存地址的值,执行完该函数后,恢复现场,并返回原来的状态。1.1.8. 异常处理程序定义67UDF_INS_HANDLER68stmfdsp!, r0-r3, lr69ldrr0, =UDF_INS_VECTOR70movlr, pc71ldrpc, r072ldmfdsp!, r0-r3, pc73SWI_SVC_HANDLER74stmfdsp!, r0-r3, lr75ldrr0, =SWI_SVC_VECTOR76movlr, pc77ldrpc, r078ldmfdsp!, r0-r3, pc79INS_ABT_HANDLER80sublr, lr, #481stmfdsp!, r0-r3, lr82ldrr0, =INS_ABT_VECTOR83movlr, pc84ldrpc, r085ldmfdsp!, r0-r3, pc86DAT_ABT_HANDLER87sublr, lr, #488stmfdsp!, r0-r3, lr89ldrr0, =DAT_ABT_VECTOR90movlr, pc91ldrpc, r092ldmfdsp!, r0-r3, pc93IRQ_SVC_HANDLER94sublr, lr, #495stmfdsp!, r0-r12, lr96mrsr0, spsr97stmfdsp!, r098ldrr0, =IRQ_SVC_VECTOR99ldrpc, r0100FIQ_SVC_HANDLER101sublr, lr, #4102stmfdsp!, r0-r12, lr103mrsr0, spsr104stmfdsp!, r0105ldrr0, =IRQ_SVC_VECTOR106ldrpc, r0107108;*109SYS_RST_HANDLER110mrsr0, cpsr;enter svc mode and disable irq,fiq111bicr0, r0, #ModeMask112orrr0, r0, #(SVC32Mode :OR: IRQ_BIT :OR: FIQ_BIT)113msrcpsr_c, r0114115IMPORTInitSystem116blInitSystem117118adrr0, ResetEntry119movr3, #(RamBaseAddr16)120ldrr1, BaseOfROM121ldrr2, TopOfROM122addr1, r1, r3123addr2, r2, r31240125ldmiar0!, r4-r11126stmiar1!, r4-r11127cmpr1, r2128bcc%B0129130subr1, r1, r2131subr0, r0, r1132ldrr1, BaseOfBSS133ldrr2, BaseOfZero134addr1, r1, r3135addr2, r2, r31361137cmpr1,r2138ldrccr4, r0, #4139strccr4, r1, #4140bcc%B1141142movr0,#0143ldrr2,EndOfBSS144addr2, r2, r31453146cmpr1,r2147strccr0, r1, #4148bcc%B3149150IMPORTRemapMemory151152adrr0, ResetEntry153ldrr1, =RemapMemory154ldrr2, BaseOfROM155subr2, r1, r2156addr0, r0, r2157addr1, r2, r3158movr2,#321590160ldrr3, r0, #4161strr3, r1, #4162subsr2, r2,#1163bne%B0164165ldrlr,GotoMain 166bRemapMemory 行67-166定义了7种模式异常的处理函数具体地:UDF_INS_HANDLER 执行UDF_INS_VECTOR内存所保存的指令后,返回到异常发生之前的状态。类似,SWI_SVC_HANDLER, INS_ABT_HANDLER, DAT_ABT_HANDLER, IRQ_SVC_HANDLER, FIQ_SVC_HANDLER也执行类似的操作,执行XX_XX_VECTOR内存所保存的指令,然后返回到异常发生之前的状态。SYS_RST_HANDLER异常处理程序与其它异常处理程序有很大不同,行110-113使得处理器进入SVC模式,并且禁止FIQ与IRQ。行115-116使得程序跳转到sysinit.s中定义的InitSystem函数中执行,并在执行结束后返回。InitSystem函数的作用是进行内存、堆栈、LED端口、串口、定时器以及中断的初始化工作,具体讲解请参见sysinit.s中的分析(1.2.12)。行118将异常向量表ResetEntry的地址保存入r0。行119-128将bootloader的RO段拷贝入内存。行130-140将bootloader的RW段拷贝入内存。行142-148将内存中的ZI段初始化为0。行150-163将RemapMemory函数拷贝入内存中。行165将返回地址进行设置。行166执行RemapMemory函数(在sysinit.s中定义),RemapMemory函数主要是设置ROMCON0、ROMCON1和DRAMCON0、DRAMCON1;并将IRQ_SERVICE函数的地址存入一个内存中的数组中。RemapMemory函数执行完后将跳入bios.c中定义的main函数。1.1.9. 声明C主函数程序入口168GotoMainDCD$MainEntry行168声明了GotoMain标号,其被定义为变量$MainEntry的值“main”1.1.10. 定义vector.s中需要用到的连接器变量根据文献2第56-57页中的说明,行170-181引入了由连接器预定义的变量值。170;*171IMPORT|Image$RO$Base|; ROM code start172IMPORT|Image$RO$Limit|; RAM data starts after ROM program173IMPORT|Image$RW$Base|; Pre-initialised variables174IMPORT|Image$ZI$Base|; uninitialised variables175IMPORT|Image$ZI$Limit|; End of variable RAM space176177BaseOfROMDCD|Image$RO$Base|178TopOfROMDCD|Image$RO$Limit|179BaseOfBSSDCD|Image$RW$Base|180BaseOfZeroDCD|Image$ZI$Base|181EndOfBSSDCD|Image$ZI$Limit|1.1.11. 定义从FLASH启动程序的函数184TIP_SIZEEQU256185186IMPORTResetMemSet187EXPORTtrans_to_boot188trans_to_boot189movlr, r1; a2 = r1190ldrr1, =ResetMemSet191ldrr2, BaseOfROM192subr2, r1, r2193addr0, r0, r2; a1 = r0194movr2,#TIP_SIZE1950196ldrr3, r1, #4197strr3, r0, #4198subsr2, r2,#1199bne%B0200201subr0, r0, #TIP_SIZE*4202movpc,r0行184-202定义了从FLASH固定地址BIOS_LOAD0x1000启动程序的函数,似乎是重新启动的程序。1.2. sysinit.s代码分析首先列出sysinit.s的源代码1 INCLUDEs3c4510.s23 RomBaseAddrEQU04 RomEndAddrEQU&205 RamBaseAddrEQU&1006 RamEndAddrEQU&20078 AREAtext, CODE, READONLY910 SFR_BASEEQU0x3ff;0x3ff000011 SRAM_BASEEQU0x3f8;0x3f800001213 ;EXPORTInitMemory14 InitMemory15 ldrr0, =SYSCFG16 ldrr1, =SDRAM_ITF :OR: SFR_BASE16 :OR: SRAM_BASE6 :OR: CACHE_ALL :OR: CACHE_EN17 strr1, r01819 ldrr0, =CLKCON20 ldrr1, =021 strr1, r02223 ldrr0, =EXTACON024 ldrr1, =0x0fff0fff25 strr1, r026 ldrr0, =EXTACON127 ldrr1, =0x0fff0fff28 strr1, r02930 ldrr0, =EXTDBWTH31 ldrr1, =0xffff55632 str r1, r03334 adrr0, MemCfgPara35 ldmiar0, r1-r1136 ldrr0, =ROMCON037 stmiar0, r1-r113839 movpc, r144041 MemCfgPara42 DCDRomBaseAddr10 :OR RomEndAddr20 :OR: &60;&1084006043 DCD&1084206044 DCD&1084206045 DCD&1084206046 DCD&1084206047 DCD&1084206048 DCDRamBaseAddr10 :OR: RamEndAddr20 :OR: &398;&1000039849 DCD&1004039850 DCD&1004039851 DCD&1004039852 DCD&ce2983fd 5354 EXPORTRemapMemory55 RemapMemory56 adrr0, RemapMemPara57 ldmiar0, r1-r1158 ldrr0, =ROMCON059 stmiar0, r1-r1160 nop61 nop62 ldrr0, =IRQ_SVC_VECTOR63 ldrr1, =IRQ_SERVICE;IRQ_SVC_VECTOR in ram, so set it after remap64 str r1, r06566 movpc, r146768 RemapMemPara69 DCD&1204006070 DCD&1084206071 DCD&1084206072 DCD&1084206073 DCD&1084206074 DCD&1084206075 DCD&1000039876 DCD&1004039877 DCD&1004039878 DCD&1004039879 DCD&ce2983fd8081 EXPORTResetMemSet82 ResetMemSet83 adrr0, ResetMemPara84 ldmiar0, r1-r1185 ldr r0, =ROMCON086 stmiar0, r1-r1187 nop88 nop8990 movpc, r149192 ResetMemPara93 DCD&2000006094 DCD&0000006095 DCD&0000006096 DCD&0000006097 DCD&0000006098 DCD&0000006099 DCD&00000000100 DCD&00000000101 DCD&00000000102 DCD&00000000103 DCD&000083fd104105 ;*106 InitInterrupt107 ldrr0, =INTMSK108 ldrr1, =0x3fffff109 strr1, r0;disable all interrupt110111 movpc,r14112113 ;*114 InitPort115 ldrr0, =IOPMOD116 ldrr1, =1117 strr1, r0;all input but p0 output118119 ldrr0, =IOPCON120 ldrr1, =0121 strr1, r0;disable XIRQ 0-3, dma req,ack, timer 0,1 output122123 ldrr0, =IOPDATA124 ldr r1, r0;read input data125126 movpc, r14127128 ;*129 InitTimer130 ldrr0, =TMOD131 ldrr1, =0132 strr1, r0;disable timer 0,1133134 movpc, r14135136 ;*137 UART_DIV_CNT0EQU26138 UART_DIV_CNT1EQU0139140 InitUart141 ldrr0, =ULCON0142 ldrr1, =DATA8b :OR: STOPb1 :OR PARITY_NO143 strr1, r0144145 ldrr0, =UCON0146 ldrr1, =RX_STAT_INT|9147 strr1, r0148 149 ldrr0, =UBRDIV0150 ldrr1, =UART_DIV_CNT04|UART_DIV_CNT1151 strr1, r0;if UART_DIV_CNT1=xxx0 baud rate = MCLK/(UART_DIV_CNT0+1)/16152 ;if UART_DIV_CNT1=xxx1 baud rate = MCLK/(UART_DIV_CNT0+1)/16/16153 ldrr0, =URXBUF0154 ldrr1, r0;read rx data155 156 ldrr0, =ULCON1157 ldrr1, =DATA8b :OR: STOPb1 :OR PARITY_NO158 strr1, r0159 160 ldrr0, =UCON1161 ldrr1, =RX_STAT_INT|9162 strr1, r0163 164 ldrr0, =UBRDIV1165 ldrr1, =UART_DIV_CNT04|UART_DIV_CNT1166 strr1, r0;if UART_DIV_CNT1=xxx0 baud rate = MCLK/(UART_DIV_CNT0+1)/16167 ;if UART_DIV_CNT1=xxx1 baud rate = MCLK/(UART_DIV_CNT0+1)/16/16168 ldrr0, =URXBUF1169 ldrr1, r0;read rx data170 171 movpc, r14172 173 ;*174 InitStack175 mrsr0, cpsr176 bicr0, r0, #PSR_MODE_MASK177 178 orrr1, r0, #PSR_UNDEF_MODE|NO_INT179 msrcpsr_cxsf, r1;UndefMode180 ldrsp,=UndefStack181 182 orrr1, r0, #PSR_ABORT_MODE|NO_INT183 msrcpsr_cxsf, r1;AbortMode184 ldrsp, =AbortStack185 186 orrr1, r0, #PSR_IRQ_MODE|NO_INT187 msrcpsr_cxsf, r1;IRQMode188 ldrsp, =IRQStack189 190 orrr1, r0, #PSR_FIQ_MODE|NO_INT191 msrcpsr_cxsf, r1;FIQMode192 ldrsp, =FIQStack193 194 orrr1, r0, #PSR_SVC_MODE|NO_INT195 msrcpsr_cxsf, r1;SVCMode196 ldrsp, =SVCStack197 198 movpc, r14199200 ;*201 EXPORTInitSystem202 InitSystem203 movr12, r14204 blInitMemory205 blInitStack206 blInitPort207 blInitUart208 blInitTimer209 blInitInterrupt210 ;ldrr0, =0x11000000 ;Cache Flush 211 ;movr1, #0212 ;movr2, #256 213 ;1214 ;strr1, r0, #4215 ;subsr2, r2, #1216 ;bne%B1217 movpc, r12218 219 ;*220 IRQ_SERVICE;using I_ISPR register. 221 IMPORTpIrqStart222 IMPORTpIrqFinish223 IMPORTpIrqHandler224 225 ;nop226 ;ldrr0, =TMOD227 ;ldrr1,r0228 ;andr1,r1, #&37229 ;strr1, r0230 231 ldrr4, =INTOFFSET232 ldrr4, r4233 movr1, r4, lsr #2234 movr0, #1235 movr0, r0, lsl r1236 ldrr1, =INTPND237 strr0, r1;clear interrupt pending bit238 ldrr1, =pIrqStart239 ldrr1, r1240 cmpr1, #0241 movnelr, pc; .+8242 movnepc, r1 243 244 ldrr1, =pIrqHandler245 ldrr1, r1246 cmpr1, #0247 movnelr, pc248 movnepc, r1 249 250 ldrr1, =pIrqFinish251 ldrr1, r1252 cmpr1, #0253 movnelr, pc; .+8254 movnepc, r1255 cmpr0, #0256 movnelr, pc257 movnepc, r0 258 259 ldmfdsp!, r0;IRQ260 msrspsr_cxsf, r0261 ldmfdsp!, r0-r12, pc262 ;*263 AREA HiVector, DATA, READWRITE264 265 _RAM_END_ADDREQU0x01000000266267 (_RAM_END_ADDR-0x600)268 UserStack#256;xxxxxa00269 SVCStack#256;xxxxxb00270 UndefStack#256;xxxxxc00271 AbortStack#256;xxxxxd00272 IRQStack#256;xxxxxe00273 FIQStack#0;xxxxxf00274275276 MAP(_RAM_END_ADDR-0x100)277 SYS_RST_VECTOR#4278 UDF_INS_VECTOR#4279 SWI_SVC_VECTOR#4280 INS_ABT_VECTOR#4281 DAT_ABT_VECTOR#4282 RESERVED_VECTOR#4283 IRQ_SVC_VECTOR#4284 FIQ_SVC_VECTOR#4285286 EXPORTSYS_RST_VECTOR287

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论