使用 ESP-Prog / Jlink 进行 JTAG 调试时的常见错误及解决办法

2023-11-02

此篇博客用来记录使用 ESP-PROG / Jlink 来对 ESP32-Lyrat 进行 JTAG 调试时遇到的一些问题以及解决办法。如果对进行 JTAG 相关操作有疑惑,请参考以下资料:

1. Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND

此错误出现的原因是设备没有被找到,相关 log 如下 :

openocd -f interface\ftdi\esp32_devkitj_v1.cfg -f board\
esp32-wrover-kit-1.8v.cfg
Open On-Chip Debugger  v0.10.0-esp32-20200309 (2020-03-09-11:51)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
adapter speed: 9600 kHz

Warn : Interface already configured, ignoring
Info : Configured 2 cores
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Error: libusb_open() failed with LIBUSB_ERROR_NOT_FOUND
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6010, description '*', seri
al '*' at bus location '*'
Error: no device found
Error: unable to open ftdi device with vid 0403, pid 6014, description '*', seri
al '*' at bus location '*'

Assertion failed!

Program: C:\Users\example\.espressif\tools\openocd-esp32\v0.10.0-esp32-20200309\ope
nocd-esp32\bin\openocd.exe
File: src/jtag/core.c, Line 343

Expression: jtag_trst == 0

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

解决办法如后续 1.1 及 1.2。

1.1 检查硬件连线是否正确

JTAG 调试需要连接的引脚为 MTDO、MTDI、MTCK、MTMS 与 GND。以调试 ESP32 为例,ESP-Prog 与 Jlink 需要连接的引脚对应关系如下。

在这里插入图片描述

1.2 检查 JTAG 调试的驱动是否正确

如果硬件连线完全正确,则说明是驱动未正确安装,以 Windows 为例,在接入 ESP-Prog 后,打开 设备管理器(右击 我的电脑-> 左击 属性 -> 界面左上角可查看到 设备管理器) ,显示如下。
在这里插入图片描述
此时需要使用 zadig 来安装正确的驱动,zadig 的下载链接点击 这里。安装完成后,打开 zadig,在 zadig 界面里点击 Options -> List All Devices,如下。
在这里插入图片描述

选择 Dual RS2332-HS(Interface 0),然后点击 Install DriverReplace Driver(如果你有类似驱动,则会像下图一样显示 Replace Driver),如下。
在这里插入图片描述
在这里插入图片描述
zadig 提示驱动安装完成后,可以再次点开设备管理器(右击 我的电脑-> 左击 属性 -> 界面左上角可查看到 设备管理器),发现驱动已经被正确安装。如下。
在这里插入图片描述
然后重新使用 OpenOCD 即可发现此错误已消失。关于 Interface 0Interface 1 的介绍请查看此博客第五节。

2. Error: JTAG scan chain interrogation failed: all ones

此错误出现的原因基本是 JTAG 需要的 GPIO 口异常(比如被复用等),相关 log 如下 :

./bin/openocd -s share/openocd /
/scripts -f interface/jlink.cfg -f board/esp32-wrover.cfg
Open On-Chip Debugger  v0.10.0-esp32-20190708 (2019-07-08-11:03)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter speed: 9600 kHz
adapter speed: 20000 kHz
Info : Configured 2 cores
esp32 interrupt mask on
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : J-Link V9 compiled Jul 19 2017 16:11:45
Info : Hardware version: 9.70
Info : VTarget = 3.332 V
Info : Reduced speed from 20000 kHz to 15000 kHz (maximum).
Info : Reduced speed from 20000 kHz to 15000 kHz (maximum).
Info : clock speed 20000 kHz
Error: JTAG scan chain interrogation failed: all ones
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32.cpu0: IR capture error; saw 0x1f not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Listening on port 3333 for gdb connections

