OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
12
返回列表 发新帖
楼主: 电脑小白

stm8s_IAP_xmode串口升级

  [复制链接]

160

主题

966

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2095
金钱
2095
注册时间
2014-3-7
在线时间
490 小时
发表于 2018-7-18 09:36:15 | 显示全部楼层
本帖最后由 ssssssssssss 于 2018-7-18 16:16 编辑
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

为什么bootloader刚开始就重新映射中断向量表?不能再app中映射吗?这样的话bootloader也可以用中断了啊
//重新初始化STM8的中断向量表  把它重新定义到APP的中断向量中   如果之前已经重映射了则不会重新操作
  STM8_HanderIqr_Init();
正点原子逻辑分析仪DL16劲爆上市
回复 支持 反对

使用道具 举报

160

主题

966

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2095
金钱
2095
注册时间
2014-3-7
在线时间
490 小时
发表于 2018-7-18 15:05:13 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

if(FLASH_ReadWord(0X8000+4*Index)!=(0X82000000+MAIN_USER_Start_ADDR+Index*4))
   {
    FLASH_ProgramWord(0X8000+4*Index,0X82000000+MAIN_USER_Start_ADDR+Index*4);
   }
0X82000000+MAIN_USER_Start_ADDR+Index*4 这个值是怎么确定的
回复 支持 反对

使用道具 举报

160

主题

966

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2095
金钱
2095
注册时间
2014-3-7
在线时间
490 小时
发表于 2018-7-18 15:05:24 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

if(FLASH_ReadWord(0X8000+4*Index)!=(0X82000000+MAIN_USER_Start_ADDR+Index*4))
   {
    FLASH_ProgramWord(0X8000+4*Index,0X82000000+MAIN_USER_Start_ADDR+Index*4);
   }
0X82000000+MAIN_USER_Start_ADDR+Index*4 这个值是怎么确定的
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1713
金钱
1713
注册时间
2017-2-22
在线时间
296 小时
发表于 2018-7-19 12:28:15 | 显示全部楼层
最近自己为了用stm8S103k3写了一个1K的串口IAP,其实挺简单的,倒是上位机难搞些要跟IAP应答分块通讯,上位机很容易卡死,最后用最简单的分块延时方式处理。
其实楼主用stm8s105做串口的IAP意义不大毕竟官方就已经做好的玩意,stm8s105可以直接上SD卡FatFs文件系统做离线烧录了,这样可以直接摆脱上位机,拿个SD卡就能升级了,整个SD IAP才12K而已。
回复 支持 反对

使用道具 举报

11

主题

58

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2017-12-21
在线时间
30 小时
发表于 2018-8-11 15:58:16 | 显示全部楼层
楼主,你这里是远程升级还是将板子与电脑串口相连,通过电脑发送到板子上?
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2018-8-13 15:38:48 | 显示全部楼层
依然依然1356 发表于 2018-8-11 15:58
楼主,你这里是远程升级还是将板子与电脑串口相连,通过电脑发送到板子上?

板子与电脑串口相连
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

6

主题

21

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
286
金钱
286
注册时间
2017-2-7
在线时间
176 小时
发表于 2018-11-6 09:23:18 | 显示全部楼层
ssssssssssss 发表于 2018-7-18 09:36
为什么bootloader刚开始就重新映射中断向量表?不能再app中映射吗?这样的话bootloader也可以用中断了啊
...

我也有这个问题
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2018-11-6 16:21:09 | 显示全部楼层
原子大大,求票票,求酷贴,求置顶。
原子大大,给个精华帖也行呀。
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

160

主题

966

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2095
金钱
2095
注册时间
2014-3-7
在线时间
490 小时
发表于 2018-11-7 17:41:39 | 显示全部楼层
电脑小白 发表于 2018-11-6 16:21
原子大大,求票票,求酷贴,求置顶。
原子大大,给个精华帖也行呀。

顶你一下
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-11-21 18:23:14 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

大佬你好  我看不懂是怎么跳转的  //跳转到用户代码
void goto_app(void)
{
  const AppMainTyp MainUserApplication = (AppMainTyp)MAIN_USER_Start_ADDR;
  if((*((u8 FAR*)MainUserApplication)==0x82) || (*((u8 FAR*)MainUserApplication)==0xAC))
  {
    MainUserApplication();
  }       
}
回复 支持 反对

