175|1

242

帖子

3

TA的资源

一粒金砂(高级)

楼主
 

TI TMDS62LEVM 测评01--烧录镜像并点灯 [复制链接]

 
烧录镜像
第一步,balenaEtcher 选择镜像文件
第二步,选择 SD 卡
第三步,现在烧录
校验失败
出错的 balenaEtcher 版本是 v1.19.21
balenaEtcher v2.1.4 重新烧写
上电运行
查看当前发行版类型
更新软件源
GPIO 翻转
点亮 LED
指示灯 LD9
指示灯 LD2
1. ❌LED 极性说明(从原理图可以看出)【不对啊,实测相反】
2. IO_EXP_TEST_LED 在 EVM 上的物理位置
3. 软件层控制 IO_EXP_TEST_LED(Linux)
4. I2C1 设备扫描
5. 创建 python 虚拟环境
安装 python-periphery 模块
🟢LD2 闪烁的python 代码
 
烧录镜像
第一步,balenaEtcher 选择镜像文件
第二步,选择 SD 卡
第三步,现在烧录
等待烧录完成
烧录完进行校验
校验失败
出错的 balenaEtcher 版本是 v1.19.21
balenaEtcher v2.1.4 重新烧写
烧写成功,果然需要把 balenaEtcher 升级到最新版本。
 
上电运行
 
xshell 串口登录
另一个终端使用 SSH 登陆
 
查看当前发行版类型
lintex9527@am62lxx-evm:~$ cat /etc/os-release 
PRETTY_NAME="Armbian-unofficial 25.11.0-trunk trixie"
NAME="Debian GNU/Linux"
VERSION_ID="13"
VERSION="13 (trixie)"
VERSION_CODENAME=trixie
DEBIAN_VERSION_FULL=13.1
ID=debian
HOME_URL="https://duckduckgo.com/"
SUPPORT_URL="https://community.armbian.com/"
BUG_REPORT_URL="https://armbian.atlassian.net/"
ARMBIAN_PRETTY_NAME="Armbian-unofficial 25.11.0-trunk trixie"

 

更新软件源
修改 /etc/apt/sources.list.d/debian.sources 为以下内容
# Debian 13 (trixie) - 清华大学镜像源 (ARM64 兼容)
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: trixie trixie-updates trixie-backports
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

 

 
再执行 sudo apt update 和 sudo apt upgrade 即可。
GPIO 翻转
先用 PulseView 逻辑分析仪接 J3.1 和 J2.3 测量默认的电压。
原理图如下:
  • J3.1 连接到 VCC3V3_EXP
  • J2.3 链接到 GND
逻辑分析仪连接实物图
可以看到这两个管脚默认都是低电平。
【小插曲】见后文, EXP_PS_3V3_EN 在 U11 模块的 P05 管脚上,由 SOC 经 SoC_I2C1 控制TCA6424ARGJR IO扩展芯片输出。实际上内核已经实现此模块驱动绑定到 /dev/gpiochip2 line 5 上。
lintex9527@am62lxx-evm:~/workspace/daerwen-am62l-evm/tests$ sudo gpioinfo -c 2
[sudo] password for lintex9527: 
gpiochip2 - 24 lines:
        line   0:       unnamed                 input
        line   1:       unnamed                 input
        line   2:       "UART1_FET_SEL"         input
        line   3:       "MMC1_SD_EN"            output consumer="regulator-2"
        line   4:       "VPP_EN"                input
        line   5:       "EXP_PS_3V3_EN"         output
        line   6:       "UART1_FET_BUF_EN"      input
        line   7:       unnamed                 input
        line   8:       "DSI_GPIO0"             input
        line   9:       "DSI_GPIO1"             input
        line  10:       unnamed                 input
        line  11:       "BT_UART_WAKE_SOC_3V3"  input
        line  12:       "USB_TYPEA_OC_INDICATION"       input
        line  13:       unnamed                 input
        line  14:       unnamed                 input
        line  15:       "WLAN_ALERTn"           input
        line  16:       "HDMI_INTn"             input consumer="kernel"
        line  17:       "TEST_GPIO2"            input
        line  18:       "MCASP0_FET_EN"         input
        line  19:       "MCASP0_BUF_BT_EN"      input
        line  20:       "MCASP0_FET_SEL"        input
        line  21:       "DSI_EDID"              input
        line  22:       "PD_I2C_IRQ"            input
        line  23:       "IO_EXP_TEST_LED"       output

 

 

