OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3355|回复: 15

关于stm8s的bootload

[复制链接]

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
发表于 2016-10-26 12:26:43 | 显示全部楼层 |阅读模式
20金钱
求助!目前在做stm8s的bootload,用uart接收数据,写入flash。目前进度是,uart接收到数据,并写入flash,写入的地址是0x009000。能用stvp读到0x009000地址有数据,说明已经写入进去了。问题是我从iap跳转到app地址0x009000后,跑飞了,是用stlink硬件仿真的。跳到0x009080也跑飞了!想问问各位,这个app的icf文件应该怎么设置?app的函数应该怎么写?
跳转到app程序的地址应该是0x009000还是0x009080?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 14:13:58 | 显示全部楼层
我发现stvp读出来的flash数据和我串口输入的数据差一位。stvp多出一个字节的数据,应该是我通信协议有点问题。有什么可靠的通讯协议供我参考?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 15:16:08 | 显示全部楼层
最新情况,stvp读出的数据与串口的数据一样。但是跳到app函数后,跑到RET指令就跑飞了。。。
为什么?有没有大神指点我!
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6647
金钱
6647
注册时间
2016-5-29
在线时间
908 小时
发表于 2016-10-26 15:32:44 | 显示全部楼层
你都会玩BOOTLOADER+APP,应该算是高手了.如果你仍然没有找到原因.你可以尝试一下,跳转到APP之前,关总中断.APP里面也不要开中断.如果这样子可以正常跑的话.应该是 中断向量 没有设置好.
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 15:37:51 | 显示全部楼层
最新进展,搞定了,虽然还不稳定。继续奋斗!
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 16:17:30 | 显示全部楼层
有个问题,每次跳转app函数,我都是跳转到app的main函数地址,正常的情况下不是应该跳转到0x9080的嘛?有没有大神指导??
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 16:20:15 | 显示全部楼层
操作系统 发表于 2016-10-26 15:32
你都会玩BOOTLOADER+APP,应该算是高手了.如果你仍然没有找到原因.你可以尝试一下,跳转到APP之前,关总中断.A ...

我不算高手,论坛上看真正高手的思路才写出来。我觉得我app函数没有设置好,每次跳到app的地址0x9080后,都会跑飞。您知道app函数应该怎么搞吗?
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6647
金钱
6647
注册时间
2016-5-29
在线时间
908 小时
发表于 2016-10-26 17:26:49 | 显示全部楼层
APP就是普通的正常的程序.没有什么特别的.
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 21:54:33 | 显示全部楼层
操作系统 发表于 2016-10-26 17:26
APP就是普通的正常的程序.没有什么特别的.

我现在遇到的问题是,按照论坛大神们的经验,从iap转到app,地址应该是0x9080,因为我的app的起始地址是0x9000。但是,如果这样设置的话,因为这个地址可能是子程序中某一语句的地址,而主函数的入口在后面,所以当我执行到此子程序结束,会有跳转语句回到主程序,但是app的main函数未执行,所以就会跑飞了。所以请教大神,是iap还是app有问题?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 21:58:01 | 显示全部楼层
操作系统 发表于 2016-10-26 17:26
APP就是普通的正常的程序.没有什么特别的.

还有,我app是一个简单的点亮led程序,我对这个程序进行debug,发现一进去就是main函数入口地址,所以我才在iap中的跳转函数的地址改成app的main函数入口地址。这样是能跳转的。我想问问大神,iar编译stm8,进main函数之前是怎么样的流程?
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-26 21:58:32 | 显示全部楼层
操作系统 发表于 2016-10-26 17:26
APP就是普通的正常的程序.没有什么特别的.

还有,我app是一个简单的点亮led程序,我对这个程序进行debug,发现一进去就是main函数入口地址,所以我才在iap中的跳转函数的地址改成app的main函数入口地址。这样是能跳转的。我想问问大神,iar编译stm8,进main函数之前是怎么样的流程?
回复

使用道具 举报

50

主题

1804

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6647
金钱
6647
注册时间
2016-5-29
在线时间
908 小时
发表于 2016-10-27 09:38:33 | 显示全部楼层
http://blog.163.com/yaochen_good ... 363201474111116410/  
这个网页说的很清楚.要修改 LINK文件,修改里面的FLASH起始定义与中断向量定义.APP的代码要译成BIN.用UART传入,写到预定位置.根本不存在APP前面的地址有什么子函数.看样子你的做法某些地方不正确.
回复

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-10-29 15:35:18 | 显示全部楼层
在移植一个STM32的程序升级bootloader时出现问题,其中有用到内嵌汇编程序,提示说asm未定义。函数的书写方法是
void MSR_MSP(u32 addr)
{
    asm("MSR MSP, r0");  
    asm("BX r14");
}望大神们能知道一下,是我需要在keil中设置内嵌汇编还是,我的书写有误。
寻找远方的自己,不断的学习。
回复

使用道具 举报

18

主题

109

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2016-8-11
在线时间
64 小时
 楼主| 发表于 2016-10-30 20:47:12 | 显示全部楼层
远方的自己 发表于 2016-10-29 15:35
在移植一个STM32的程序升级bootloader时出现问题,其中有用到内嵌汇编程序,提示说asm未定义。函数的书写方 ...

你应该是c与汇编语言混合编译,你那个格式不对吧,我找了个网站,你试试,具体我也不记得了。http://blog.csdn.net/lsk1124981644/article/details/42736797
回复

使用道具 举报

20

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
182
金钱
182
注册时间
2015-11-11
在线时间
22 小时
发表于 2016-10-31 09:53:25 | 显示全部楼层
好的,我看看,谢谢了。
寻找远方的自己,不断的学习。
回复

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2828
金钱
2828
注册时间
2016-5-13
在线时间
178 小时
发表于 2016-11-1 10:26:20 | 显示全部楼层
本帖最后由 电脑小白 于 2016-11-1 10:29 编辑

我写的这个帖子里有你需要的。你的问题都可以在这里帖子里找到。bootloader+app实现的串口IAP。自己慢慢看源代码吧,具体怎么实现的……我懒得解释……
http://www.openedv.com/thread-79611-1-1.html
虽然不明白你们在说什么,但感觉很厉害的样子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-9-29 05:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表