关于stm8s的bootload

2019-07-19 21:03发布

求助!目前在做stm8s的bootload,用uart接收数据,写入flash。目前进度是,uart接收到数据,并写入flash,写入的地址是0x009000。能用stvp读到0x009000地址有数据,说明已经写入进去了。问题是我从iap跳转到app地址0x009000后,跑飞了,是用stlink硬件仿真的。跳到0x009080也跑飞了!想问问各位,这个app的icf文件应该怎么设置?app的函数应该怎么写?
跳转到app程序的地址应该是0x009000还是0x009080?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
操作系统
1楼-- · 2019-07-20 21:10
 精彩回答 2  元偷偷看……
BigDiong
2楼-- · 2019-07-20 22:17
操作系统 发表于 2016-10-26 17:26
APP就是普通的正常的程序.没有什么特别的.

我现在遇到的问题是,按照论坛大神们的经验,从iap转到app,地址应该是0x9080,因为我的app的起始地址是0x9000。但是,如果这样设置的话,因为这个地址可能是子程序中某一语句的地址,而主函数的入口在后面,所以当我执行到此子程序结束,会有跳转语句回到主程序,但是app的main函数未执行,所以就会跑飞了。所以请教大神,是iap还是app有问题?
BigDiong
3楼-- · 2019-07-21 02:21
操作系统 发表于 2016-10-26 17:26
APP就是普通的正常的程序.没有什么特别的.

还有,我app是一个简单的点亮led程序,我对这个程序进行debug,发现一进去就是main函数入口地址,所以我才在iap中的跳转函数的地址改成app的main函数入口地址。这样是能跳转的。我想问问大神,iar编译stm8,进main函数之前是怎么样的流程?
BigDiong
4楼-- · 2019-07-21 02:31
 精彩回答 2  元偷偷看……
操作系统
5楼-- · 2019-07-21 06:31
 精彩回答 2  元偷偷看……
远方的自己
6楼-- · 2019-07-21 07:13
在移植一个STM32的程序升级bootloader时出现问题,其中有用到内嵌汇编程序,提示说asm未定义。函数的书写方法是
void MSR_MSP(u32 addr)
{
    asm("MSR MSP, r0");  
    asm("BX r14");
}望大神们能知道一下,是我需要在keil中设置内嵌汇编还是,我的书写有误。

一周热门 更多>