TI论坛
直播中

刘飞

8年用户 265经验值
私信 关注
[问答]

操作系统下的Bootloader运行ModifeMSP时候直接跑飞

我的主程序是基于UCOS2的操作系统,现在需要在程序里加入bootloader功能,但是遇到了一个问题。
程序在运行ModifeMSP(myaddr)的时候就直接跑飞了,请问是怎么回事?
在地址myaddr处,有自行开发设计的bootloader程序,此程序在非操作系统下运行正常。
谢谢

回帖(5)

刘飞

2020-4-10 08:11:04
是不是问题描述的不够明白? 怎么都没有高手给解答一下
举报

周莹

2020-4-10 08:27:49
跑飞到哪里去了?ModifeMSP(myaddr)这个函数是做什么的呢?
如果只是要跳转到myaddr处,剩下的都由bootloader处理,只需要跳转过去就行了
(*((void (*)(void))myaddr))();
举报

周莹

2020-4-10 08:59:48
抱歉之前没有说清除,之所以问ModifieMSP的作用是想确定这个函数的作用是用myaddr修改MSP的值,而不是用myaddr地址中的值修改MSP。
如果myaddr的值不是MSP的地址而只是存MSP地址的地址,这句代码应该是:
ModifieMSP(*((unsigned long *)myaddr));
这样才能拿到正确的SP地址。
举报

刘飞

2020-4-10 09:08:16
引用: vmmjuwy 发表于 2020-4-10 08:59
抱歉之前没有说清除,之所以问ModifieMSP的作用是想确定这个函数的作用是用myaddr修改MSP的值,而不是用myaddr地址中的值修改MSP。
如果myaddr的值不是MSP的地址而只是存MSP地址的地址,这句代码应该是:
ModifieMSP(*((unsigned long *)myaddr));

非常感谢你的回答,问题我已经解决了。一会我回帖详细描述一下
举报

更多回帖

发帖
×
20
完善资料,
赚取积分