解决方法:此时需要检查 JTAG 对应的 GPIO 口是否被其他功能定义与使用(比如 SDIO 等)。
以 ESP32_Lyrat 开发板为例,JTAG 对应的 GPIO 口为 GPIO12 至 GPIO15。 这几个 GPIO 同时被用作 SDIO。如果要进行 JTAG 调试,需要拨动对应的拨码开关,将拨码开关 3-6 拨至 ON,如下
在这里插入图片描述
在这里插入图片描述
完成上述操作后再进行 JTAG 调试,此错误已经消失。

注:ESP32 在使用 AT 固件时再进行 JTAG 调试,也会因为 GPIO 冲突而导致上述错误,具体信息请参考此博客第五节。

3. Error: JTAG scan chain interrogation failed: all zeroes

此错误出现的原因与第二点相同,基本是 JTAG 需要的 GPIO 口异常(比如被复用等),相关 log 如下 :

./bin/openocd -s share/openocd/scripts -f interface/jlink.cfg -f board/esp32-wrover.cfg
Open On-Chip Debugger  v0.10.0-esp32-20190708 (2019-07-08-11:03)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
adapter speed: 9600 kHz
adapter speed: 20000 kHz
Info : Configured 2 cores
esp32 interrupt mask on
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : J-Link V9 compiled Jul 19 2017 16:11:45
Info : Hardware version: 9.70
Info : VTarget = 3.338 V
Info : Reduced speed from 20000 kHz to 15000 kHz (maximum).
Info : Reduced speed from 20000 kHz to 15000 kHz (maximum).
Info : clock speed 20000 kHz
Error: JTAG scan chain interrogation failed: all zeroes
Error: Check JTAG interface, timings, target power, etc.
Error: Trying to use configured scan chain anyway...
Error: esp32.cpu0: IR capture error; saw 0x00 not 0x01
Warn : Bypassing JTAG setup events due to errors
Info : Listening on port 3333 for gdb connections

解决方法同第二点,在这里不多做赘述。

4. Error: No symbols for FreeRTOS

此错误出现的原因是因为没有进行相关软件配置,相关 log 如下 :

./bin/openocd -s share/openocd/scripts -f interface/ftdi/esp32_devkitj_v1.cfg -f board/esp32-wrover.cfg
Open On-Chip Debugger  v0.10.0-esp32-20190708 (2019-07-08-11:03)
Licensed under GNU GPL v2
For bug reports, read
	http://openocd.org/doc/doxygen/bugs.html
none separate
adapter speed: 20000 kHz
Info : Configured 2 cores
esp32 interrupt mask on
Info : Listening on port 6666 for tcl connections
Info : Listening on port 4444 for telnet connections
Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"
Info : clock speed 20000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : esp32: Debug controller 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Debug controller 1 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 1 was reset (pwrstat=0x5F, after clear 0x0F).
Info : Listening on port 3333 for gdb connections
Info : esp32: Debug controller 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 0 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Debug controller 1 was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core 1 was reset (pwrstat=0x5F, after clear 0x0F).
Info : accepting 'gdb' connection on tcp/3333
Error: No symbols for FreeRTOS
Info : Target halted. PRO_CPU: PC=0x400E568C (active)    APP_CPU: PC=0x400E568C 
Info : Target halted. PRO_CPU: PC=0x400916EE (active)    APP_CPU: PC=0x400E568C

解决方法:如果是使用 ST 系列产品,请参考 ST-LINK No symbols for FreeRTOS
如果是其他开发板,暂时还没有找到解决办法,但是此 Error 应该不影响 JTAG & GDB 调试,可以暂时忽略此错误,或参考 ST 资料自行进行类比配置。

5. Warn : Empty flash mapping!

此错误出现的原因是因为没有找到,相关 log 如下 :

