前言
上位机的操作比较繁琐,我是通过SecureCTR软件实现Xmodem协议进行下载,目前我还没有发现SecureCTR怎么发送字符串,所以我用了其他串口软件进行发送字符串指令。
一、BIN文件生成
目前下载器仅支持bin文件下载,MDK可以生成bin文件,在配置里面添加fromelf --bin --output .\F103_Temp\F103RB.bin .\F103_Temp\F103_Temp.axf然后打上前面的勾。由于工程结构每个人都不一样,所以(fromelf --bin --output 想要生成的bin文件相对路径 axf文件的相对路径)。需要添加你的axf文件的相对路径 ,以及生成以后的bin文件存放路劲./表示当前路径, …/表示上一路径,相对路径是从你的工程目录开始的。大家不懂得可以去搜索一下MDK生成bin文件。axf文件路径添加不对是无法生成bin文件的。
二、SecureCTR
下载安装SecureCTR
SecureCTR
打开软件后点击+号创建一个串口
然后选择要创建的端口号,这个端口号就是你的USB转串口,选择正确才能正确通信,可以插拔一下USB看看是哪个端口,其他配置默认点击下一步即可创建成功
进入软件后先配置下载选项
之后只需要检查是否文件传输是Xmodem的128字节就行了(默认配置就是)
之后双击串口端口号就能打开,前提是下载器已经连接到了电脑。
然后点击Transfer中的sendxmodem选项发送要下载的bin文件。
以上是SecureCTR的串口操作,像要正确将程序发送过去,还需要点击键盘上的1或2选着下入1区(大小为1M字节)或者2区(1M字节)
通过点击键盘上的3可以设置下在目标MCU的型号,目前仅支持打印的STM32的型号,目前还没有发现SecureCTR怎么发送字符串,我是通过其他的传串口软件设置的型号。
通过点击键盘上的4可以查询当前设置的MCU型号
三 硬件原理图
硬件上我使用PC0和PC1模拟的SWD协议进行程序下载,速度不是太快,有四个指示灯,3个按键,一个用来复位MCU,一个用来选择1区或者2区的程序进行下载,一个是下载按键,点击即可进行下载,当蜂鸣器快速滴2声,证明下载失败,滴一声下载成功。
下载算法添加
和下载算法相关的就三个函数,只需要将设置的MCU的型号通过参数传给这三个函数就行,大家只需要将生成的.c下载算法添加进去,然后添加到函数里面就行。
uint8_t user_target_flash_init(uint32_t Flash_Start,uint8_t fire_ver)目标MCU的FLASH初始化函数
uint8_t user_target_flash_erase_sector(uint32_t Flash_Start,uint8_t fire_ver)目标MCU的擦除函数
uint8_t user_target_flash_program_page(uint32_t Flash_Start,uint8_t* buf,uint32_t size,uint8_t fire_ver)下载函数
总结
以上代码仅供大家参考,目前还有很多的地方需要优化,比如:换主频更高的芯片,提高下载速度,添加文件系统更容易管理下载的文件,将串口改成更为方便的USB,以及添加下载加密等等。