使用道具 举报

7

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
223
金钱
223
注册时间
2018-3-6
在线时间
38 小时
发表于 2018-11-22 11:54:03 | 显示全部楼层
楼主大大66666  顶一个顶一个
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2017-10-9
在线时间
2 小时
发表于 2018-11-27 16:48:13 | 显示全部楼层
谢谢楼主!!!
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2018-1-12
在线时间
22 小时
发表于 2019-1-12 13:45:16 | 显示全部楼层
好东西,有没有stm32f0系列的?
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2019-1-15 14:58:37 | 显示全部楼层
本帖最后由 电脑小白 于 2019-1-15 15:00 编辑
kang1433 发表于 2019-1-12 13:45
好东西,有没有stm32f0系列的?

这个是stm8的专区帖子哦。我要是在stm8的专区下发布stm32f0方面的帖子不知道会不会被管理员给打shi哦。
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

11

主题

66

帖子

0

精华

高级会员

Rank: 4

积分
643
金钱
643
注册时间
2018-4-17
在线时间
152 小时
发表于 2019-2-26 15:00:09 | 显示全部楼层
楼主牛啤
回复 支持 反对

使用道具 举报

11

主题

66

帖子

0

精华

高级会员

Rank: 4

积分
643
金钱
643
注册时间
2018-4-17
在线时间
152 小时
发表于 2019-2-26 15:05:51 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

首先先谢谢你的代码,帮我解决了个问题。IAP,APP中都可以用中断,方法是在映射函数不用一开始就执行。在跳转函数之前执行中断向量映射函数就OK了
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2019-3-21 18:15:22 | 显示全部楼层
STM32xpiggy 发表于 2019-2-26 15:05
首先先谢谢你的代码,帮我解决了个问题。IAP,APP中都可以用中断,方法是在映射函数不用一开始就执行。在 ...

你的方法能分享出来给大家么?
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2019-5-7
在线时间
8 小时
发表于 2019-5-7 22:12:50 | 显示全部楼层
看看学习
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
128
金钱
128
注册时间
2019-4-25
在线时间
33 小时
发表于 2019-5-13 09:11:37 | 显示全部楼层
顶一哈楼主,嘿嘿嘿!!!
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-4-27
在线时间
19 小时
发表于 2019-5-17 18:18:37 | 显示全部楼层
谢谢大神的帮助
回复 支持 反对

使用道具 举报

0

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2019-3-27
在线时间
10 小时
发表于 2019-7-16 11:44:36 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

2

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2014-3-3
在线时间
51 小时
发表于 2019-8-8 09:52:09 | 显示全部楼层
帖子很不错,感谢.
回复 支持 反对

使用道具 举报

2

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2014-3-3
在线时间
51 小时
发表于 2019-8-30 15:25:54 | 显示全部楼层
真的很不错,很喜欢.谢谢
回复 支持 反对

使用道具 举报

8

主题

161

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5183
金钱
5183
注册时间
2013-3-16
在线时间
610 小时
发表于 2019-9-3 13:37:59 | 显示全部楼层
看看,虽然没有弄STM8系列的。 下次来弄
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-8-1
在线时间
5 小时
发表于 2019-9-12 18:46:39 | 显示全部楼层
Draven 发表于 2017-8-14 14:47
**** 作者被禁止或删除 内容自动屏蔽 ****

求源码
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2019-8-1
在线时间
5 小时
发表于 2019-9-12 18:48:47 | 显示全部楼层
电脑小白 发表于 2018-11-6 16:21
原子大大,求票票,求酷贴,求置顶。
原子大大,给个精华帖也行呀。

你这个MCU是stm8s105c6吗
回复 支持 反对

使用道具 举报

2

主题

57

帖子

0

精华

高级会员

Rank: 4

