[STM8]

STM8S103/003的迷你bootloader来了!更新swim下载功能~

[复制链接]
20522|84
手机看帖
扫描二维码
随时随地手机跟帖
zepanwucai|  楼主 | 2013-11-28 21:11 | 显示全部楼层 |阅读模式
本帖最后由 zepanwucai 于 2013-12-9 09:46 编辑

/*** 2013.12.8 更新 ***/
周六花了一天捣鼓出来了 SWIM接口下载功能~
现在可以用STM8 给 STM8 烧录flash了, 可以无穷地“克隆”下去~
已经上传源码至github,在 Apps / bootDownloader中,可以直接在STM8 Launcher中编译下载~
目前实现的简单功能是:已有hairBoot的ST-Node下载了该应用程序后,可以通过GPIO口模拟SWIM时序,将自己flash里的hairBoot烧录至没有hairBoot的新芯片中,使之能够通过STM8 Launcher串口下载。
源码中已经提供了SWIM操作的底层接口函数,感兴趣的朋友可以在此基础上完成全功能的swim接口下载器~
PS:该应用只是随手写的,需要严格按照操作步骤执行才能下载,更改上电或者复位顺序就可能下载失败。。欢迎网友继续完善,提交至github。


开发简记:先通读"STM8 SWIM communication protocol and debug module", 并用逻辑分析仪抓取ST-LINK的烧写波形。
然后就是用汇编码出关键的GPIO模拟SWIM时序,因为对时序要求比较高,只能一条条指令抠周期(本来想用PWM,不过切换阈值的时候还是要抠周期,索性全用GPIO模拟了);
再用逻辑分析仪查看实际波形,微调汇编指令;最后实际烧录测试,简单修正bug。


下一步计划:STM8 Launcher加入电容式触控库支持~

/*** 2013.12.2 更新 ***/
STM8 Launcher 源码已发布至 https://github.com/Zepan/STM8-Launcher  ,欢迎围观&评星~
新增对intel hex格式的简单支持(今晚随手补充的,只适用于最普通的情况。。有兴趣的朋友可以在我的框架上继续完善~)
下一步计划:编写基于stm8的简易swim接口下载器  

/*** 2013.11.28原帖 ***/
   STM8s103/003系列的片子大家肯定都玩过或听说过,8KB的Flash,1KB的RAM,若干EEPROM,还有UART/SPI/IIC/ADC/WDG/TIM/Beeper等常用外设,TSSOP20封装的只要不到2元,真乃居家旅行,日常DIY的上佳选择!
    不过其唯一的缺点就是STM8S小容量产品系列没有片载IAP(16KB以上flash的才有),所以新片无法直接进行串口IAP烧写固件,这对没有仿真器的朋友造成了困扰。

    如果直接移植的官方bootloader,其大小达到了3KB,且用户程序从第4KB开始,也就是说占用了一半的flash空间,这对于stm8小容量系列芯片太过浪费
    因此我特地编写了精致的0.5K bootloader用于stm8小容量系列芯片的串口下载,除去中断向量表的话,代码部分只有300多字节~
        该bootloader命名为hairBoot(毛发级轻量),代码是开源的,与固件一起已上传至github,顺求路过的童鞋点颗星~也欢迎大家改进~

        hairBoot不是参考官方IAP例程写的,通信协议针对代码尺寸做了优化,所以不兼容官方下载程序,需要自己开发上位机程序进行烧录。在云概念泛滥的时代,我选择了chrome app的形式编写了hairBoot的上位机程序,无论你的电脑是windows还是linux还是mac,只要装了chrome浏览器就能使用STM8 Launcher下载固件到stm8中:victory:~

        大家只要在chrome apps商店搜索STM8 Launcher,或者直接点击这里就能下载使用STM8 Launcher了~

        STM8 Launcher不仅是一个IAP下载工具,既然用到了串口,我也顺便在这基础上做了串口助手的功能:P

       当然上面这些还称不上“云”,仅是一些前端化工作而已。。
       我在一些论坛上经常看到坛友为安装IDE,“和谐”之,再搭建工程结构,引入库函数等费一番功夫,要是安装IDE,搭建工程这些事情能够自动完成就好了。
       所以,我在上面的基础上又集成了STM8S代码编辑编译功能~

       没错,STM8 Launcher自带一个简单的代码编辑器,具有简易的库函数/变量/关键字 补全提示,括号自动闭合,代码折叠等功能,以eclipse代码样式显示~
       然后代码编译功能当然无法用简单的js实现,同时也为了降低对安装IDE的电脑配置要求,我将编译功能放在了我的linux服务器上。在服务器上,我已经配置好了工程结构,引入了STM8S官方库函数V2.0和自编库函数(这个还有待各位同好一起完善)。你需要做的仅仅是编辑好代码,然后按下编译按钮,STM8 Launcher就会将代码发送到云端服务器,由云端服务器编译,如果编译通过就会返回下载使用的镜像,否则返回警告和错误信息。
       当然如果你已经安装了本地IDE,同样也可以使用STM8 Launcher下载程序,只需将code起始地址改为0x8200,也就是从第512字节开始。
        详细的STM8 Launcher使用帮助见这里

