LPC2366 IAP
如果IAP程序放在Flash的0x00H。应用程序的中断向量需要重映射。我已经测试过了。部分代码如下:
例如,应用程序放在Flash中以0x00008000为起始地址的位置,重映射到内存中0x40000000
Vectorsaaa EQU 0x00008000
MEMMAP EQU 0xE01FC040
MOV R0, #0x40000000 ;RAM区首地址
LDR R1, =Vectorsaaa ;向量表首地址
;下面一段程序是把从0x00008000开始的64个字节(FLASH中的中断向量表和地址表)搬移到以
;0x40000000为首地址的RAM区中
LDMIA R1!, {R2-R9} ;把以[R1]为首地址的32个字节数据装载到R2-R9中
STMIA R0!, {R2-R9} ;把R2-R9中的数据存入以[R0]为首地址的单元中
LDMIA R1!, {R2-R9} ;把以[R1]为首地址的32个字节数据装载到R2-R9中
STMIA R0!, {R2-R9} ;把R2-R9中的数据存入以[R0]为首地址的单元中
;下面几行代码设置存储器映射控制寄存器
LDR R0, =MEMMAP ;取MEMMAP地址到R0
MOV R1, #0x02
STR R1, [R0] ;给MEMMAP赋值为0x02,设置中断向量从RAM区从新映射
;以上代码为网上搜集整理。放在应用程序的启动代码中的
BL TargetResetInit ;目标板基本初始化
B __main ;跳转到c语言入口
;之前
文章评论(0条评论)
登录后参与讨论