专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
TI
求指导msp430的iap升级功能
2019-07-15 15:08
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
TI MCU
10586
10
1007
关于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文件后,本身代码里面要添加什么东西吗?
加载中...
1
2
下一页
一周热门
更多
>
相关问题
CPLD的方波输出
4 个回答
11个版本Quartus II 软件下载,安装包网盘合集,附教程,47G!
20 个回答
请大家帮忙到21IC发展大家谈支持我申请新版面
20 个回答
【通知】21ic中国电子网服务条款 (所有人员必读)
1 个回答
满载而归乙亥年,大展鸿途庚子年---集签赢好礼
20 个回答
携手ADI,踏上电子工程师之巅—车辆电气化视频,答题领奖!
1 个回答
如何提升论坛质量,看你了!
20 个回答
【最终名单】二姨家喊你来拿100份新年大礼啦~
20 个回答
相关文章
×
关闭
采纳回答
向帮助了您的网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
TI
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
关闭
您已邀请
15
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
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里面 写处理函数就行了。其他中断都是一样的操作,只要你地址不写错。
//-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
一周热门 更多>