本帖最后由 wdwd 于 2014-6-13 22:30 编辑
将ST-LINK V2改造成脱机编程器,keil MDK代码。
支持hex和s19格式文件,直接将文件打包到到STM32芯片里,Flash和EEPROM的数据一起烧写;
支持ROP, 支持自动烧录和烧录次数限制(采用FLASH模拟EEPROM记录次数)。
hex或s19格式文件放到src目录,将bootload.s的代码中downloader.hex改为要烧写的文件名,需要重新编译下载;
最大次数由main.c的前面定义:
#define MAX_PRGNUM (10000+200) //烧录次数
#define MAX_ONNUM (3*365) //开关机次数
我的ST-LINK V2是淘宝买的最便宜14.5元的那种,实际用的是STM32F101RBT6芯片,属于超频72MHz使用的;
但有2个指示灯控制,如果只有单LED的注意修改指示方式:
#define GPIO_GRN_PIN GPIO_Pin_8 //wdwd.PA.8 *不是标准版*
#define GPIO_RED_PIN GPIO_Pin_9 //wdwd.PA.9
只测试过STM8S003, 其它芯片需要修改块的大小在platform_config.h中定义:
#define PAGEBLOCK 64
代码受益于其它开源代码,这里一并谢过。
(注:没有用到USB, 代码没有打开,无需上位机软件 )
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
用标准的/山寨的ST-LINK V2硬件,原理图你网上找很多的;
代码是在whimsy的基础上改的,
他的原来用USB下载文件的,相关USB文件没有删去,保留在src目录;
秉承whimsy的开源精神。参考的代码还有SimonQian的和yanggexiaosa的,和半壶水的EEPROM。
固件下载进STM32,下载好能自动烧写STM8S003的,USB用于加电不用电脑;
输出管脚定义按st-link V2的 REST SWIM GND 5V/3V接STM8S芯片即可。
谢谢楼主分享
请问楼主,有没有高速的办法可以实现校验?重新读出来比较很费时间呀
整片擦除,能否利用芯片本身的功能,先读保护,然后再解除保护,这样不就清除了吗?
低速与高速相差的时间(22-10)/8MHz=1.5us/bit, 10*8K*1.5us=120ms,
加上校验相差240ms, 不是很多的。实际操作不影响的。
SWIM协议可以实现高速和超高速的烧录。有兴趣的坛友自己增加2~3条指令可以实现。
一周热门 更多>