首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

关于用户代码的升级问题

关于用户代码的升级问题

请教各位:

如何在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)?

谢谢!

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

Bootloader,TCP/IP, 数字化电源控制 MCU应用专家 QQ:524673287
返回列表