管理提醒: 本帖被 qq2440 从 Linux技术交流专区 移动到本区(2009-12-27)
将友善之臂的代码UCOS2基于ADS平台移植到 MDK平台
原先代码使用mmu 不知道为什么 在mdk+jlink使用mmu老是跑飞,
所以这个代码没有使用mmu,ucos的汇编代码完全采用原先的代码 没有进行修改
主要改了启动代码,指明了中断的跳转,
通过调试 知道友善之臂的默认bootloader的中断跳转是跳向 0x33F00000
例如 IRQ中断 地址 是 0x00000018 那么bootloader会跳向 0x33F00000+0x00000018
下面是中断拷贝程序 IRAM_BASE 等于 0x33F00000
IF :DEF:RAM_INTVEC
ADR R8, Vectors ; Source
LDR R9, =IRAM_BASE ; Destination
LDMIA R8!, {R0-R7} ; Load Vectors
STMIA R9!, {R0-R7} ; Store Vectors
LDMIA R8!, {R0-R7} ; Load Handler Addresses
STMIA R9!, {R0-R7} ; Store Handler Addresses
ENDIF
在c中 要设置 IRQ的处理程序
#define _ISR_STARTADDRESS 0x33F00020
#define pISR_IRQ (*(unsigned *)(_ISR_STARTADDRESS+0x18))
pISR_IRQ=(INT32U)OS_CPU_IRQ_ISR;
镇关西(QQ:191635418)
09/12/27