STM32 IAP工具

捣鼓了几天,用QT写了一个串口IAP工具。

使用前,需要将axf转换成bin文件。可以使用keil的fromelf来生产bin文件。然后载入文件并打开串口,按下载就可以了。

工具特点:将文件按1K为单位发送。不足1K,在末尾补全0xff至1K

按下面的格式传送

data_len_L data_len_H data(no more than 1K) index_L index_H CRC

2B数据长度

最多1KB的有效数据(真正的烧录数据)

2B的数据索引(表示接收/发送的数据是第几个1K)

4B CRC(预留)

做这个工具时,已经有一段时间没有用qt写过程序了。代码写起来挺凌乱的。而已,面向对象的思维不够深入。基本上当作c来写了。先上个图。

  

代码放到我的github上面了

STM32上的IAP可以看这个博文http://www.cnblogs.com/xiemm/p/3945668.html

时间: 2024-10-25 13:57:53

STM32 IAP工具的相关文章

ubuntu下stm32交叉工具链 构建过程1

说实话,这个过程将是十分折腾的过程,而且不一定成功,所以,我的很多朋友在听到我说要做这件事情的时候,都给我泼冷水. 但是,我还是想努力,因为这次我是下决心,非要反微软到底. 就算这个过程再难——我脑海里经常闪现起 勇敢的心 里 华伦士 最后受尽极性 仍然高喊 自由的情景. 我对自己说,也是激励自己:只有这样的人才有权利追求和获得自由. 这件事,难就难在我发现我光是为了获取一个可用的gcc编译器,在codesourcery codebench上下载下来都这么费劲. 我的网络速度相当快,但不知为什么

STM32+IAP方案 实现网络升级应用固件

关注了这个概念有些日子了,这段时间总算有机会实战==网络升级应用固件,这里记录下遇到的问题,及解决方案. 原理与网上流传的串口作为传输手段 一致:不同之处,无非我这里使用了网络设备传输.==(lwip)TFTP客户端的应用. 参考: IAR环境下STM32+IAP方案的实现 STM32浅谈之IAP.pdf 基于IAP和Keil MDK的远程升级设计 keil MDK中如何生成*.bin格式的文件 概况: 什么是IAP,为什么要IAP 可实现的原理 实现过程 细节及实现 以上基本都可以从[IAR环

STM32 IAP固件升级(三)

章节说明 STM32 IAP固件升级实验分为以下的章节(加粗的字体是本章节的内容): 一.Flash和RAM的区域划分.工程建立.程序分散加载.程序烧写 二.Stm32 bootloader.application.firmware 程序的分析和编写 三.使用DMA收发串口的不定长数据 四.通信协议的设计 五.STM32 IAP程序的设计 六.上位机的程序的编写 一.前言 前面介绍了IAP需要的一些基础知识,区域怎么划分,还有启动跳转过程等.当然如果需要实现IAP,通讯接口的驱动是不可或缺的.例

STM32 IAP在线升级在项目中的应用

IAP即在线应用编程,平时我们写好的程序都是通过下载器去下载的,但是对于组装好的产品在想更新底层硬件代码是很麻烦的事情,如果在公司情况还没那么糟糕,要是发出去的产品出现bug,你不可能要用户给你下载程序的.IAP这种技术,我们就可以像软件一样,可以实现远程更新了.我们需要做的就是,写FLASH读写接口,程序可以通过串口,网口等进行下发,然后内部调用FLASH写函数,把代码写到对于区域即可. 当然这只是一个大概思路,具体实现还是要注意很多细节的东西.网上也有好多关于这方面的教程,但是能用到项目中的

stm32 IAP + app的实现

基于STM32F407 的IAP+APP 已经全部实现,做个笔记. 1. 先准备boot  判断是否存在 APP,不存在就进入IAP模式等待有数据过来进行烧写. 2.boot 如果是接收 bin 文件数据,可以直接读bin 写入flash.  hex文件需要解析的. bin文件和hex 文件数据格式是有区别的. 3.如果boot准备好,那就准备一个上位机软件,读取bin文件并按包格式传送给boot(我暂时只打通了 uart 口.以后可以尝试一下usb). 4.APP 需要修改几个地方,第一个就是

stm32 IAP

IAP 1.接收APP程序数据,串口命令有两种,1是整包,2是散包(最后一个包): 2.进入跳转的条件: /* 程序已下载 由APP进入 超时 程序更新完成 A B C D 满足如下条件就会跳转: AB*+ABC+ABD A*D */ 超时:由APP进入的,但是串口通信突然中断了,程序还要继续运行下去,所以只能是,程序已下载的情况下,超过一定时间新程序还没下载完,就直接跳转 APP 1.魔术棒中设置程序启动的地址: 2.程序中设置中断向量表的新地址:   SCB->VTOR = FLASH_BA

QML中使用C++类的实现

之前用Qt写过串口的小软件.STM32 IAP工具 和 用qt写的一个简单到不能在简单的上位机 .后来接触了QML,觉得传统的那种界面太那个了,写样式也麻烦.所以很早就想过用QML来为串口上位机做界面.无奈没搞懂QML到底是如何去调用C++的.百度了一堆文章,多半是翻译官方的例子.不知所云.直到最近在csdn上看到一篇文章 Qt Quick 之 QML 与 C++ 混合编程详解 ,终于有点懂了.不过,文章似乎有点长了.博客园上面也有见过,有朋友写过类似的文章.今天,总算实现了QML访问一个自定义

在Linux下开发和调试STM32

因为最近需要做一些STM32的开发,而我大部分的其他开发都在Linux上,经常在Windows和Linux下切换感觉比较不方便,于是就研究了一下Linux下开发STM32的工具,顺便在这边做下记录. 使用的开发工具 软件平台: Eclipse Luna 下载:https://eclipse.org/downloads/packages/release/luna/sr2 用于安装System Workbench for STM32插件,建议下载Eclipse IDE for C/C++ Devel

STM32f4 ARM Bootloader

参考资料: 基于ARM 的嵌入式系统Bootloader 启动流程分析 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计) Android系统启动流程 -- bootloader 在main()之前,IAR都做了啥? STM32 IAP程序 源码 和测试代码 有详细的中文注释 基于STM32的IAP设计文档 基于IAP的STM32程序更新技术 STM32自学笔记 STM32 IAP的bootloader编程 stm32 Bootloader设