界面.jpg

      另外,使用过官方库的童鞋肯定都有这样的感受:ST的官方库虽然功能完备,但是对于适用小容量系列的轻型应用来说还是挺冗余的(参数多,分支判断多:dizzy:),即使有函数补全提示,但是具体参数意义/使用还是要查手册。所以STM8 Launcher又附带了一个github项目,即自建库函数及应用demo,这个目前还很不完善,只是上传了我以前使用的一些封装而已,也希望大家能一起帮忙完善:)
地址在这里
        最后欢迎大家试用STM8 Launcher(顺便给STM8 Launcher点个五星..),有什么疑问或者bug都可以提交给我~ :)

       有stm8s103/003最小系统板的朋友只需刷入hairBoot,没有的话可以点此留言购买,这是以前项目打样剩下的(本来是作WPAN节点,不过当最小系统板用也很不错:P),还有几十片,我可以统一焊接发放。如果需要的数量多的话,我会根据反馈改版重新打样或者小批量生产。
       PS:求加精~
P1010219.JPG



评分
参与人数 3威望 +8 收起 理由
mousebat04 + 1 很给力! 大神能走在官方的前面
liuhaob + 1 很给力!
icecut + 6 高手啊.
grant_jx| | 2013-11-28 21:26 | 显示全部楼层
不错

使用特权

评论回复
kklbbc| | 2013-11-29 09:34 | 显示全部楼层
赞一个

使用特权

评论回复
gaochy1126| | 2013-11-29 12:23 | 显示全部楼层
赞一个的。

使用特权

评论回复
副BAN主就是我| | 2013-11-29 15:53 | 显示全部楼层
技术贴,赞一个,收藏一下。

使用特权

评论回复
zhangqijing9118| | 2013-11-29 17:52 | 显示全部楼层

使用特权

评论回复
fei| | 2013-11-29 20:55 | 显示全部楼层
似乎很强大

使用特权

评论回复
abin0415| | 2013-11-29 22:10 | 显示全部楼层
MARK

使用特权

评论回复
火箭球迷| | 2013-11-30 10:07 | 显示全部楼层
这个比较给力

使用特权

评论回复
yybj| | 2013-11-30 10:14 | 显示全部楼层
一直都非常鼓励原创

使用特权

评论回复
dong_abc| | 2013-11-30 10:34 | 显示全部楼层
这个很给力。

使用特权

评论回复
hsbjb| | 2013-11-30 10:48 | 显示全部楼层
原创作品很不错

使用特权

评论回复
秋天落叶| | 2013-11-30 10:57 | 显示全部楼层
这个相当给力

使用特权

评论回复
sinadz| | 2013-11-30 11:05 | 显示全部楼层
一直都很欣赏原创作品

使用特权

评论回复
ytfdhb| | 2013-11-30 20:14 | 显示全部楼层
试一下去,
谢谢分享^_^

使用特权

评论回复
地瓜patch| | 2013-11-30 22:20 | 显示全部楼层
这个可以有,低价高性能,有优势

使用特权

评论回复
2008雨声| | 2013-11-30 23:01 | 显示全部楼层
这个帮顶上           

使用特权

评论回复
Z赤心木QW| | 2013-12-1 22:07 | 显示全部楼层
感谢楼主无私分享!!

使用特权

评论回复
有缘于你| | 2013-12-2 08:59 | 显示全部楼层
赞一个        

使用特权

评论回复
bivib| | 2013-12-2 17:47 | 显示全部楼层
很牛,不过ST-LINK才几十块,没必要用IAP下载吧

使用特权

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

本版积分规则

15

主题

180

帖子

6

粉丝