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

devtools/2024/11/14 3:26:44/

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/devtools/116049.html

相关文章

【中国留学网-注册_登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 暴力破解密码,造成用户信息泄露短信盗刷的安全问题,影响业务及导致用户投诉带来经济损失,尤其是后付费客户,风险巨大,造成亏损无底洞…

【第十六章:Sentosa_DSML社区版-机器学习之异常检测】

【第十六章:Sentosa_DSML社区版-机器学习之异常检测】 机器学习异常检测是检测数据集中的异常数据的算子,一种高效的异常检测算法。它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根…

基于单片机的智能小车的开发与设计

摘要:本文论述了基于 STC89C52 单片机的智能小车的开发与设计过程。该设计采用单片机、电机驱动及光电循迹等技术,保证小车在无人管理状态下,能按照预先设定的线路实现自动循迹功能。在电路结构设计中力求方便,可操作,…

Anaconda3-2021.11-Linux-x86_64.sh: line 399: TMP: unbound variable

文章目录 背景解决办法 背景 一般大家是不会遇到这个问题的。我这是因为服务器的驱动程序太老了,所以必须换老版本的Anaconda,然后在安装的时候就出现了文章标题的报错。 安装的时候,我的命令是: sh -u Anaconda3-2021.11-Linu…

Redis面试真题总结(四)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ AOF 持久化? AOF(Append Only File&#x…

【网络安全】学过编程就是黑客?

前言 黑客,相信经常接触电脑的朋友们对这个词都不陌生,各类影视视频中黑客总是身处暗处,运筹帷幄,正是这种神秘感让我走向学习编程的道路,也正是如此让我明白黑客远没有我想象中那么“帅气”。 黑客 💻 黑…

使用Go语言的互斥锁(Mutex)解决并发问题

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在并发编程中,由于存在竞争条件和数据竞争,我们需要将某些代码片段设定为临界区,并使用互斥锁(Mutex)等同步原语来保护这些临界区。本文将详细介绍Go语言标准库中Mutex的使用方法,以及如何利用它来解决实际…

C++学习笔记----7、使用类与对象获得高性能(二)---- 理解对象生命周期(7)

13、对象赋值 就像在c中可以将一个int值赋给另一个,也可以将一个对象赋值给另一个对象。例如,下面的代码将MyCell的值赋值给anotherCell: SpreadsheetCell myCell { 5 }, anotherCell; anotherCell myCell; 你可能会说是myCell被“拷贝”给了anotherCe…