积分
532
金钱
532
注册时间
2014-3-3
在线时间
51 小时
发表于 2019-9-16 15:33:57 | 显示全部楼层
大家好,我来说几句,我一直在使用STM32单片机,后来由于工程上的原因使用STM8单片机,s208mb.楼主的帖子很好,但是有些问题,开始看的时候还是比较模糊的,1对于串口协议不了解的同鞋,就不好理解了,2对于APP和bootloader的编译文件的地址没有说的很详细.所以一开始我将所有的工作做完也能更新进去,但是不能跳转,仿真的时候明明看到了跳转,但是就是不执行APP程序.我的程序已经完全调通,但是没有做完整,上位机做的也比较粗糙,等待完善后,公布出来,也表示感谢原子和楼主.
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

初级会员

Rank: 2

积分
168
金钱
168
注册时间
2019-10-21
在线时间
15 小时
发表于 2019-10-21 16:27:39 来自手机 | 显示全部楼层
好东西,更新分享,已收藏
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2019-11-17
在线时间
0 小时
发表于 2019-11-17 13:04:01 | 显示全部楼层
感谢分享,学习了
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-10-23
在线时间
3 小时
发表于 2019-11-28 09:16:26 | 显示全部楼层
顶一下,谢谢楼主分享!!
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2020-2-7 09:58:30 | 显示全部楼层
移植到STM8S003K3上的一点心得:
1 修改项目选项,把单片机型号改为STM8S003K3;
2  在linker选项中,单独复制一份lnkstm8s003k3.icf文件到当前项目中,把lnkstm8s105k4.icf文件改为STM8S003K3用的lnkstm8s003k3.icf文件。根据实际情况修改    lnkstm8s003k3.icf 内容,例如:
define region NearFuncCode = [from 0x8000 to 0x8C00];

define region FarFuncCode = [from 0x8000 to 0x8C00];

define region HugeFuncCode = [from 0x8000 to 0x8C00];
3 串口换成UART1后,把stm8s.h 中的单片机型号做如下修改:
/* #define STM8S103 */      /*!< STM8S Low density devices */
   #define STM8S003       /*!< STM8S Value Line Low density devices */ // 修改这一行,把注释/* */去掉
/* #define STM8S903 */      /*!< STM8S Low density devices */
把UART2相关函数改为UART1,并且在项目中加入stm8s_uart1.c文件。
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2020-2-7 10:00:42 | 显示全部楼层
我的疑问:把单片机型号改为STM8S003K3后,为什么还要把把stm8s.h 中的单片机型号改为#define STM8S003,真麻烦。
把单片机型号改为STM8S003K3究竟有什么用?
回复 支持 反对

使用道具 举报

6

主题

315

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1665
金钱
1665
注册时间
2018-1-29
在线时间
159 小时
发表于 2020-2-10 09:12:36 | 显示全部楼层
楼主分享的是基于XModem协议的串口BootLoader,用超级终端作为上位机烧写器。有的时候项目需要专用的烧写器,怎么办?
我这里给大家分享一个基于VC6绿色版的PC端串口文件传输项目源码,也是采用XModem 128字节协议。稍作修改就可以作为你自己的专用串口烧写器了。

xmodem_Flash_Down.rar

2.53 MB, 下载次数: 100

回复 支持 2 反对 0

使用道具 举报

0

主题

4

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-3-7
在线时间
3 小时
发表于 2020-3-7 11:38:28 | 显示全部楼层
感谢分享,留名备用
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2019-9-8
在线时间
7 小时
发表于 2020-3-23 14:56:48 | 显示全部楼层
感觉很不错的
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2013-6-7
在线时间
8 小时
发表于 2020-5-26 13:26:37 | 显示全部楼层

收藏一下。谢谢分享。
回复 支持 反对

使用道具 举报

0

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
186
金钱
186
注册时间
2020-6-5
在线时间
27 小时
发表于 2020-7-18 11:25:59 | 显示全部楼层
感谢感谢,必须顶一下
回复 支持 反对

使用道具 举报

16

主题

107

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
332
金钱
332
注册时间
2015-12-3
在线时间
54 小时
发表于 2020-9-26 18:31:51 | 显示全部楼层
顶一下
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2020-4-28
在线时间
10 小时
发表于 2021-1-4 16:55:53 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

发送终端  一直超时 ,请问是什么原因造成?
回复 支持 反对

使用道具 举报

