环境构建:VS2019+MSVC 编译 Dfu-Util

网络 网络管理
本文主要介绍windows 上的交叉编译,Linux 平台交叉编译,直接参考官网即可,难度不是很大。

[[414597]]

本文转载自微信公众号「漫谈嵌入式」,作者Vinson。转载本文请联系漫谈嵌入式公众号。

什么是DFU?

DFU,即 Device Firmware Upgrade, 也是属于 USB类协议。主要用于设备升级,常用于手机(IOS,安卓)以及电视盒子等。相对于CDC 串口或者RNDIS等,是一种比较快的USB传输方式。

DFU :需要进入USB DFU 模式,适合在bootloader阶段做升级。

CDC OTA:可以作为一种composite设备,一起运行。缺点是,可能会受带宽影响导致传输速度受限。

如何使用?

  • 设备:设备端需要支持DFU 模式
  • 主机:需要配套的DFU 主机工具比如开源的库 dfu-util, 直接使用或者二次开发。
  • 驱动:需要安装dfu 驱动, 可以通过 zading, 安装通用的驱动。

dfu-util 交叉编译

dfu-util 是USB 论坛的 DFU 1.0 和DFU 1.1规范的主机端实现 。DFU 旨在向/从通过 USB 连接的设备下载和上传固件。它的范围从微控制器板等小型设备到手机

本文主要介绍windows 上的交叉编译,Linux 平台交叉编译,直接参考官网即可,难度不是很大。

有关windows 交叉编译,目前有两种思路:

  • 使用 msys2 在windows 构建虚拟的linux 环境。MSYS2 + MinGW
  • 使用visual studio + mscv

准备

  • 编译环境:安装 Visual Studio 2019 community
  • dfu-util 源码:git clone git://git.code.sf.net/p/dfu-util/dfu-util
  • libusb:git clone https://github.com/libusb/libusb.git

项目工程调整

1. 调整工程文件为vs 2019

2. 修改 解决方案文件,dfu-util_2019.sln ,调整为2019

可以看到默认libusb 和 dfu-uilt 位于同级目录,也可以将libusb 合到dfu-util项目里面,不过需要修改相关头文件包含。笔者建议初次编译,不用修改项目引用路径。

3. libusb 项目工程

4. 用vs 2019 打开dfu-util_2019.sln

5. 修改外部引用

编译错误修改

1. off_t错误

解决:右键项目->属性->配置属性->C/C++ -> 预处理器-> 预处理器宏定义-> 编辑,新增_OFF_T_DEFINED 宏定义

2. 错误2:ssize_t 未定义

解决方法:包含libusb.h

3. 消除警告

解决方法:同错误1,定义宏_CRT_NONSTDC_NO_DEPRECATE

4. 错误3:SSIZE_MAX 未定义

SSIZE_MAX 是 POSIX 下的定义, 修改如下:

5. 错误4:无法解析头文件

解决方法:包含正确的头文件目录

6. 编译成功

编译总结

环境统一:git 下来的库是vs 2010工程,需要先修改成自己vs 的版本,具体版主version,新建一个空项目即可查看。

外部引用依赖:修改工程名后,项目之间引用关系可能会用问题,这时候需要移除,然后重新正确的添加引用。

头文件正确包含:主要是libusb.h 和 getopt.h

编译错误:高版本的IDE可能语法检查比较强,所以遇到错误和警告,不要慌,耐心解决就行。

对于getopt和libusb只需要编译一次即可,后续直接使用就行。

在成功编译后,我们可以根据需要,将控制台程序迁移到图形化的界面上,这样一个基本的DFU 主机升级工具就出来了。

总结

本文简单的介绍了什么是DFU,同时详细的介绍了,怎么使用 VS + MSVC 编译 dfu-util,记录一下整个调试过程。不得不说,还是linux 下的编译要方便多。不同的 vs 可能会有些许差异。对于做USB DFU 相关的朋友可以借鉴一下。

 

责任编辑:武晓燕 来源: 漫谈嵌入式
相关推荐

2020-09-18 06:44:57

MSVC微软C11

2009-12-01 11:01:39

交叉编译环境构建

2011-06-03 13:38:49

Android 开发环境

2009-12-16 09:40:19

VS环境

2019-05-24 09:59:10

VSLinux远程

2021-07-27 11:54:51

windows系统OpenHarmony

2021-05-12 07:59:30

Windows10操作系统微软

2021-12-02 10:05:01

鸿蒙HarmonyOS应用

2023-08-17 20:13:42

2020-10-21 09:58:50

鸿蒙OS编译环境VPS

2011-06-08 17:32:18

QT VS2008 开发环境

2009-12-16 11:16:03

VS 2005开发环境

2009-12-17 17:08:47

VS开发环境

2023-08-11 14:06:58

鸿蒙Windows

2011-03-09 16:16:57

CentOSLAMP

2013-07-29 14:23:55

Eclipse开发环境Eclipse开发环境

2013-05-07 09:38:24

云计算服务云计算成本云成本

2013-05-08 09:52:26

云计算服务租赁自主构建

2020-11-10 12:17:43

鸿蒙OS编译环境

2023-08-16 14:39:20

微服务Java
点赞
收藏

51CTO技术栈公众号