在设置 /dev/gpiochip2 line 5 输出高电平后,即使能 EXP_PS_3V3_EN ,逻辑分析仪观察到 J3.1 的确拉高了。
设置 /dev/gpiochip2 line 5 输出低电平后,逻辑分析仪观察到 J3.1 再次拉低。
 
点亮 LED
EVM 板载两颗 LED 【注意原理图和EVM用户手册不匹配,是EVM用户手册写错了。
 
EVM 用户手册关于 LED 说明如下,实际上这里应该是 LD9。即 LD9 和 LD2 是用户测试 LED。
实际上 LD8 是 USB-Type C1 供电指示灯,在 J7 和 J8 中间。
 
指示灯 LD9
EVM 用户指南有两颗用户测试 LED,这里选择 LD9,原理图上网表名为 SOC_GPIO0_123
但是通过 gpioinfo 查看 gpiochip0 line 123 发现它是呼吸灯。自上电之后快闪两下、停顿一下。
$ sudo gpioinfo -c 0 | grep 123
        line 123:        unnamed                 output consumer=am62-sk:green:heartbeat

 

放弃了,不需要手动控制这个 LD9。
 
 
指示灯 LD2
EVM 用户指南有两颗用户测试LED,这里选择 LD2,原理图上网表名为 IO_EXP_TEST_LED。
IO_EXP_TEST_LED 是 AM62L EVM 上的用户测试 LED,由 I²C GPIO 扩展器 TCA6424 控制,不直接连 SoC GPIO。
AM62L EVM 上有两个 GPIO 扩展器(I²C IO Expander):
  • U11:TCA6424A I/O Expander 0 (I2C address: 0x22)
  • U10:TCA6424A I/O Expander 1 (I2C address: 0x23)
根据 EVM 用户指南 表 2-35 与原理图
IO_EXP_TEST_LED 属于 I/O Expander 0(U11)的 P27 引脚。
也就是:
IO_EXP_TEST_LED = TCA6424A (0x22) → Port2 → Pin 7
硬件路径如下:
I2C1 (SoC) ──> TCA6424A (U11) ──> P27 Output ──> Rxxx(限流) ──> LD2(LED)──> 3.3V

 

 
❌LED 极性说明(从原理图可以看出)【不对啊,实测相反】
  • LED 阳极接 3.3V
  • 阴极经电阻接 IO(P27)
因此:
  • 输出低(0) → LED 亮
  • 输出高(1) → LED 灭
这是“低电平点亮”结构。
2. IO_EXP_TEST_LED 在 EVM 上的物理位置
LD2 在板面上靠近:
  • GPIO 扩展器 U16 附近
  • 旁边有丝印 LD2USER LED
  • 通常位于扩展接口与 SoC 附近的测试区域
这是 EVM 上设计用于调试的小 LED。
3. 软件层控制 IO_EXP_TEST_LED(Linux)
因为它不是 SoC GPIO,而是 I2C → TCA6424 → IO 输出,控制方式必须用 I²C。
4. I2C1 设备扫描
使用命令 sudo i2cdetect -y 1 进行扫描,找不到 0x22, 0x23 设备地址。
lintex9527@am62lxx-evm:~$ sudo i2cdetect -y 1
Warning: Can't use SMBus Quick Write command, will skip some addresses
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                                                 
10:                                                 
20:                                                 
30: -- -- -- -- -- -- -- --                         
40:                                                 
50: -- UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60:                                                 
70:                                                 
lintex9527@am62lxx-evm:~$ 

 

 

之后分别扫描了 0/1/2/3/4 都没有找到 0x22, 0x23 设备地址。
因此当前情况说明:
  • ❗ 这是“设备树层绑定了驱动,所以不会显示地址”的典型现象;
  • ❗ 驱动绑定方式不是传统 I2C 驱动,而是被注册成 GPIO Controller(gpiochip)
这种情况下:
  • i2cdetect 无法看到设备
  • 驱动已经绑定
  • 通过 gpiochipN 暴露所有 IO 引脚
  • 你必须用 libgpiod / sysfs 来操作这些 IO
