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相关文章:
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/drive…...
golang操作mysql利器-gorm
1、傻瓜示例 GORM通过将数据库表中的数据映射到面向对象的模型中,简化了数据库操作,使得开发者可以很方便的使用代码来操作数据库,而无需编写SQL语句。 目前有个mysql表:miniprogram_orders,其存储了所有用户对应的订…...
09 Shell Scriptfor循环结构语句
Shell Scriptfor循环结构语句 一、Shell FOR循环语句概述 属于shell的符合语句 可以看出帮助信息给出了两种语法 [rootlocalhost ~]# help for for: for NAME [in WORDS ... ] ; do COMMANDS; doneExecute commands for each member in a list.The for loop executes…...
【Java】并发集合
并发集合(java.util.concurrent) 一、List CopyOnWriteArrayList(ReentrantLock实现线程安全) (1)并发修改(写操作)时保证线程安全: 通过ReentrantLock实现多个线程并…...
活动邀请|景联文科技与您相约华为全联接大会2024
2024年9月19-21日,第九届华为全联接大会(简称:HUAWEICONNECT2024)将在上海世博展览馆和上海世博中心举办。 作为华为的旗舰盛会,本次大会以“共赢行业智能化”为主题将邀请思想领袖、商业精英、技术专家、合作伙伴、开发者等业界同仁…...
周边游|基于springBoot的周边游平台设计与实现(附项目源码+论文+数据库)
私信或留言即免费送开题报告和任务书(可指定任意题目) 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 在如今社会上,关于信息上面的处理,没有任…...
【编程基础知识】mysql是怎样执行一条sql语句的,涉及到哪些环节步骤是,mysql的整体体系结构是啥样的,有哪些组件
一、步骤 MySQL执行一条SQL语句的过程涉及多个环节和步骤。以下是这一过程的概述: 客户端连接:客户端通过连接器(Connector)向MySQL服务器发起连接请求。身份验证:连接器对用户身份进行验证,确保用户有权…...
如何上传tauri项目到csdn gitcode
如何上传tauri项目到csdn gitcode 首先保证项目目录有.gitignore,避免不必要的文件上传分享。 gitignore文件 # Logs logs *.log npm-debug.log* yarn-debug.log* yarn-error.log* pnpm-debug.log* lerna-debug.log*node_modules dist dist-ssr *.local# Editor …...
【速成Redis】02 Redis 五大基本数据类型常用命令
前言: 上一节课,我们对redis进行了初步了解,和安装好了redis。【速成Redis】01 Redis简介及windows上如何安装redishttps://blog.csdn.net/weixin_71246590/article/details/142319358?spm1001.2014.3001.5501 该篇博客,我们正…...
UnLua扩展C++函数和蓝图自定义事件
一、通过BlueprintImplementableEvent标记扩展C函数 1、 这个标记表示C不需要实现,让蓝图/Lua重写。 2、首先在C中将LuaImp函数标记为BlueprintImplementableEvent,不需要实现,然后再GetIndex中调用该函数。 MyBaseActor.h UFUNCTION(Bluepr…...
干耳屎硬掏不出来怎么办?质量最好的可视挖耳勺推荐
很多干耳的小伙伴都会用普通耳勺来掏耳朵。由于普通耳勺由于其盲操作的特性,对于耳道非直线结构的清理存在诸多不便。所以市面上出现了可视挖耳勺,让我们清晰的看到自己耳道,更加安全的清洁耳朵。,可视挖耳勺这款产品在市场上越来…...
谷歌 Chrome 最新版升级:更强的安全检查功能守护你的上网安全
谷歌 Chrome 浏览器产品经理 Andrew Kamau 在最新发布的博文中宣布,Chrome 浏览器迎来了新一轮的安全升级。新版 Chrome 在后台自动运行安全检查功能,采取了额外的主动措施来保障用户的安全。 自动撤销通知权限 新版 Chrome 浏览器采用了一项基于谷歌安…...
深度学习自编码器 - 收缩自编码器(CAE)篇
序言 在深度学习的浪潮中,收缩自编码器( Compressive Autoencoder, CAE \text{Compressive Autoencoder, CAE} Compressive Autoencoder, CAE)作为自编码器的一种高级形式,正逐步崭露头角。收缩自编码器在保留自编码器核心功能—…...
Dubbo与SpringCloud的区别和优缺点
经常会有同学问我,Dubbo和SpringCloud的选择。甚至也经常会有面试官就这个问题刨根问底。 说实话,其实我不太喜欢回答这个问题,本质上来讲,Dubbo的SpringCloud可以算是完全不同赛道的两种东西,就好像问大家西瓜和土豆我…...
★ C++进阶篇 ★ 多态
Ciallo~(∠・ω< )⌒☆ ~ 今天,我将继续和大家一起学习C进阶篇第二章----多态 ~ ❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️❄️ 澄岚主页:椎名澄嵐-CSDN博客 C基础篇专栏:★ C基础篇 ★_椎名澄嵐的博客-CSDN博客 …...
pg入门3—详解tablespaces2
pg默认的tablespace的location为空,那么如果表设置了默认的tablespace,数据实际上是存哪个目录的呢? 在 PostgreSQL 中,如果你创建了一个表并且没有显式指定表空间(tablespace),或者表空间的 location 为…...
python 爬虫 selenium 笔记
todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式,速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式,速度快很多。 option Options() o…...
git分支管理的一些常用规范
一、分支命名规范 1.通常项目经理或者需求方会给需求开发做计划,约定一些编码,例如FN-01。此时这个需求指派给你,这个时候你可以在现有代码仓库的maser分支或者其他约定的开发分支checkout到本地,命名这个需求的开发分支为feat/F…...
GPT-4论文阅读
GPT-4 Technical Report论文阅读 文章目录 GPT-4 Technical Report论文阅读 Abstract训练的稳定性Training processPredictable scaling训练的稳定性多么难能可贵 Capabilities考试成绩传统的benchmark语言方面的能力Visual inputsSteerability LimitationsRisks & mitigat…...
this 指向
this 指向谁? 多数情况下,this 指向调用它所在方法的那个对象。 说得更通俗点,谁调的函数,this 就归谁。当调用方法没有明确对象时,this 就指向全局对象。在浏览器中,指向 window;在 Node 中,指向 Global。(严格模式下,指向 undefined) this 的指向是在调用时决定的…...
Java集成LibreOffice实现高效Office文档批量转PDF方案
1. 为什么选择LibreOffice进行文档转换 在企业日常办公中,我们经常需要处理大量的Office文档。想象一下这样的场景:财务部门每月要生成上百份报表,人力资源部门要处理大量简历,而市场部门则需要频繁修改和分享各种方案文档。这些文…...
OpenClaw+Qwen3.5-9B:个人知识库自动更新系统
OpenClawQwen3.5-9B:个人知识库自动更新系统 1. 为什么需要自动化知识管理 作为一个长期使用Obsidian管理个人知识库的用户,我经常面临一个痛点:收集的资料越来越多,但整理的时间却越来越少。每天订阅的几十个RSS源、技术博客和…...
网络协议封神考点:TCP协议是如何保证可靠传输的?原理+流程图+硬核详解
网络协议封神考点:TCP协议是如何保证可靠传输的?原理流程图硬核详解一、前言二、基础定义:什么是TCP可靠传输?三、TCP保证可靠传输的6大核心机制(必考)3.1 机制1:面向连接(三次握手 …...
告别繁琐手工操作:工资条生成器使用指南
对于许多财务人员来说,每月制作工资条都是一项让人头疼的工作。 手工制作不仅要花费大量时间,还容易出现各种错误,影响工作效率和准确性。 今天,我们就来详细介绍一款能够彻底改变这种状况的工具——工资条生成器。 工资条生成…...
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配
S7-200 MCGS 基于PLC的小型水厂恒压供水系统 带解释的梯形图接线图原理图图纸,io分配,组态画面最近在搞一个小型水厂的恒压供水系统项目,用西门子S7-200 PLC搭配MCGS组态软件,效果挺有意思的。这个系统核心就仨字——稳如狗&#…...
《Foundation 网格 - 大型设备》
《Foundation 网格 - 大型设备》 引言 在当今科技日新月异的时代,大型设备在各个领域都扮演着至关重要的角色。其中,Foundation 网格作为一项创新技术,正在逐渐改变着我们的生产方式和生活质量。本文将深入探讨Foundation 网格的特点、应用以及未来发展趋势。 一、Founda…...
AGX Orin 部署PyTorch生态:从JetPack适配到torchvision编译避坑指南
1. AGX Orin开发环境初始化 刚拿到AGX Orin开发套件时,很多开发者会直接开始安装PyTorch,但往往忽略了基础环境配置的重要性。我去年在部署一个工业质检项目时就踩过这个坑——当时为了赶进度跳过了JetPack版本检查,结果导致后续torchvision编…...
夸克网盘自动化助手:彻底告别手动转存的智能管理方案
夸克网盘自动化助手:彻底告别手动转存的智能管理方案 【免费下载链接】quark_auto_save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark_auto_save 还在为每天重复的夸克网盘转存操作而…...
use Yii;的本质的庖丁解牛
use Yii; 这行代码,常被误解为“引入了一个类”或者“为了少打几个字”。 但本质上,它是 Yii 框架(尤其是 Yii2)架构哲学的“图腾”。 它标志着 Yii 选择了一条与 Laravel、Symfony 截然不同的道路:将核心功能暴露为一…...
水下图像增强,水下增强,失真矫正,矫正复原含讲解复现,含代码注释,程序一看就懂。
水下图像增强,水下增强,失真矫正,矫正复原 含讲解复现,含代码注释,程序一看就懂。...
