1.主要实现功能:完成对HEX和DFU文件的烧写,显示烧写的进度等功能
2.开发工具:Qt creator4.9.0
3.开发系统平台:windows系统和linux系统两套平台
4.具体开发步骤:
1)设计整体的界面,包括文件选择界面(dfu和hex文件),擦除和烧写环形进度界面,烧写成功界面
2)由于在公司的电脑系统安装的是linux系统,因此首先考虑的linux平台的开发,移植dfu-util库。
3)移植完成了dfu-util库之后,工具支持了dfu文件的烧写,hex文件的烧写移植了ST官网的hex文件转dfu文件的工具源码(MFC编写的)
4)移植成功后,基本上完成了linux上烧写工具的开发,支持hex/dfu文件烧写,支持环形进度条显示。
5)把Linux系统上的代码移植到windows上面,由于Qt支持跨平台开发,所以需要修改的只是关于libusb相关的方面
6)window系统上USB通信有两种方式,一种是利用libusb-win32库+USB驱动,另一种是利用windows提供的一些列API(如SetupDiEnumDeviceInterfaces等),我开发选择的是第一种(其实是第二种没走通,源码可以参考ST固件烧写工具中的烧写DFU工具)
5.参考源码:
1)dfu-util:http://dfu-util.sourceforge.net(linux)
2)libusb-win32:https://sourceforge.net/projects/libusb-win32/
(windows,这个是libusb0.1分化出来的项目,后来只有维护,所有接口和libusb不太相同)
3)libusb:https://github.com/libusb/libusb/releases(windows和linux好像都可以)
4)QRoundProgressBar:https://sourceforge.net/projects/qroundprogressbar/(windows/linux)
5)ST固件烧写工具:可以自行去ST官网下载(windows,ST的开发工具好像在windows10系统上不太兼容,源码测试的时候一直卡死)
6.参考博客:
1)环形进度条:https://blog.csdn.net/czyt1988/article/details/53422274
2)libusb-win32接口介绍:https://blog.csdn.net/menghun_99/article/details/80634892
3)libusb-win32下的工具介绍:https://blog.csdn.net/weixin_39794563/article/details/79039284
4)libusb-win32连接验证:https://blog.csdn.net/gaoszzzz/article/details/81982384
5)Linux下的libusb库移植开发:https://blog.csdn.net/u012247418/article/details/82960889
6)window下的libusb开发介绍:http://www.joenchen.com/archives/1360
7.libusb-win32驱动工具安装:
1)usb驱动:https://sourceforge.net/projects/libusb-win32/ 安装包里面的/bin/inf-wizard,这个会识别系统的设备,安装完成之后在设备管理器里面可以发现,原来的串口设备被识别成了libusb-win32的端口了,在电脑的系统库中发现libusb0.sys和libusb0_x86.dll已经安装。
2)libusbK下载:https://sourceforge.net/projects/libusbk/ 上面一个功能也可以在这个工具里面完成,安装第二个第三个就行,具体原因参考博客6)
8.开发过程中遇到的问题:
1)libusb是1.0的接口,而libusb-win32的接口是0.1版本的,因此在找设备的过程中libusb是通过libusb_init(libusb_context*)而libusb-win32是通过三个函数usb_find_bus,usb_find_device,usb_init三个函数同时执行才能获取到设备。
2)MFC系统上的BOOL类型是int,DWORD类型是unsigned long(4个字节大小,而不是8个字节,32位系统)移植HEX到DFU代码转换的时候,即MFC到QT时吃了大亏。
9.项目总结:
1)遇到问题找寻资料,看看有没有人做过,如果有人做过,我们就可以直接借鉴移植(跑通功能是第一步,然后再是看代码),效率和成果才是关键。
2)移植的过程中,要多想多思考多观察。不要想当然。
3)查看源码时,从大到小,先框架后具体,可以减轻自己很大的工作量。