5

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2018-11-19
在线时间
113 小时
发表于 2021-1-10 11:28:24 | 显示全部楼层
国人之光
回复 支持 反对

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
5
金钱
5
注册时间
2021-1-15
在线时间
0 小时
发表于 2021-1-15 03:32:24 | 显示全部楼层
513393302@qq.co 发表于 2017-8-12 12:52
通过学习楼主的STM8S IAP  自己也写了一个,也是串口XMODEM  128字节模式   大小为 3K
可以支持所有STM8S ...

非常好的学习资料
回复 支持 反对

使用道具 举报

13

主题

166

帖子

0

精华

高级会员

Rank: 4

积分
791
金钱
791
注册时间
2018-12-19
在线时间
163 小时
发表于 2021-1-16 22:43:02 | 显示全部楼层
2021年了还有人玩这个吗?我用8051写了BootLoader和APP,还有上位机软件,我看了IAR,也可以设置中断重映射,只是不知道BootLoader程序能不能用中断,8051的BootLoader和APP都可以用中断,没有任何影响。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2021-10-23
在线时间
1 小时
发表于 2021-11-13 23:30:50 | 显示全部楼层
ssssssssssss 发表于 2018-7-18 09:36
为什么bootloader刚开始就重新映射中断向量表?不能再app中映射吗?这样的话bootloader也可以用中断了啊
...

我也有这个疑问? 而且我重定向了的话,烧写stm8s003f3,会提示校验错误,就是刚开始的中断向量位置。
把这段重定向的函数注释掉,就不提示错误了。 后面还需要试试能不能实现功能。。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2022-1-5
在线时间
0 小时
发表于 2022-1-5 13:10:24 | 显示全部楼层
谢谢楼主!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-8-6
在线时间
4 小时
发表于 2022-3-21 10:44:01 | 显示全部楼层
支持分享,学习应用
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2022-4-18 16:33:42 | 显示全部楼层
ygshg 发表于 2022-3-21 10:44
支持分享,学习应用

哈哈哈哈
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

8

主题

533

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2829
金钱
2829
注册时间
2016-5-13
在线时间
178 小时
 楼主| 发表于 2022-4-18 17:03:20 | 显示全部楼层
原子大大,求票票,求酷贴,求置顶。
虽然不明白你们在说什么,但感觉很厉害的样子。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2012-5-2
在线时间
24 小时
发表于 2024-5-21 09:18:02 来自手机 | 显示全部楼层
本帖最后由 potrial 于 2024-5-21 14:06 编辑
STM32xpiggy  2019-2-26 15:05
ллIAPAPPжж,亯С ...

回复66楼:
实测不好用。只有烧录第一次运行可以,运行App后8000开始的复位向量被改写成了App的二次跳转地址,除非每次启动都把BootLoader的复位向量重新写到8000开始地址处(和烧录类似),但这样做意义不大。
原因见:  https://bbs.elecfans.com/jishu_2150048_1_1.html
但附件PDF有bug,结构体 interrupt_vector4字节对齐按如下处理即可,添加一个padding字节,否则是3字节对齐了!!!
typedef void (INTERRUPT *interrupt_handler_t)(void);
struct interrupt_vector {
    unsigned char interrupt_instruction;
    unsigned char padding;
    interrupt_handler_t interrupt_handler;
};
struct interrupt_vector isr_handler[32] @".memvectab" = {
    {0x82, 0x00, __iar_program_start},
    {0x82, 0x00, TRAP_IRQHandler},
...
↑ 类似链接:https://blog.csdn.net/sinat_33611142/article/details/88894401 是4字节对齐的。。。


不忘初衷,方得始终
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2012-5-2
在线时间
24 小时
发表于 2024-5-21 10:29:29 | 显示全部楼层
potrial 发表于 2024-5-21 09:18
回复66楼:
实测不好用。只有烧录第一次运行可以,运行App后8000开始的复位向量被改写成了App的二次跳转地 ...

https://bbs.elecfans.com/jishu_2150048_1_1.html
这篇帖子详细说明了为什么不好用,和解决思路2.
帖子的PDF文档见附件。

STM8S(207)BootLoader制作(在BootLoader和App中都可以使用中断).pdf

710.39 KB, 下载次数: 1

不忘初衷,方得始终
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 06:26

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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