求指导msp430的iap升级功能

2019-07-15 15:08发布

关于msp430的iap升级功能哪个大神可以指导一下:1怎么分别修改boot和app的.xcl文件?2中断向量表是如何重定义的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
cfdwerwer
1楼-- · 2019-07-15 20:40
1.首先 ,你先写个正常的IAP程序 ,假设FLASH 地址范围是4000-FFFF 不去改任何地址。 假设你Code占用FLASH 为 4000-6000 ,然后 先写你的IAP程序, 把数据保存到 B000,用工具读取FLASH 查看写 没问题 没问题 没问题。。。这是最基本的FLASH写,先吧这个做好(用 FET MSP 软件)。
2.然后,你写个正常的点灯程序测试没问题之后。
3.你用IAP程序 ,你把link文件里面吧4000改成B000(把相关的 数据都要去修改) ,意思是  代码存放位置是B000-FFFF。 这个是IAP程序的存储地址。
你打开生成的txt 程序 文件开头就是  @B000 这个是 程序的启动地址 ,最下面 @FFE0 这个是默认的中断地址对应-Z(CODE)INTVEC=FFE0-FFFF(中断区)-Z(CODE)RESET=FFFE-FFFF(复位)
这样,你把 你的程序用IAP下载到4000的地址,在查看是否成功。   
4.把点灯程序 地址改为 4000-AFFF(相关的也要改,先不要用任何中断),
你打开生成的txt 程序 文件开头就是 @4000 这个是 程序的启动地址 ,最下面 @AFE0 这个是默认的中断地址对应-Z(CODE)INTVEC=AFE0-AFFF(中断区)-Z(CODE)RESET=AFFE-AFFF(复位)
5.用你修改过地址的IAP 程序  下载这个点灯程序。下载完成后 mov 一下 PC 指向 AFFE ,正常情况下
指针指向 AFFE 后复位 PC 会指向 4000地址去运行,
6.都好了之后可以用中断了。
1)简单的东西可以使用位置定义,IAP和APP定义变量 在同一个地址,然后在IAP里面执行中断,例如计数什么的,你通过指针就可以在APP里面获取。(最好流出一段RAM 做地址定位)
例如:
//-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1100-38FF (正常的)
-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,DATA16_HEAP+_DATA16_HEAP_SIZE=1300-38FF(例如保留1100-1300用代码去访问,程序 不会再这里面分配数据)
2)复杂点的 用中断调转 比如 FFE0出的中断 进入中断了 你直接 br &0xAFE0  跳转到你的虚拟中断地址,在APP里面 写处理函数就行了。其他中断都是一样的操作,只要你地址不写错。
hsdfaz
2楼-- · 2019-07-16 02:08
向量表在顶头0xFFFF
uuysfwer
3楼-- · 2019-07-16 02:15
 精彩回答 2  元偷偷看……
jfsdwer
4楼-- · 2019-07-16 04:12
谢谢指导
sayhealer
5楼-- · 2019-07-16 06:01
这个是 IAP的
//-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=4000-FFDF
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=F000-FFDF   
// -------------------------------------
// Code
//
//-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-FFDF
//-P(CODE)CODE=4000-FFDF
-Z(CODE)CSTART,ISR_CODE,CODE_ID=F000-FFDF            //数据 变量存储位置
-P(CODE)CODE=F000-FFDF                                           //代码 存储位置     
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=FFE0-FFFF
-Z(CODE)RESET=FFFE-FFFF
这个是APP的
//-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=4000-FFDF
-Z(CONST)DATA16_C,DATA16_ID,DIFUNCT,CHECKSUM=4000-EFDF
// -------------------------------------
// Code
//
//-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-FFDF
//-P(CODE)CODE=4000-FFDF
-Z(CODE)CSTART,ISR_CODE,CODE_ID=4000-EFDF
-P(CODE)CODE=4000-EFDF
// -------------------------------------
// Interrupt vectors
//
-Z(CODE)INTVEC=EFE0-EFFF
-Z(CODE)RESET=EFFE-EFFF
vuwuerwe
6楼-- · 2019-07-16 07:02
修改了link文件后,本身代码里面要添加什么东西吗?

一周热门 更多>