Board logo

标题: 关于用户代码的升级问题 [打印本页]

作者: trsc    时间: 2008-12-21 17:48     标题: 关于用户代码的升级问题

请教各位:

如何在MC9s12 中利用bootloader实现把用户代码放在指定的flash区域?

如果在flash中存放两份用户代码(版本1放在区域1&版本2区域2),如何切换?

使用CW如何实现将用户代码的版本信息作为代码的一部分放入flash中,每次升级之前读出flash的版本和

需要烧入的firmware 进行比较?

freescale提供的bootloader(AN2153)下载firmware到flash中时,由于flash保护问题,使用了2级中断跳转(次中断表)。

Interrupt Source Secondary Vector Address

Reserved $FF80 $EF80

。。。。。。。。。。

但是我在CW中自动生成的代码的中断似乎是固定在0xFF80位置的。

const tIsrFunc _InterruptVectorTable[] @0xFF80 = { /* Interrupt vector table */
/* ISR name No. Address Pri Name Description */
Cpu_Interrupt, /* 0x3F 0xFF80 1 ivVReserved63 unused by PE */
Cpu_Interrupt, /* 0x3E 0xFF82 1 ivVReserved62 unused by PE */
Cpu_Interrupt, /* 0x3D 0xFF84 1 ivVReserved61 unused by PE */
Cpu_Interrupt, /* 0x3C 0xFF86 1 ivVReserved60 unused by PE */
Cpu_Interrupt, /* 0x3B 0xFF88 1 ivVpwmesdn unused by PE */
Cpu_Interrupt, /* 0x3A 0xFF8A 1 ivVvreglvi unused by PE */
Cpu_Interrupt, /* 0x39 0xFF8C 1 ivVpmffault3 unused b

。。。。

如果使用bootloader下载,是不是只需要手动将@0xFF80 改成次中断表的地址(0xEF80)?

谢谢!


作者: Henry_Yu    时间: 2008-12-31 11:24

楼上遇到的是一个中断地址映射问题,你需要在Bootloader中要设置固定的中断ISR入口地址,这个地址应在程序的非保护区;这个固定的地址将存放具体应用程序的入口地址(随程序的大小会发生改变)。至于是否简单地将手动将@0xFF80 改成次中断表的地址(0xEF80),你要检查你的中断矢量表是否有保留的情况,还有0xEF80有没有被占用。






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0