在线时间10 小时
UID158704
注册时间2009-11-12
NXP金币0
TA的每日心情 | 衰 2018-2-1 12:39 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]初来乍到
注册会员

- 积分
- 50
- 最后登录
- 1970-1-1
|
如题,我在用KE06做BootLoader用串口0中断进行到APP的跳转,跳转到APP以后发现所用的中断都无法工作,但主程序除了中断的程序可以工作,如果从APP开始运行程序,回跳到BootLoader程序也是中断无法工作,我在网上查了些资料,有说在跳转到APP函数之前在BootLoader中将总中断关掉,程序如下:
void MS_Jump_To_APP( uint32_t app_start_addr)
{
pFunction jump_to_application;
uint32_t jump_addr;
DisableInterrupts;//关中断
//__asm(" CPSID i");//关中断
jump_addr = *( uint32_t*)(app_start_addr + 4); //APP起始地址+4 复位开始
if(app_start_addr != 0xfffffffful && (jump_addr > 0x0000 && jump_addr < END_ADDR))//jump_addr
{ jump_to_application = (pFunction)jump_addr;
//SCB_VTOR=(uint32_t)app_start_addr;
__set_MSP(*( uint32_t*)app_start_addr); //
jump_to_application();
}
}
我的BootLoader程序的MEMORY配置如下:/* Specify the memory areas */
MEMORY
{
m_interrupts (rx) : ORIGIN = 0x00000000, LENGTH = 0xC0
m_cfmprotrom (rx) : ORIGIN = 0x00000400, LENGTH = 0x10
m_text (rx) : ORIGIN = 0x00000800, LENGTH = 128K - 0x800
m_data (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* SRAM */
}
我的APP程序中的MEMORY配置如下:
/* Specify the memory areas */
MEMORY
{
m_interrupts (rx) : ORIGIN = 0x00007000, LENGTH = 0xC0
m_cfmprotrom (rx) : ORIGIN = 0x00000400, LENGTH = 0x10
m_text (rx) : ORIGIN = 0x00007800, LENGTH = 128K - 0x7800
m_data (rwx) : ORIGIN = 0x1FFFF000, LENGTH = 16K /* MKE06Z128VLK4 SRAM 16K*/
}
然后进行这个操作以后,APP程序中断依然不好用,我又在APP程序的main函数的各个地方加入开中断,依然不好用
但是在APP程序中,应该在什么位置开启中断呢?如果需要在main函数之前某个地方开启中断的话,请问应该在哪个文件具体什么地方添加EnableInterrupts;或者asm(" CPSIE i");开中断呢?
或者说我的问题是否仅存在于关中断和开中断呢?还可能有别的问题么?
麻烦大家了,谢谢啦!
|
|