当前位置: 首页 > news >正文

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

一、USB升级流程

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

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升级流程

从如下图中的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.lryc.cn/news/441773.html

相关文章:

  • golang操作mysql利器-gorm
  • 09 Shell Scriptfor循环结构语句
  • 【Java】并发集合
  • 活动邀请|景联文科技与您相约华为全联接大会2024
  • 周边游|基于springBoot的周边游平台设计与实现(附项目源码+论文+数据库)
  • 【编程基础知识】mysql是怎样执行一条sql语句的,涉及到哪些环节步骤是,mysql的整体体系结构是啥样的,有哪些组件
  • 如何上传tauri项目到csdn gitcode
  • 【速成Redis】02 Redis 五大基本数据类型常用命令
  • UnLua扩展C++函数和蓝图自定义事件
  • 干耳屎硬掏不出来怎么办?质量最好的可视挖耳勺推荐
  • 谷歌 Chrome 最新版升级:更强的安全检查功能守护你的上网安全
  • 深度学习自编码器 - 收缩自编码器(CAE)篇
  • Dubbo与SpringCloud的区别和优缺点
  • ★ C++进阶篇 ★ 多态
  • pg入门3—详解tablespaces2
  • python 爬虫 selenium 笔记
  • git分支管理的一些常用规范
  • GPT-4论文阅读
  • this 指向
  • 【贪心算法】贪心算法一
  • windnd.hook_dropfiles中的create_buffer值太小无法拖放长文件名
  • Gitlab runner的使用示例(二):Maven + Docker 自动化构建与部署
  • QNX Hypervisor(十)Linux Guest IPC 二
  • 怎样把PPT上顽固的图标删了
  • 【论文阅读】Slim Fly: A Cost Effective Low-Diameter Network Topology 一种经济高效的小直径网络拓扑
  • Prometheus使用Pushgateway推送数据
  • 【Oracle】调优与oracle最大连接数配置
  • Unity教程(十六)敌人攻击状态的实现
  • ​图像超分辨率(ISR)​
  • 园区网基础组网保姆级(mstp,vrrp,irf,eth-trunk,route-policy,ospf,bgp,rbm,nat,mlag等等)