打印
[STM8]

发个占用资源少的STM8 bootloader

[复制链接]
楼主: way2888
手机看帖
扫描二维码
随时随地手机跟帖
21
zh113214| | 2015-2-28 15:04 | 只看该作者 回帖奖励 |倒序浏览
谢谢楼主分享啊

使用特权

评论回复
22
幻梦kfc| | 2015-3-5 22:36 | 只看该作者
最近在看stm8 的bootloader

使用特权

评论回复
23
shybody| | 2015-3-7 16:47 | 只看该作者
学习了,谢谢分享

使用特权

评论回复
24
仙人球W| | 2015-3-18 15:34 | 只看该作者
见楼主的内容就知道 楼主该是高手 !! 所以向楼主求教!最近要用STM8S103K3做个简单的制动单元,一直用STM32F1系列 楼主能否给个IAR安装包和**包!STM8S固件库函数中文PDF 本人不胜感激呀!! 邮箱:540709935qq.com

使用特权

评论回复
25
it_yrj| | 2015-3-22 19:55 | 只看该作者
多谢楼主分享

使用特权

评论回复
26
383278096| | 2015-5-9 17:09 | 只看该作者
在***论坛上看到你的TinyBoot For stm8开源了,可是我没有邀*码,可以发给小弟一份吗383278096@qq.com,不胜感激!

使用特权

评论回复
27
周董| | 2015-5-9 18:06 | 只看该作者
学习一下,谢谢楼主。。。。

使用特权

评论回复
28
LingTian| | 2015-5-13 10:31 | 只看该作者
学习学习。

使用特权

评论回复
29
aizhixi106| | 2015-5-29 15:51 | 只看该作者
楼主 我使用IAR 打开 是boot loader app 三个工程?bootload是下载哪个? 还想请问下,boot工程我就发现编译报错,RAM 超过了?

使用特权

评论回复
30
way2888|  楼主 | 2015-6-5 20:16 | 只看该作者
本帖最后由 way2888 于 2015-6-5 20:21 编辑

这样的,LOADER是写在FLASH的最后空间256字节,作用是接收软件下载的BOOT程序,
而BOOT实际是在软件中下载到RAM里的真正升级程序,
而APP则是用户程序,一般下的就是这个了

RAM超出是要在选项卡选择对应的芯片型号,并在config.h文件内要开放对应芯片的宏定义,在ICF文件修改对应的位置就可以了,
顺便提醒一下,IAR用1.31版本的是没问题的,后面的版本不一定能通过

使用特权

评论回复
31
hg7707| | 2015-6-8 08:37 | 只看该作者
楼主辛苦了。

使用特权

评论回复
32
奔牛滚滚| | 2015-6-8 10:13 | 只看该作者

qywf [qingwen]

way2888 发表于 2015-6-5 20:16
这样的,LOADER是写在FLASH的最后空间256字节,作用是接收软件下载的BOOT程序,
而BOOT实际是在软件中下载到RA ...

请问Boot怎么提取出来的?编译后以后翻译成二进制代码复制出来?

使用特权

评论回复
33
way2888|  楼主 | 2015-6-11 20:49 | 只看该作者
奔牛滚滚 发表于 2015-6-8 10:13
请问Boot怎么提取出来的?编译后以后翻译成二进制代码复制出来?

在IAR软件仿真中,COPY RAM的数据就可以了

使用特权

评论回复
34
gyh974| | 2015-6-11 21:27 | 只看该作者
楼主高人啊,可否发一下相关源代码吗?我的邮箱是502903740@qq.com

使用特权

评论回复
35
Thor9| | 2015-6-11 21:29 | 只看该作者
感谢分享

使用特权

评论回复
36
way2888|  楼主 | 2015-6-11 22:03 | 只看该作者
gyh974 发表于 2015-6-11 21:27
楼主高人啊,可否发一下相关源代码吗?我的邮箱是502903740@qq.com

源码也发上来了,在顶楼

使用特权

评论回复
37
LZJ361155817| | 2015-9-2 14:07 | 只看该作者
楼主您好!非常感谢您的分享。我是新手菜鸟,关于您这个bootloader工程有个问题要向您请教。您说bootloader只占用了高字节的256字节。我用STVD把loder.hex载入,最高地址256字节的确是有。但是发现0x8000到0x8150这部分也有代码。我看了源码,不知道这部分到底是哪部分代码编译出来的?另外,如果我想要把APP工程和bootloader工程都做在一个工程里面,该如何实现呢‘?
还请前辈指导!非常感谢!

使用特权

评论回复
38
way2888|  楼主 | 2015-9-2 22:26 | 只看该作者
多出来的部分是IAR的初始化程序,可以忽略,只要0x8000的前4字节,因为这是跳转到最高256字节处的跳转指令,你要APP和Bootloader合并可以用软件打开你的APP后选择hex合并就可以了

使用特权

评论回复
39
way2888|  楼主 | 2015-9-2 22:27 | 只看该作者
LZJ361155817 发表于 2015-9-2 14:07
楼主您好!非常感谢您的分享。我是新手菜鸟,关于您这个bootloader工程有个问题要向您请教。您说bootloader ...

多出来的部分是IAR的初始化程序,可以忽略,只要0x8000的前4字节,因为这是跳转到最高256字节处的跳转指令,你要APP和Bootloader合并可以用软件打开你的APP后选择hex合并就可以了

使用特权

评论回复
40
LZJ361155817| | 2015-9-4 10:49 | 只看该作者
way2888 发表于 2015-9-2 22:27
多出来的部分是IAR的初始化程序,可以忽略,只要0x8000的前4字节,因为这是跳转到最高256字节处的跳转指 ...

谢谢!一大早登上论坛,看到前辈您的回复非常开心!您的代码非常高效好用,您对底层的了解一定非常透彻并且熟悉汇编指令的。我认真看了您MCU端的代码,不知道以下的理解是否正确?还麻烦您指正。
1:存在高256字节的bootloader只是纯粹接受串口数据(即引导代码)到buf区(buf区是定义在RAM中的)。以0xccdd为开始的连接命令开始存到buf,收到0xaacc结束指令后则运行这部分引导代码。
问题:这部分引导代码就是您boot文件夹工程里面生成的吗?现在你的上位机是直接固定发的?举个例子,如果我要改下协议里面指令定义和对应的响应定义,我是需要改上位机来改这部分引导代码,烧录时发到RAM中实现的?

2:我发现每次IAP烧录后,在这最高256字节的bootloader代码中的靠后部分,都会有几个字节发生改变。除了写的标志字节0xa5之外,还有两个字节改变了。这个是为什么呢?

3:我所说的”想要把APP工程和bootloader工程都做在一个工程里面“,其实是想loader这部分代码直接作为APP工程代码的一部分,只要直接编译一个工程,就生成集合bootloader功能和APP功能的一个hex文件。是否有可行方案?

4:您没有详细描述bootloader工程和上位机之间的通讯协议文档。例如通讯流程,指令定义和对应响应定义。如果您能稍作描述,相信对于我这种菜鸟更快速深入理解您的bootloader工程有很好的指导作用。

非常感谢前辈的分享和指正,相信后面还有很多问题需要向您请教!麻烦您了!谢谢!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则