Open On-Chip Debugger 0.10.0-dev (2018-11-05-04:10)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
adapter speed: 100 kHz
esp32 interrupt mask on
jaylink: Failed to open device: LIBUSB_ERROR_NOT_SUPPORTED.
Info : No device selected, using first device.
Info : J-Link V9 compiled Aug 23 2018 09:45:44
Info : Hardware version: 9.10
Info : VTarget = 3.301 V
Info : clock speed 100 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : Target halted. PRO_CPU: PC=0x400873E9 (active)    APP_CPU: PC=0x40080ED7
Info : accepting 'gdb' connection on tcp/3333
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Warn : Empty flash mapping!
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Info : Auto-detected flash size 4096 KB
Info : Using flash size 4096 KB
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Warn : Empty flash mapping!
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Info : Using flash size 0 KB
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Warn : Empty flash mapping!
Info : Target halted. PRO_CPU: PC=0x4009171A (active)    APP_CPU: PC=0x40080ED7
Info : Using flash size 0 KB

解决方法:首先确保 JTAG 引脚没有被其他功能所占用,然后在这里可以尝试使用 mon program_esp32 <file.bin> <address> 命令代替 load,比如在 gdb 调试终端里输入以下指令即可上传 blink.bin 固件:

(gdb) mon program_esp32 blink.bin 0x10000

Openocd 端指令可以参考 jtag debug command
同时这也可能是不合适的引导程序和/或分区表引起的。最好将 bootloader.bin烧录在 0x1000,将分区表二进制文件烧录在 0x8000

注:如果做出以上修改后仍然出现此问题,请将 OpenOCD 更新到最新版。

6. Failed to get flash maps (-1)!

此错误出现的原因是使用了错误的 openocd 版本,相关 log 如下 :

Open On-Chip Debugger 0.10.0-dev (2018-07-24-09:39)
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
Info : auto-selecting first available session transport "jtag". To override use 'transport select '.
esp32 interrupt mask on
adapter speed: 3000 kHz
Info : No device selected, using first device.
Info : J-Link V10 compiled Oct 9 2015 20:36:39
Info : Hardware version: 10.10
Info : VTarget = 3.322 V
Info : clock speed 3000 kHz
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : Target halted. PRO_CPU: PC=0x40000400 (active) APP_CPU: PC=0x40000400
cpu0: Current bits set: BreakIn BreakOut RunStallIn
cpu1: Current bits set: BreakIn BreakOut RunStallIn
Info : JTAG tap: esp32.cpu0 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
Info : JTAG tap: esp32.cpu1 tap/device found: 0x120034e5 (mfg: 0x272 (Tensilica), part: 0x2003, ver: 0x1)
cpu0: Current bits set: BreakIn BreakOut RunStallIn
cpu1: Current bits set: BreakIn BreakOut RunStallIn
Info : esp32: Debug controller was reset (pwrstat=0x5F, after clear 0x0F).
Info : esp32: Core was reset (pwrstat=0x5F, after clear 0x0F).
Info : Target halted. PRO_CPU: PC=0x5000004B (active) APP_CPU: PC=0x00000000
Info : esp32: Core was reset (pwrstat=0x1F, after clear 0x0F).
Info : Target halted. PRO_CPU: PC=0x40000400 (active) APP_CPU: PC=0x40000400
** Programming Started **
auto erase enabled
Info : Target halted. PRO_CPU: PC=0x4009170E (active) APP_CPU: PC=0x40000400
Error: Failed to get flash maps (-1)!
Error: Failed to get flash mappings (-4)!
Error: auto_probe failed
** Programming Failed **
shutdown command invoked

出现此问题,可以尝试更新 openocd 版本至最新的 release

