MTK zephyr平台:USB升级、枚举流程

news/2024/9/22 14:45:57/

USB_0">一、USB升级流程

通过代码及log分析,当前平台升级过程在PL阶段进行

USB_download_3">USB download相关代码

mtk/modules/hal/boot/preloader/platform/flashc/

mtk/modules/hal/boot/preloader/platform/board_name/flash/

mtk/modules/hal/boot/preloader/platform/board_name/src/drivers/usb/da/

USB_10">USB升级流程

从如下图中的main()进入PL阶段,完成对USB/PCIe初始化,

但当前PL阶段只支持USB下载模式,由brom_flags传入com_interface.init_uart以及com_interface.init来初始化Uart和USB com port,如下:

初始化时,经过USB_Config_Type()等操作,最终将USB在Host上枚举表现为COM Port,这样就可以将USB数据转换为串行数据格式,并呈现给操作系统和应用程序,就像连接了一个实际的串行设备一样。因此,从应用程序的角度来看,与CDC ACM设备的交互就像是与一个标准的串行端口交互,提供了向后兼容性和简化了Host Tool开发流程。

通过download log及上述代码逻辑来看,平台上电后都会先出download serial port,使用UsbTreeView获取该端口信息如下:

=========================== USB Port3 ===========================Connection Status        : 0x01 (Device is connected)
Port Chain               : 1-3
Properties               : 0x01IsUserConnectable       : yesPortIsDebugCapable      : noPortHasMultiCompanions  : noPortConnectorIsTypeC    : no
ConnectionIndex          : 0x03 (Port 3)
CompanionIndex           : 0CompanionHubSymLnk      : USB#ROOT_HUB30#4&2dd382eb&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}CompanionPortNumber     : 0x13 (Port 19)-> CompanionPortChain   : 1-19========================== Summary =========================
Vendor ID                : 0x0E8D (MediaTek Inc.)
Product ID               : 0x2000
USB Version              : 2.1
Port maximum Speed       : High-Speed (Companion Port 1-19 supports SuperSpeed)
Device maximum Speed     : SuperSpeed
Device Connection Speed  : High-Speed
Self powered             : yes
Demanded Current         : 500 mA
Used Endpoints           : 4======================== USB Device ========================+++++++++++++++++ Device Information ++++++++++++++++++
Friendly Name            : PreLoader USB VCOM (Android) (COM94)
Device Description       : PreLoader USB VCOM (Android)
Device Path 1            : \\?\USB#VID_0E8D&PID_2000#5&3aa1a3bd&0&3#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
Device Path 2            : \\?\USB#VID_0E8D&PID_2000#5&3aa1a3bd&0&3#{86e0d1e0-8089-11d0-9ce4-08003e301f73} (GUID_DEVINTERFACE_COMPORT)
Kernel Name              : \Device\USBPDO-4
Device ID                : USB\VID_0E8D&PID_2000\5&3AA1A3BD&0&3
Hardware IDs             : USB\VID_0E8D&PID_2000&REV_0100 USB\VID_0E8D&PID_2000
Driver KeyName           : {4d36e978-e325-11ce-bfc1-08002be10318}\0074 (GUID_DEVCLASS_PORTS)
Driver                   : \SystemRoot\system32\DRIVERS\usb2ser.sys (Version: 3.0.1504.0  Date: 2015-01-22  Company: MBB)
Driver Inf               : C:\WINDOWS\inf\oem80.inf
Legacy BusType           : PNPBus
Class                    : Ports
Class GUID               : {4d36e978-e325-11ce-bfc1-08002be10318} (GUID_DEVCLASS_PORTS)
Service                  : wdm_usb
Enumerator               : USB
Location Info            : Port_#0003.Hub_#0001
Address                  : 3
Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(3), ACPI(_SB_)#ACPI(PCI0)#ACPI(XHC_)#ACPI(RHUB)#ACPI(HS03)
Container ID             : {f816d467-5468-11ef-8d99-005056c00008}
Manufacturer Info        : MediaTek
Capabilities             : 0x84 (Removable, SurpriseRemovalOK)
Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
Problem Code             : 0
Power State              : D0 (supported: D0, D3, wake from D0)
COM-Port                 : COM94 (\Device\cdcacm1)+++++++++++++++++ Registry USB Flags +++++++++++++++++
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\0E8D20000100osvc                    : REG_BINARY 00 0

http://www.ppmy.cn/news/1528857.html

相关文章

【C++二叉树】二叉树的前序遍历、中序遍历、后序遍历递归与非递归实现

1.二叉树的前序遍历 144. 二叉树的前序遍历 - 力扣(LeetCode) 前序遍历方式:根-左子树-右子树。 递归实现: 要传一个子函数来实先递归,原因是原函数返回值为vector,在原函数迭代,返回值就难…

gin配置swagger文档

一、基本准备工作 1、安装依赖包 go get -u github.com/swaggo/swag/cmd/swag go get -u github.com/swaggo/gin-swagger go get -u github.com/swaggo/files2、在根目录上配置swagger的路由文件 //2.初始化路由router : initialize.Routers()// 配置swaggerdocs.SwaggerInfo…

Spark SQL性能优化高频面试题及答案

目录 高频面试题及答案1. 如何通过分区(Partitioning)优化Spark SQL查询性能?2. 什么是数据倾斜(Data Skew)?如何优化?3. 如何使用广播(Broadcast)优化Join操作?4. 如何优化Spark SQL的Shuffle操作?5. 如何通过缓存(Cache)优化Spark SQL的性能?6. 如何使用合适的…

网络丢包定位记录(二)

网卡驱动丢包 查看:ifconfig eth1/eth0 等接口 1.RX errors: 表示总的收包的错误数量,还包括too-long-frames错误,Ring Buffer 溢出错误,crc 校验错误,帧同步错误,fifo overruns 以及 missed pkg 等等。 …

python qt5 常用

QT5中如何设置让窗口根据屏幕比例显示设置? desktop QDesktopWidget().screenGeometry() self.resize(int(desktop.width() * 0.3), int(desktop.height()*0.5)) QT5中关于背景穿透问题的处理方式? 场景如下:我们在开发的时候&#xff0c…

无人机集群路径规划:麻雀搜索算法(Sparrow Search Algorithm, SSA)​求解无人机集群路径规划,提供MATLAB代码

一、单个无人机路径规划模型介绍 无人机三维路径规划是指在三维空间中为无人机规划一条合理的飞行路径,使其能够安全、高效地完成任务。路径规划是无人机自主飞行的关键技术之一,它可以通过算法和模型来确定无人机的航迹,以避开障碍物、优化…

MAC 安装 nvm

在Mac上安装NVM(Node Version Manager)可以通过多种方法实现,以下是两种常用的安装方法: 方法一:使用Homebrew安装(推荐) Homebrew是macOS的包管理器,通过它可以方便地安装和管理各…

【STM32 笔记】STlink/v2中SWD模式连线方式

STlink/v2中SWD模式连线方式 STlink/v2中SWD模式连线方式