最后在 gpiochip2 中找到了 IO_EXP_TEST_LED。
lintex9527@am62lxx-evm:~$ sudo gpioinfo -c 2
gpiochip2 - 24 lines:
        line   0:        unnamed                 input
        line   1:        unnamed                 input
        line   2:        "UART1_FET_SEL"         input
        line   3:        "MMC1_SD_EN"            output consumer="regulator-2"
        line   4:        "VPP_EN"                input
        line   5:        "EXP_PS_3V3_EN"         input
        line   6:        "UART1_FET_BUF_EN"        input
        line   7:        unnamed                 input
        line   8:        "DSI_GPIO0"             input
        line   9:        "DSI_GPIO1"             input
        line  10:        unnamed                 input
        line  11:        "BT_UART_WAKE_SOC_3V3"        input
        line  12:        "USB_TYPEA_OC_INDICATION"        input
        line  13:        unnamed                 input
        line  14:        unnamed                 input
        line  15:        "WLAN_ALERTn"           input
        line  16:        "HDMI_INTn"             input consumer="kernel"
        line  17:        "TEST_GPIO2"            input
        line  18:        "MCASP0_FET_EN"         input
        line  19:        "MCASP0_BUF_BT_EN"        input
        line  20:        "MCASP0_FET_SEL"        input
        line  21:        "DSI_EDID"              input
        line  22:        "PD_I2C_IRQ"            input
        line  23:        "IO_EXP_TEST_LED"        input

 

 

gpioinfo -c gpiochip2说明:
  • IO_EXP_TEST_LED 位于 gpiochip2 第 23 号引脚
  • 默认方向 = input
  • 这是 LD2(用户测试 LED)
  • 电路为 高电平点亮 【参见下方 EVM 用户指南,且与我实测一致】
5. 创建 python 虚拟环境
输入命令创建虚拟环境
python3 -m venv .venv
 
python3 -m venv .venv
The virtual environment was not created successfully because ensurepip is not
available.  On Debian/Ubuntu systems, you need to install the python3-venv
package using the following command.

    apt install python3.13-venv

You may need to use sudo with that command.  After installing the python3-venv
package, recreate your virtual environment.

Failing command: /home/lintex9527/workspace/daerwen/.venv/bin/python3

 

 

按照提示 sudo apt install python3.13-venv 即可。
安装 python-periphery 模块
输入命令 pip install python-periphery 即可。
lintex9527@am62lxx-evm:~/workspace/daerwen$ python3 -m venv .venv
lintex9527@am62lxx-evm:~/workspace/daerwen$ source .venv/bin/activate
(.venv) lintex9527@am62lxx-evm:~/workspace/daerwen$ pip install python-periphery
Collecting python-periphery
  Downloading python_periphery-2.4.1-py2.py3-none-any.whl.metadata (1.5 kB)
Downloading python_periphery-2.4.1-py2.py3-none-any.whl (36 kB)
Installing collected packages: python-periphery
Successfully installed python-periphery-2.4.1

 

 

🟢LD2 闪烁的python 代码
 
"""
切记,运行此脚本需要使用下面的命令行:
sudo  $(which python3)  blink_ld2.py

LD2 在 M.2 Key 附近。
NOTE: successful.
"""

#!/usr/bin/env python3


from periphery import GPIO
from time import sleep

gpio_out = GPIO("/dev/gpiochip2", 23, "out")


def main():
    i = 0

    while i < 10:
        print(f"loop {i}, ld2 -- on")
        gpio_out.write(True)
        sleep(1)

        print(f"loop {i}, ld2 -- off")
        gpio_out.write(False)
        sleep(1)
        i = i + 1


if __name__ == "__main__":
    main()
    print("======  Job Done  ======")

 

 

最新回复

驱动绑定方式不是传统 I2C 驱动,而是被注册成 GPIO Controller(gpiochip),这是个关键,谢谢提醒   详情 回复 发表于 2026-4-12 09:12
点赞 关注
个人签名

点个灯吧

 

回复
举报

8593

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

驱动绑定方式不是传统 I2C 驱动,而是被注册成 GPIO Controller(gpiochip),这是个关键,谢谢提醒

 
 

回复
您需要登录后才可以回帖 登录 | 注册

小广播

更多活动
随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 4

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表