第九章 USB 串行/JTAG 控制器控制台简介
当今现代嵌入式系统开发范围内,串口通信以及调试功能属于不可缺少的构成部分,ESP32 - P4芯片依靠内置的USB串行/JTAG控制器,让开发者的工作流程得以简化,将对外部USB - UART桥接芯片的需求给去除了,此控制器不但达成了高效的串口通信,还给出了强大的调试功能,致使开发、测试以及调优运行过程变得更为便捷,本章节会深入探究USB串行/JTAG控制器的功能、连接方式以及在实际开发里的应用,用以协助读者充分运用这一强大特性。
本章分为如下几个小节:
9.1 USB 串行/JTAG 控制器控制台概述
9.2 如何使用USB 串行/JTAG 控制器
9.1 USB 串行/JTAG 控制器控制台概述
ESP32-P4芯片集成了一个功能强大的USB串行控制器,还集成了一个功能强大的JTAG控制器,该模块能够用于对SoC的Flash进行编程,该模块能够用于读取程序输出,该模块能够用于将调试器连接到正在运行的程序。通过USB主机设备也就是以下简称的“主机”与ESP32-P4直接进行通信,实现这些功能不需要任何额外的外部组件。
以传统方式,运用UART以及JTAG功能,对ESP32 - P4项目展开调试,尽管这种做法具备一定可行性,可却是存在着如下这般的不足:
1)UART占用了IO引脚,JTAG也占用了IO引脚,这使得开发者可用于外设控制的引脚数量减少了。
,主机借助外部芯片从而有了与UART通信的行为呈现,并且主机通过外部适配器开展与JTAG通信的情况,这样的状况是存在的,而如此一来,额外的硬件设计复杂度就出现了增加的情形。
要解决上述那些问题,ESP32 - P4给出了USB串行/JTAG控制器,它集成了USB转串口以及USB转JTAG的功能。这个模块借助USB 2.0协议靠着仅有的两条数据线(D +和D -)跟主机展开通信,仅仅需要占用两根引脚便能够完成ESP32 - P4的调试工作。
USB串行/JTAG控制器具有以下功能特点:
1)USB全速设备(Full-speed)
硬件集成了,具备 CDC-ACM(通信设备类 - 抽象控制模型)功能,还集成了 JTAG 适配器功能。
2)CDC-ACM功能:
对于基于CDC - ACM标准的串口模拟予以支持,此串口模拟是即插即用的,并且和大多数现代操作系统相兼容,还提供了主机能够进行控制的芯片复位功能以及进入下载模式的能力。
3)JTAG适配器功能:
提供紧凑高效的JTAG指令表示,支持快速通信。
4)多种端点支持:
其中含有一个控制端点,即Control EP,还有一个虚拟中断端点,也就是Dummy int EP,另外有两个批量输入端点,为Bulk in EP,以及两个批量输出端点,是Bulk out EP,数据负载最大能够支持64字节。
5)集成物理层(PHY):
其内部集成了USB PHY,连接主机时,所需对外的部件极少,甚至能够省略。
下图是USB串行/JTAG控制器的模块组成。
图9.1.1 USB 串行/JTAG 控制器功能框图
如图所示,USB串行以及JTAG控制器,是由这些组件构成的:USB PHY,USB设备接口,JTAG命令处理器,USB Device Logic响应捕获单元,还有CDC - ACM寄存器。USB PHY以及设备接口,是被从基带PLL也就是BBPLL派生过来的48 MHz时钟驱动的;CDC - ACM模块里软件能够访问的那一部分,是由APB_CLK时钟驱动的。命令处理器的JTAG,连接到主处理器的JTAG调试单元,CDC-ACM寄存器,连接到APB总线,所以能被主CPU运行的软件,作出读写操作。
要注意的是,虽说USB串行/JTAG设备对USB 2.0标准予以支持,然而它仅仅支持全速模式(即12 Mbps),却不支持USB 2.0标准所引入的别的模式,像高速模式(也就是480 Mbps)。
ESP32芯片常常经由UART达成串口通信,还能够凭借外部USB - UART桥接芯片连接到主机或者PC上的串口控制台仿真器。可是,有USB串行/JTAG控制器的ESP32芯片,借助控制器的CDC - ACM部分能够直接跟主机/PC实现串口连接,不需要外部USB - UART桥接芯片。这种设计让连接过程得以简化,提升了系统的灵活性以及可靠性。
着眼于这一优势所在,ESP32 - P4芯片里面设置有USB串行控制器,同时还设有JTAG控制器,它能够以高效的状态达成串口通信功能,并且还能实现JTAG调试功能,进而能进一步削减对于外部USB - UART桥接芯片的依赖程度。借助于该控制器,用户能够便利地将ESP32 - P4连接到主机或者PC上,以此来开展各种操作以及调试工作。就如同下面所呈现的图示那样。
有一张图,其编号是9.1.2,其中展示的是,PC机跟ESP32 - PN借助USB来开展串口通信。
看得出,从上面那三幅图,PC机跟ESP32 - P4芯片双方之间的串口通信存在着三种连接方式。第一幅图呈现出,借助ESP32 - P4芯片自身内部的USB串行/JTAG控制器直接达成通信。第二幅图以及第三幅图展现的是,运用USB转UART模块去连接ESP32 - P4外设UART接口的两种方式,它们之间唯一存在的区别是:第二幅图所显示的是开发板之上集成起来的USB转UART电路,然而第三幅图呈现的却是一个独立的模块。便于用户运用这些功能,正点原子挑选了第一幅图以及第二幅图所展示的连接方式,这两种方式都能够切实有效地达成PC与ESP32 - P4芯片之间的串口通信,用户能够依照实际需求予以选择。
随后,笔者会讲述USB串行控制器的功能特性,以及JTAG控制器的功能特性,还会阐述USB串行控制器的硬件连接形式,以及JTAG控制器的硬件连接形式。
1,功能特点:
1)双向串行控制台,它具备支持和ESP-IDF监视器双向通信的能力,同时它也支持与其他串行监视器进行双向通信,如此一来方便用户去开展数据交互以及调试工作。
二)便捷烧录,借助 esptool.py、idf.py flash 命令,用户能够轻易地把程序烧录至 ESP32 - P4。
3)JTAG调试,借助OpenOCD等工具,用户能够进行实时调试,并且能保持串口通信。
2,硬件连接
将ESP32-P4与USB端口连接时,需注意以下引脚配置:
1)D+(绿线):连接至GPIO25或27。
2)D-(白线):连接至GPIO24或26。
3)GND(黑线):连接至地。
4)5V(红线):连接至电源供电。
提及USB串口/JTAG控制器的管脚选定,笔者给出的建议是采用默认的GPIO24/25号管脚。涉及这一部分的详尽知识,笔者于第二章节有着2.2.2小节,其中表2.2.2.1予以了讲解,此处便不再重复叙述了。
9.2 如何使用USB 串行/JTAG 控制器
于ESP - IDF的相关配置菜单里头,去挑选USJ_ENABLE_USB_SERIAL_JTAG该选项,如此一来便是启用USB串行 / JTAG控制器,情况如同下面所展示的图片那般。
图9.2.1 启用USB 串行/JTAG 控制器
在上电之后的 ESP32 芯片,USB - Serial - JTAG 模块有着那默认开启的情况。要是您所拥有的应用程序并不需要这个模块,并且不存在依赖它当作系统控制台或者用于进行 JTAG 调试的状况,您则能够去选择将此功能禁止。在实施了禁止这个动作之后,该模块的时钟会于启动之际被关闭掉,进而达成节约一些功耗的结果。
我们选择UART0端口当作主要输出端口,然而未连接,此时辅助选项支持借由其他特定端口输出,像USB串口、JTAG。要留意,当前辅助输出仅支持不采用REPL的非阻塞模式。要是您期望使用REPL,且在阻塞模式下输出,或者经由该辅助端口输入,就在“Channel for console secondary output”菜单里把主要配置改成该端口。这样可以确保正常的数据交互和调试体验,如下图所示。
图9.2.2 配置USB 串口/JTAG正常输出日志