相关参考

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ESP-Prog / Jlink 进行 JTAG 调试时的常见错误及解决办法 的相关文章

  • [笔记] Unikernel原型:Docker镜像秒变虚拟机镜像以及无ssh开terminal调试

    现如今docker run各种流行 可是虚拟机并没有消退 有没有办法把镜像部署成一个虚拟机来个暂时的转换呢 有没有好办法在没有ssh的container上可以开个terminal进行调试呢 其实很简单 docker save就可以把整个镜像
  • Mrosoft visual c++6.0打开文件未响应,快速解决。【最新办法,初学者都会】

    1 下载filetool的vc6 0的辅助工具 下载地址 http download microsoft com download vc60ent s1 6 0 w9xnt4 en us filetool exe 快速下载filetool
  • 全网最简洁的mpy-cross教程

    大家知道我一向精干 不喜欢搞花儿的 如果去mpy官网看mpy cross的相关资料 估计又得绕蒙 跟我来 保证你三分钟学会 但是本文不涉及原理 第一 mpy cross是干嘛滴 答 把py文件转成mpy系统读的mpy文件 术语咱不懂 叫交叉
  • esp32 CMT130-V1.0 PS 240*240屏幕使用方法实验

    1 安装好Arduino 1 8 13 注意尽量不要大于1 8的版本 2 安装esp32驱动代码并且配置 3 esp32选择波特率 921600 4 选择频率 80MHZ 5 具体连线总结 6 需要在Arduino库管理中心下载TFT eS
  • 解决 windows 下浏览器无法上网,QQ/微信正常上网

    解决 windows 下浏览器无法上网 QQ 微信正常上网 解决 windows 下浏览器无法解析DNS配置 gt 注意 本处只 提供一种解决思路 并不代表所有问题都能被解决 可以尝试一下 这种问题 一般在浏览器中会 直奔主题 原因 1 查
  • 开发工具之 Snipaste(超级截图工具)

    snipaste工具是一款开源免费的超级截图工具 这里小编强烈推荐此工具的使用 前言 当你使用ALT TAB习惯性的来回切屏的时候 其实在这个过程中 仔细想想是不是比较累 这样子做久了很容易导致疲劳 所以小编强推贴图功能 好了废话不多说 直
  • 个人sublime配色方案

    文章目录 1 效果图 2 描述文件 1 效果图 2 描述文件 color scheme Packages Color Scheme Default Monokai tmTheme font face Consolas font size 1
  • esp32-S3专题二:内存1之RAM使用

    esp32 S3模块内部的存储分为ROM RAM SPRAM RTC内存 FLASH 种类很多 几乎可以不使用外接存储器的情况下 可以进行很多业务场景 十分有用 现在我们逐一讲解一下他们的作用和使用方法 一 ROM 384 KB 内部 RO
  • 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)

    文章目录 前言 硬件电路 原理图 PCB 焊接调试 待优化和改进的地方 资料下载 历史精选 前言 好久没更新博客和公众号了 感谢大家还没取关哈 好吧 我承认是我太懒了 今天分享一个福利 趁着前段时间嘉立创和捷配打价格战 一天之内 多次降价
  • SimpleFOC无刷电机平衡小车

    前言 本科毕业于自动化 期间学习了各种电机运动控制原理 自动控制原理 但是只会考试而未究其理 最近接触到simplefoc这个基于arduino的开源无刷电机驱动库 想正好借此机会将本科学到的内容用于实际 于是就有了这个小项目 基于无刷电机
  • ESP32-AT指令学习笔记

    目录 前言 一 硬件和软件准备 二 使用步骤 1 下载固件 2 接线 总结 前言 针对 ESP32 芯片 实现了一些常用的 AT 指令集 链接地址为 ESP32 AT指令集 该指令集可用于用户 MCU PC 同 ESP32 进行交互 也适用
  • ESP32学习笔记05-串口事件方式读取数据

    串口中断方式处理数据 事件机构体 typedef struct uart event type t type lt UART event type size t size lt UART data size for UART DATA ev
  • Git使用(3)常见报错

    仅限于当时当地情况下的处理方式 不代表所有情况 Q Refusing to fetch into current branch refs heads master of non bare repository A 在当前分支下fetch g
  • Jupyter Notebook:简介

    目录 Getting Up and Running With Jupyter Notebook 安装 启动 Jupyter Notebook 服务器 Creating a Notebook 命名 运行细胞 菜单 启动终端和其他东西 查看正在
  • 分发使用自动模块的 JavaFX 应用程序

    我创建了一个 JavaFX 应用程序 它在我的 Intellij IDE 中完美运行 现在我想分发该应用程序 即我想获得一个用户可以下载的安装程序 然后它会为他们安装该应用程序 我发现一篇关于此的非常有趣的文章here https walc
  • java.security.NoSuchAlgorithmException:算法 x25519 不可用

    我收到这段代码的 javax net ssl SSLException 连接重置 ReadableByteChannel rbc Channels newChannel url getInputStream 但仅当在使用 Open JDK
  • 使用什么 ffmpeg 命令将无符号整数列表转换为音频文件?

    我有一个文件 其中包含大约四万个整数的列表 这些整数以空格分隔 每个整数的值都在 0 到 255 之间 这里是这个文件 https github com johnlai2004 sound project blob master integ
  • 使用 Jlink 在一个平台上为另一个平台创建 Java 运行时映像

    我在 Linux 机器上使用 jlink 创建了运行时映像 我明白了linux文件夹下的include文件夹 这是否意味着我只能在 Linux 平台上使用此运行时映像 如果是 是否有任何方法可以在一个平台上为另一个平台创建运行时映像 例如
  • “找不到 jar 文件系统提供程序”尝试使用 jdeps 和 jlink 创建收缩 Java 映像来运行 Minecraft

    我正在尝试使用以下命令创建一个收缩 Java 映像来运行 Minecraft 1 20 1 客户端jdeps and jlink 即只需要运行 Minecraft 所需的最少 Java 模块 但是我遇到了错误 我希望得到一些指导 这就是我所
  • jlink 打包当前平台的二进制文件

    我正在尝试构建使用 Java 11 构建并打包的应用程序的跨平台档案jlink 对于跨平台打包 我的构建基于这个答案 https stackoverflow com questions 47593409 create java runtim