linux/windows上STM32固件烧写工具的开发demo相关推荐

  1. Rockchip RK3588 Android平台固件烧写工具汇总

    Rockchip RK3588 Android平台固件烧写工具汇总 文章目录 Rockchip RK3588 Android平台固件烧写工具汇总 开发工具AndroidTool桌面版 适用场景 功能列 ...

  2. ESP8266 快速入门(一):通过机智云平台 20 分钟实现开关与 adc 接口的电压测量功能(包含 ESP8266 固件烧写教程)

    ESP8266 入门:使用机智云快速实现开关与 adc 接口的电压测量(包含固件烧写教程) 0. 需要准备的材料 硬件部分: 软件部分: 1.机智云的账号注册与 SOC 方案创建 2.对下载的机智云代 ...

  3. 【TI-mmWave】一、IWR6843ISK-ODS毫米波雷达【固件烧写和上手使用】流程

    文章目录 基础知识 上手使用 1.USB串口驱动 2.UniFlash 项目需要,使用TI的IWR6843ISK-ODS这款毫米波雷达,记录一下自己摸索和上手的过程~ 在探索过程中,参考了 https ...

  4. ESP8266机智云固件烧写和app连接

    1准备材料 1.USB转TTL(驱动得安装) 2.ESP8266(我这个是乐鑫) esp8266引脚说明 3.ESP8266固件烧写工具 4.ESP8266 Flash固件库 5.机智云串口调试助手 ...

  5. micropython开发stm32 nucleo固件烧写

    micropython使用thonny编辑器开发单片机,把视图的文件点出来,那比写服务器程序还爽.固件官方也越来越广泛,具体可以查询https://micropython.org/download/a ...

  6. 系统烧写方法(MfgTool烧写工具)

    目录 MfgTool 工具简介 MfgTool 工作原理简介 USB接线 系统烧写原理 烧写NXP 官方系统 烧写自制的系统 系统烧写 网络开机自启动设置 改造我们自己的烧写工具 改造MfgTool ...

  7. 【开源共享】全网最简单易用的imx6ull烧写工具设计初衷工作原理设计前的思考

    在线课堂:https://www.100ask.net/index(课程观看) 论  坛:http://bbs.100ask.net/(学术答疑) 开 发 板:https://100ask.taoba ...

  8. micropython8266ota_[Micropython]TPYBoardV102 Dfu固件烧写教程

    TPYBoardv10x固件烧写一直是大家比较关心的问题,上次教大家用SWD接口烧写TPYBoard的固件,这次教大家用另一种方式烧写我们TPYBoardv10x的固件,直接用dfu模式烧写固件. 用 ...

  9. opencv4.4.0函数手册_【文档更新】发布100ask_imx6ull用户手册V2.0和全新烧写工具

    疫情期间,韦东山团队在家办公丝毫没有松懈,一直在写文档,答疑等. 下面给读者们公布阶段性成果: 一.发布<100ask_imx6ull用户手册 入门篇_V2.0 >: 添加更多烧写方法.更 ...

最新文章

  1. 赠书 | 成为一个多模型思考者,从掌握数据跃迁到拥有智慧
  2. Struts2 校验数据问题
  3. Vue实现仿音乐播放器7-实现音乐榜单效果
  4. python文件管理_超值的Python文件操作与管理!
  5. ES6入门之Generator函数
  6. Java面向对象基础接口和抽象的理解
  7. 【激活函数】PRelu激活函数
  8. 一步步实现 Redis 搜索引擎 1
  9. jQuery Mobile开发的新闻阅读器,适应iphone和android手机
  10. powshell的tree命令
  11. 【C语言】—— 通讯录
  12. 软件测试知识点 fiddler抓包教程
  13. “隔空播放”显示器只有“关闭”的原因
  14. NetBeans IDE12.3无法卸载
  15. Windows基础 主机加固
  16. 4核处理器_苹果电脑便宜卖!4核i5处理器,480G固态硬盘,带刻录,13.4寸,双系统...
  17. 【完结】囚生CYの备忘录(20221121-20230123)
  18. venn.diagram生成pdf图片
  19. 腾讯云服务器查看防火墙规则,腾讯云云防火墙的常见问题
  20. 敏涵控股集团贵族私人定制:一场探索美学的旅程

热门文章

  1. DataFrame.to_dict(orient='dict')英文文档翻译
  2. Mac再建管理员帐户
  3. 企业级应用与互联网应用的区别
  4. mysql联合索引与Where子句优化浅析
  5. JAVA多线程,真的能提高效率吗
  6. JAVA运算符和优先级
  7. HTTP协议具体解释
  8. node模块函数图解
  9. ASP.NET刷新页面的六种方法
  10. linux nuttx 环境搭建,ubuntu14.04 nuttx开发环境的搭建