linux/windows上STM32固件烧写工具的开发demo

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)查看源码时,从大到小,先框架后具体,可以减轻自己很大的工作量。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值