随机推荐

  • 传统网络配置命令与ip高级路由命令学习示例(转)

    传统网络配置命令与ip高级路由命令学习示例 转 more 传统网络配置命令与ip高级路由命令学习示例 by KindGeorge 2005 5 9 懂得网络配置命令是一般技术人员必备的技术 经过一段时间的研究和学习 总结了一些常用的命令和示
  • MapReduce之KNN算法

    MapReduce之KNN算法 什么是 K K K 邻近算法 KNN KNN分类问题是找出一个数据集中与一个给定查询数据点最近的 k k k个数据点 这个操作也称KNN连接 定义为 给定两个数据集
  • svn清除不成功的解决办法(cleanup失败)

    使用工具 sqlite3 exe 32位下载地址 https download csdn net download songxinfeng1989 10500196 64位下载地址 https download csdn net downl
  • FreeRTOS软件定时器创建、复位、开始和停止(备忘)

    目录 一 简介 1 1 开发环境 1 2 摘要 二 STM32CubeIDE配置 三 创建定时器 3 1 头文件声明 3 2 工程文件定义 3 3 创建定时器 3 4 开启 复位 和关闭定时器 四 定时器回调函数 一 简介 1 1 开发环境
  • js调用摄像头拍照并兼容ie浏览器

    不会吧不会吧 现在都2023年了竟然还有人在用ie浏览器 文章内容有点长 耐心看完 基本上能遇到的问题 都记录在这里了 问题1 调用摄像头并兼容ie浏览器 用户调用摄像头一般使用navigator mediaDevices 在ie浏览器这个
  • Netty客户端断线重连实现及问题思考

    前言 在实现TCP长连接功能中 客户端断线重连是一个很常见的问题 当我们使用netty实现断线重连时 是否考虑过如下几个问题 如何监听到客户端和服务端连接断开 如何实现断线后重新连接 netty客户端线程给多大比较合理 其实上面都是笔者在做
  • ::和.的区别

    作用域运算符 和 成员运算符 的区别 这是在看 运算符的作用时产生的疑问 有三个作用 1 全局作用 2 类作用 3 名称空间 1和3不多说 在2中 其说明是 作用域符号 的前面一般是类名称 后面一般是该类的成员名称 C 为了避免不同的类有名
  • Keil-MDK解决“Error: Encountered an improper argument”问题

    Keil MDK解决 Error Encountered an improper argument 问题 ARM官方问题描述及解决办法 https developer arm com documentation ka004382 lates
  • android环境配置

    JDK配置 JRE问题 Windows 打开PowerShell 进入JDK目录 执行 bin jlink exe module path jmods add modules java desktop output jre 环境变量 系统环
  • [STM32F10x] 利用定时器测量脉冲宽度

    硬件 STM32F103C8T6 平台 ARM MDk V5 11 前面一篇文章讲过如何利用定时器测量信号的频率 见 STM32F10x 利用定时器测量频率 使用的是定时器的捕获 比较单元 Capture compare 它也可以测量输入信
  • JDBC中的几个常见问题

    JDBC中的几个常见问题 1 JDBC中的Statement和PreparedStatement CallableStatement的区别 2 JDBC中大数据量分页的解决方法 3 事务 4 execute executeQuery exe
  • VS Code 格式化后 自动让函数名后有空格

    fetchCommentCount 像这样fetchCommentCount和 之间有空格 这是我们的目标 return 只需要在Vscode设置文件Settings中加入以下两句 vetur format defaultFormatter
  • 使用yum命令不能安装mysql的问题(No package mysql-server available. Error: Nothing to do)

    问题 这是因为本地yum仓库中没有对应的mysql包 所以在安装之前先要配置rpm包 这里使用的是mysql5 7的rpm rpm ivh https repo mysql com mysql57 community release el7
  • char类型的大小范围

    要知道char类型的大小范围 首先要知道char类型占1个字节 而1个字节等于8个bit位 每一个bit位是一位二进制数 所以char类型有8个二进制位 那么就有2的8次方256种可能 我们先讨论 signed char 有符号 首位是符号
  • IOS键盘的相关设置(UITextfield)

    http blog sina com cn s blog 7018d3820101djut html 一 键盘风格 UIKit框架支持8种风格键盘 typedef enum UIKeyboardTypeDefault 默认键盘 支持所有字符
  • Java基础笔记(初学者适用)

    目录 一 Java主函数解析 二 Java学习注意事项 三 JDK和JRE的区别 1 jdk 开发环境 核心 2 jre 运行环境 3 JVM 转换环境 四 常见转义字符 五 变量 1 变量介绍 2 变量细节 3 作用域 4 数据类型 1
  • 粤嵌实训(笔记)

    目录 1 LCD换自己喜欢的颜色 2 LCD换个图案 3 LCD换张图片 4 网线登录 ifconfig eth0 192 168 5 9 5 触屏电子相册 6 网络编程 TCP通信 7 网络编程 UDP通信 8 开发板串口通信MCU 32
  • 二叉树与二叉搜索树的理解

    树 tree 是一种抽象数据类型 ADT 用来模拟具有树状结构性质 它是由n n 0 个有限节点通过连接它们的边组成具有层次关系的集合 把它叫做树是因为它看起来像一棵倒挂的树 也就是说它是根朝上 而叶朝下的 树由多种 一个节点有两个以上子节
  • 快速训练ai作画模型的python代码

    感谢你的问题 如果你想快速训练一个 AI 作画模型 你可以使用开源的深度学习框架 例如 TensorFlow PyTorch 或 Keras 这里是一个基于 TensorFlow 的示例代码 它使用了一种叫做 CycleGAN 的生成对抗网
  • 使用 ESP-Prog / Jlink 进行 JTAG 调试时的常见错误及解决办法

    此篇博客用来记录使用 ESP PROG Jlink 来对 ESP32 Lyrat 进行 JTAG 调试时遇到的一些问题以及解决办法 如果对进行 JTAG 相关操作有疑惑 请参考以下资料 使用 ESP Prog 进行 JTAG 调试 使用 J