ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RK3588开发板全接口调试指南:从串口登录到摄像头采集实战

RK3588开发板全接口调试指南:从串口登录到摄像头采集实战 1. 项目概述与调试环境搭建上次折腾完瑞芯微RK3588开发板的固件烧录不少朋友后台留言催更想看看这块性能怪兽的DEBUG和接口到底怎么玩。确实烧录只是第一步能把板子上的各种功能都调通、用起来才是真正把开发板“驯服”的开始。今天我就以手头这块英码科技的EVM3588开发板为例把从串口DEBUG登录到十几种接口功能调试的完整流程和避坑心得给大家掰开揉碎了讲清楚。简单来说这篇内容就是一份针对RK3588平台的“功能体检手册”。无论你是刚拿到板子想验证硬件是否完好还是在开发过程中需要测试某个特定接口比如接摄像头、调4G模块、测千兆网速按照这里的步骤都能快速上手。整个过程在Windows 10主机上进行用到的工具也都是常见且免费的。开发板自带的系统是Ubuntu 20.04 Desktop默认用LCD屏显示接上HDMI也能轻松切换非常方便。默认的登录账号是root密码是ema拿到板子第一步可以先把这个记下来。工欲善其事必先利其器。调试前我们需要在电脑上准备好几个关键工具它们就像外科医生的手术刀每把都有特定用途。首先是驱动瑞芯微平台设备连接电脑需要专用的DriverAssitant_v5.0驱动否则电脑可能根本识别不到你的开发板。其次是烧录/通信工具RKDevTool_Release_v2.92虽然我们本期主要不是烧录但它里面包含的底层通信组件有时在调试中也会用到。最后是终端工具我强烈推荐SecureCRT或者免费的MobaXterm它们能稳定地通过串口与开发板通信是我们输入命令、查看日志的“控制台”。把这些工具的压缩包提前下载好解压并安装好驱动我们的调试舞台就搭好了。2. DEBUG调试进入系统的第一道门拿到开发板接上电源看到指示灯亮起这还远远不够。我们得能“对话”能向它发号施令能看到它的输出信息这才是调试的开始。对于EVM3588这类嵌入式设备最基础、最可靠的通信方式就是DEBUG串口。它不依赖于网络是否配置成功是系统启动最早加载的接口堪称“救命稻草”。2.1 硬件连接与串口配置第一步是物理连接。找到开发板上的DEBUG串口通常它是一组排针标着TX、RX和GND。你需要一根USB转TTL串口线将它的TX接开发板的RXRX接开发板的TXGND接GND。这里有个新手常犯的错TX和RX一定要交叉连接因为通信是双向的你的发送端TX要对接对方的接收端RX。接好后把USB端插上电脑。接着在电脑上配置串口终端。以SecureCRT为例打开软件新建一个Serial连接。关键参数在这里端口(Port)在电脑的设备管理器中查看串口线插入后新增的COM口是哪个比如COM3。波特率(Baud rate)必须设置为1500000。这是瑞芯微RK3588平台UART调试串口的标准高速波特率如果设成常见的115200你看到的将是一堆乱码。数据位(Data bits)8停止位(Stop bits)1奇偶校验(Parity)None流控(Flow Control)全部取消勾选配置完成后给开发板上电。如果一切顺利SecureCRT的窗口里就会开始滚动打印出RK3588芯片的启动日志从Bootloader到内核加载再到Ubuntu系统启动整个过程一览无余。当出现rootrk3588:~#这样的命令行提示符时恭喜你已经成功通过DEBUG串口登录到了开发板的系统中。注意如果上电后终端毫无反应首先检查硬件连接是否松动TX/RX是否接反。其次确认驱动是否安装成功设备管理器里有无感叹号。最后再三确认波特率是否为1500000这是最容易被忽略的一点。2.2 替代调试方案ADB方式浅析除了DEBUG串口另一种常见的调试方式是ADB (Android Debug Bridge)。如果开发板系统是Android或者Ubuntu系统里启用了ADB服务那么通过USB数据线连接电脑和开发板的USB OTG口就可以进行文件传输、安装应用、执行Shell命令等操作。这种方式传输速率快适合大量文件操作。但对于EVM3588出厂搭载的Ubuntu系统ADB服务默认可能没有开启其稳定性和可获取的底层日志也不如串口。因此我强烈建议将DEBUG串口作为首要和基础的调试手段。它就像系统的控制台无论系统内部网络、显示是否正常只要芯片没坏你总能通过它看到信息、输入命令是进行后续所有接口调试的基石。在后续的接口测试中我们所有的命令也都是在通过这个串口登录的系统终端里输入的。3. 网络接口调试有线与无线连接实战网络功能是智能设备的核心。EVM3588开发板提供了双千兆有线网口和Wi-Fi/BT模块调试好它们开发板才能融入你的本地网络方便进行远程登录、软件安装和更新。3.1 双千兆以太网口功能验证开发板上通常有两个RJ45网口。我们先用网线将其中的一个连接到路由器或交换机上。通过串口登录系统后输入命令ifconfig或更新的ip addr show。你会看到类似eth0、eth1的网络接口信息。找到已连接网线对应的接口比如eth0查看其是否获取到了IP地址inet字段。如果显示inet 192.168.x.x之类的地址说明DHCP自动获取成功。进行网络连通性测试。输入ping -c 4 8.8.8.8测试外网或ping -c 4 你的路由器IP测试内网。如果能看到连续的回复64 bytes from ...且没有丢包就证明该千兆网口硬件及驱动工作完全正常。实操心得如果ifconfig看不到IP可以尝试手动获取dhclient eth0。如果还是不行检查网线、路由器端口。双网口可以同时接两根网线用ifconfig eth0 up和ifconfig eth1 up分别启用实现双网卡负载均衡或路由策略这在做网关类产品开发时非常有用。3.2 Wi-Fi与蓝牙BT连接测试无线功能的测试需要先确保硬件准备就绪。找到开发板上的天线接口座子CON28对应Wi-FiCON60对应BT将配套的棒状天线拧上去。天线能显著增强信号强度避免因信号弱导致的测试失败。对于Ubuntu Desktop系统测试Wi-Fi和蓝牙异常简单因为这本身就是一个带图形界面的系统。接上HDMI显示器、鼠标和键盘或者通过串口启动图形界面如果支持。点击桌面右上角的网络图标系统会自动扫描周边的Wi-Fi热点选择你的网络并输入密码即可连接。蓝牙测试同样在设置Settings中找到蓝牙选项打开开关搜索设备如蓝牙音箱、鼠标进行配对和连接测试。这种图形化操作最直观。如果你想在纯命令行下测试Wi-Fi可以使用nmcliNetworkManager命令行工具来扫描和连接网络但这需要对Linux网络管理有一定了解。对于蓝牙则有bluetoothctl工具可以进行命令行下的控制。注意事项在测试前务必安装天线空载的RF接口可能导致发射信号反射回模块有轻微概率损坏射频前端。同时Wi-Fi和蓝牙共用2.4GHz频段如果遇到严重干扰可以尝试在路由器后台将Wi-Fi信道固定在1、6、11这类不重叠的信道上。4. 存储与串行接口调试存储和低速串行接口是嵌入式设备与外部交换数据、连接传统设备的重要通道。4.1 USB与TF卡接口读写测试EVM3588板载了多个USB接口USB2.0和USB3.0和一个TF卡槽。测试目标是验证其读写功能及速率是否正常。插入设备将一个U盘插入USB口或将一张TF卡带适配器插入卡槽。识别设备在串口终端输入lsblk或dmesg | tail命令。你会看到系统识别到了新的块设备例如/dev/sda1U盘或/dev/mmcblk1p1TF卡。系统通常会自动将其挂载到/media/用户名/磁盘标签目录下。读写性能测试这是验证接口稳定性的关键。我们使用dd命令和系统缓存控制来进行粗略测试。写入测试这个命令会生成一个10MB的随机数据文件并写入存储设备同时绕过系统页面缓存oflagdirect更能反映真实写入速度。执行后命令会输出写入速度和耗时。dd if/dev/urandom of/media/ema/你的磁盘标签/testfile bs1M count10 oflagdirect读取测试在写入后清空缓存然后测试读取速度。echo 3 /proc/sys/vm/drop_caches # 清空页缓存、目录项和inode缓存 dd if/media/ema/你的磁盘标签/testfile of/dev/null bs1M观察输出的速度如100 MB/s。USB2.0的理论极限约40MB/sUSB3.0则能达到上百MB/s。如果速度远低于预期或报错如I/O error可能是接口接触不良、线材质量差或设备本身问题。4.2 RS232与RS485串口通信调试RS232和RS485是工业控制、传感器连接中极其常见的异步串行通信接口。EVM3588提供了多路。硬件连接你需要一个USB转RS232或RS485的适配器。将适配器的USB端插电脑串口端RS232的DB9头或RS485的A/B线对应连接到开发板的RS232或RS485接口上。注意RS485是差分信号要接对A正和B负极。确认设备节点连接好后在开发板终端输入ls /dev/ttyS*。你会看到一系列串口设备。通常/dev/ttyS0和/dev/ttyS9对应RS232/dev/ttyS4和/dev/ttyS7对应RS485。具体映射需参考板子的原理图或手册。回环测试这是最经典的测试方法。首先用一根杜邦线将开发板上同一个串口的TX和RX短接起来对于RS485则是将A和B短接。然后在开发板终端使用microcom或picocom工具打开该串口例如microcom -p /dev/ttyS0 -s 115200参数-s 115200设置波特率默认常用。进入交互界面后你从键盘输入的每一个字符都会通过TX发送出去又因为被短接线直接接回了RX所以你马上能在屏幕上看到自己输入的字符被接收并显示出来。这证明该串口通道的收发功能完全正常。与PC通信测试拔掉短接线。在开发板一端用microcom打开串口。在PC上打开串口调试助手如SecureCRT再新建一个串口连接或使用Xshell、Putty等选择USB转接器对应的COM口设置相同的波特率、数据位、停止位、无校验。双方互发一段数据看对方是否能正确接收。通过这个测试可以验证电平转换芯片、接线、波特率设置全部正确。避坑指南RS232是点对点全双工而RS485是半双工差分总线。测试RS485时确保总线上在某一时刻只有一个设备在发送否则会产生冲突。另外RS485总线两端通常需要接120欧姆的终端电阻来消除信号反射在短距离测试时可以不加但长距离通信时必须考虑。5. 音频、ADC与摄像头接口调试这部分接口直接关系到开发板的多媒体采集和模拟信号感知能力是很多AIoT项目的关键。5.1 音频输入输出测试EVM3588开发板支持音频输出喇叭和耳机和输入麦克风。板子上会有相应的音频接口如3.5mm耳机孔或喇叭焊点/接口。输出测试首先将一个音频文件如test.wav通过U盘或网络传到开发板任意目录。连接喇叭或插入耳机。在终端使用aplay命令播放aplay -D plughw:0,0 /path/to/your/test.wav参数-D plughw:0,0指定播放设备和声道。如果听到声音则音频编解码器和输出通路正常。注意一个硬件设计细节很多板子的音频输出是“喇叭和耳机自动切换”的。当插入耳机时喇叭通路会自动断开声音只从耳机输出。这是正常现象由音频芯片的插孔检测功能实现。输入测试使用arecord命令可以录制一段音频再用aplay播放来测试麦克风。arecord -d 5 -f cd -t wav test_record.wav # 录制5秒CD音质的wav aplay test_record.wav # 播放刚才录制的声音如果播放能听到清晰的录音则麦克风输入通路正常。5.2 ADC模拟数字转换器采样ADC用于读取模拟电压值可以连接电位器、光敏电阻等模拟传感器。EVM3588的ADC通道通常通过排针引出。读取原始值在终端输入命令查询ADC的原始采样值。路径可能因内核版本略有差异常用命令如下cat /sys/bus/iio/devices/iio\:device0/in_voltage0_raw cat /sys/bus/iio/devices/iio\:device0/in_voltage1_raw # ... 以此类推对应不同的ADC引脚这个值是一个整数范围取决于ADC的精度例如12位ADC的范围是0-4095。基准电压测试要验证ADC是否准确需要进行两点校准零点测试将ADC输入引脚如pin3用杜邦线连接到开发板的GND0V。读取该通道的raw值它应该非常接近0可能有个位数的底噪。满量程测试将ADC输入引脚连接到开发板的3.3V电源引脚务必确认电压在ADC量程内RK3588的ADC量程通常是1.8V接3.3V可能损坏这里仅为举例实际操作前必须查阅芯片数据手册。读取的raw值应该接近最大值如4095。 通过这两个测试可以判断ADC的线性度和基准是否准确。实际使用中需要根据参考电压和分辨率将raw值换算成实际的电压值电压 (raw值 / 满量程值) * 参考电压。5.3 MIPI CSI摄像头采集调试MIPI CSI是连接摄像头模组的高速接口。EVM3588拥有多路CSI接口可以同时接入多个摄像头。硬件连接使用FPC软排线将兼容的摄像头模组如IMX415小心地连接到开发板的CSI接口上CON7~CON10。注意排线方向金手指对齐锁紧连接器。驱动与测试通常板卡厂商会提供预编译好的测试脚本。例如对于连接在CON7接口的摄像头执行/usr/local/bin/cam_32.sh这个脚本可能会调用gstreamer或v4l2工具链打开一个预览窗口将摄像头画面显示在屏幕上。如果能看到实时图像说明摄像头供电、时钟、数据链路、驱动全部正常。多路摄像头对于CON8、CON9、CON10可能对应不同的脚本如cam_50.sh,cam_41.sh这是因为不同接口在内核设备树Device Tree中的配置节点不同。需要分别测试。高级检查如果脚本无法运行或黑屏可以按以下步骤排查ls /dev/video*查看系统识别到了几个视频设备。使用v4l2-ctl --list-devices查看详细的视频设备信息。使用v4l2-ctl -d /dev/video0 --all查看video0设备的详细能力和格式支持。尝试用gst-launch-1.0命令手动构建一个简单的预览流水线例如gst-launch-1.0 v4l2src device/dev/video0 ! videoconvert ! waylandsink通过逐级排查可以定位是硬件连接问题、驱动加载问题还是应用层参数问题。6. 显示、扩展与系统接口调试这些接口决定了开发板的显示输出能力和扩展潜力是产品化过程中必须验证的环节。6.1 显示接口MIPI DSI, HDMI, DP验证RK3588拥有强大的显示输出能力支持多种接口同时或分时输出。连接与上电将对应的屏幕MIPI DSI屏、HDMI显示器、DP显示器连接到开发板然后给开发板上电。观察现象MIPI DSI通常用于连接中小尺寸的液晶屏。接好后系统启动Ubuntu的桌面界面应该能正常显示在屏幕上。这需要内核和显示驱动DRM/KMS已正确配置并支持该屏幕的时序Resolution, Timing。HDMI/DP连接大屏显示器或电视。系统启动后显示器应检测到信号并显示桌面。HDMI和DP是即插即用的系统通常会通过EDID自动读取显示器的最佳分辨率进行输出。多屏设置如果同时连接了多个显示器可以在Ubuntu桌面的“设置”-“显示”中配置扩展显示、复制显示或指定主屏。通过串口也可以使用xrandr命令来查看和配置显示输出。故障排查如果屏幕不亮首先确认屏幕供电是否开启有些屏需要额外供电。其次通过串口查看内核启动日志dmesg | grep -i drm或dmesg | grep -i hdmi看是否有相关驱动加载成功和EDID读取成功的日志。对于MIPI DSI屏最可能的问题是设备树中的屏参时序、初始化命令与实际屏幕不匹配需要联系板卡供应商获取正确的配置。6.2 PCIe接口功能验证PCIe接口提供了极高的扩展带宽常用于连接4G/5G模块、NVMe SSD、高速网卡等。连接4G模块将4G模块插入开发板的PCIe接口可能需要配合转接板。上电后在终端输入ls /dev/ttyUSB*。如果模块驱动正常会出现若干个ttyUSB设备这些是模块提供的AT命令端口和PPP数据端口。使用microcom打开其中一个端口通常是/dev/ttyUSB0或/dev/ttyUSB1进行AT指令测试microcom -p /dev/ttyUSB1 -s 115200在交互界面输入AT并回车模块应回复OK。再输入ATCSQ查询信号强度。这证明PCIe通道、模块供电和USB串口驱动都已正常工作。连接mSATA SSD通过PCIe转mSATA转接卡连接一块mSATA固态硬盘。上电后使用lsblk命令查看是否识别到了新的块设备如/dev/sda。如果识别到可以按照之前USB存储测试的方法对其进行分区fdisk、格式化mkfs和读写速度测试dd或hdparm -tT。这验证了PCIe接口的数据传输能力。6.3 RTC实时时钟与按键功能测试这两项是系统的基础外设关乎设备的时间保持和用户交互。RTC测试RTC在系统断电时依靠纽扣电池BT1保持计时。设置时间首先在系统联网时用hwclock --systohc将系统时间同步到硬件RTC。或者用hwclock --set --date2024-01-01 12:00:00手动设置。断电验证设置好后完全断开开发板电源包括Type-C供电等待几分钟。重新上电查询重新上电后立即通过串口登录输入hwclock --show或date命令。如果显示的时间与断电前设置的时间相比只有几分钟的误差这是合理的因为RTC芯片本身有精度误差说明RTC电池供电正常时钟芯片工作正常。如果时间重置为很久以前的默认值说明电池没电或接触不良或者RTC电路有问题。按键测试开发板上的按键SW2~SW5通常被配置为特殊功能键其测试依赖于底层软件U-Boot/Kernel的配置。SW2 (Maskrom键)按住此键不放然后给开发板上电或重启观察串口输出。如果成功进入Maskrom模式串口会打印出特定的下载模式信息或者RKDevTool工具会识别到“发现一个MASKROM设备”。这个键用于救砖或强制进入烧录模式。SW3 (复位键)在系统运行时短按一下系统会立即重启。观察串口日志是否从头开始打印。SW4 (Loader键)在已烧录固件的板子上按住此键不放再上电可能会进入Loader模式一种比Maskrom更高级的下载模式RKDevTool会识别到“发现一个LOADER设备”。SW5 (功能键)在Ubuntu系统启动后按下此键系统应该会弹出关机或注销对话框具体行为由桌面环境或应用层配置决定。 每个按键的功能都由硬件电路和软件共同定义测试前最好查阅原理图确认按键连接的是哪个GPIO以及该GPIO在系统软件中的配置是什么。7. 调试问题深度排查与经验总结即使按照步骤操作在实际调试中依然会遇到各种“玄学”问题。下面我把自己和同事们踩过的坑以及排查思路整理出来希望能帮你快速定位问题。7.1 常见问题速查与解决方案问题现象可能原因排查步骤与解决方案串口无任何输出1. 电源未接通或异常。2. TX/RX线接反。3. 波特率设置错误。4. USB转串口线或驱动故障。5. 开发板Bootloader损坏。1. 检查电源指示灯用万用表测供电电压。2. 交换TX和RX线序试试。3.反复确认波特率为1500000。4. 换一根串口线或在设备管理器检查驱动。5. 尝试按住Maskrom键SW2上电看能否进入下载模式。网络无法ping通1. 网线问题。2. 未获取到IPDHCP失败。3. 防火墙或网络策略限制。4. 网口PHY芯片驱动未加载。1. 换网线观察网口指示灯是否闪烁。2. 执行dhclient eth0手动获取或用ip addr add设置静态IP再ping网关。3. 检查iptables规则或云服务器安全组。4. 输入dmesg | grep -i eth或lspci查看网卡是否识别驱动是否加载。USB设备不识别1. USB接口供电不足。2. 设备文件系统格式不兼容。3. 内核未配置相关驱动。1. 尝试使用带外接供电的USB Hub。2. 在Windows格式化的NTFS盘在Linux需装ntfs-3g或格式化为exFAT/FAT32。3. 检查dmesg输出看插入设备时内核是否有识别日志如usb 1-1: new high-speed USB device。摄像头无图像1. FPC排线接触不良。2. 摄像头供电不足。3. 内核设备树配置错误。4. 传感器驱动未加载或匹配错误。1. 重新插拔排线确保锁紧。2. 测量摄像头模组供电引脚电压。3. 检查/boot目录下的设备树文件是否包含该摄像头的节点。4. 运行dmesg | grep -i csi和dmesg | grep -i imx415查看驱动加载和探测日志。ADC读数不准或跳变1. 参考电压不稳。2. 电路板噪声干扰。3. 未进行软件滤波。1. 测量ADC的参考电压引脚VREF是否纯净稳定。2. 在ADC输入引脚并联一个0.1uF的电容到地滤除高频噪声。3. 在软件中读取多次取平均值或使用中值滤波等算法。PCIe设备识别不到1. 模块供电问题。2. PCIe时钟未启用或速率协商失败。3. 内核缺少对应驱动。1. 检查转接板或模块的电源指示灯。2. 运行lspci -vv命令查看PCIe设备是否枚举成功以及链路状态Link Speed, Width。3. 使用modprobe尝试加载可能的驱动模块或重新编译内核包含该驱动。7.2 核心调试心法与工具链日志是生命线嵌入式调试dmesg内核日志和journalctl系统日志是你最好的朋友。任何硬件动作驱动加载都会在这里留下痕迹。遇到问题第一个命令就应该是dmesg | tail -50查看最新内核信息或者dmesg | grep -i eth这样按关键词过滤。理解sysfs和procfsLinux将很多硬件和内核信息抽象成文件。/sys/目录下特别是/sys/bus/iio/对于ADC/sys/class/net/对于网络存放着丰富的设备状态和配置参数你可以用cat读取用echo写入来动态调整。/proc/目录下也有很多实时信息比如/proc/interrupts看中断/proc/iomem看内存映射。工具链准备除了文中提到的建议在你的Ubuntu主机或开发板上安装一些万能工具ethtool查网卡状态、i2c-tools调试I2C设备、spi-tools、usbutilslsusb查看USB设备、pciutilslspci查看PCI设备。它们能帮你从更底层洞察硬件。二分法与替换法当问题复杂时用二分法隔离。比如网络不通先ping自己127.0.0.1再ping同网段其他设备最后ping外网一步步定位问题在哪一层。替换法更直接怀疑网线就换网线怀疑电源就换电源怀疑是软件配置问题就尝试一个最简化的已知好的配置。保持耐心记录过程调试很少能一蹴而就。养成好习惯每做一步操作记录下命令和结果每改变一个配置记下改了什么。这样当问题变得更糟时你至少能回退到上一步。写笔记或画个简单的流程图对于理清复杂设备的启动和初始化顺序非常有帮助。最后想说的是调试RK3588这样功能强大的平台就像在探索一个微缩的计算机世界。从最底层的电源、时钟、复位到总线、外设驱动再到上层应用环环相扣。本次分享的DEBUG和接口调试是打通这个世界的“任督二脉”。当你把这些基础功能都调通后在此基础上部署AI模型、搭建流媒体服务器、开发复杂应用才会心中有底遇事不慌。希望这份超详细的指南能成为你手边随时可查的“调试字典”助你在RK3588的开发之旅上少走弯路直捣黄龙。如果在实际操作中遇到了表里没覆盖的怪问题不妨多看看日志多在开发者社区里和大家交流很多时候答案就藏在那些细微的日志输出里。
返回列表