ARTICLE DETAIL

资讯详情

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

RV1126平台ST7789 SPI屏调试:从硬件时序到Linux驱动全栈排障

RV1126平台ST7789 SPI屏调试:从硬件时序到Linux驱动全栈排障 1. 项目概述RV1126平台SPI屏调试到底在调什么RV1126平台SPI屏调试不是简单地“把屏幕点亮”而是一整套嵌入式Linux系统级的硬件-驱动-显示栈协同验证过程。它直指一个核心问题当一块基于ST7789控制器、通过SPI总线连接到瑞芯微RV1126 SoC的LCD模组在硬件焊接无误的前提下系统启动后却黑屏、花屏、闪屏或完全无响应时你该从哪一层开始排查我做过不下二十块不同厂商的SPI LCD模组适配从3.5寸到5.5寸分辨率从240x320到480x800最常遇到的情况是——硬件工程师说“飞线测过SPI信号波形干净”软件工程师说“dts写了驱动编译进去了”结果一上电屏幕纹丝不动。问题就出在“干净”和“进去”之间那层看不见的胶水时序参数是否匹配、片选逻辑是否正确、初始化序列是否完整、DMA缓冲区是否对齐、内核显示子系统是否识别到这个新设备。RV1126的SPI控制器支持主模式、支持DMA、支持多种时钟极性和相位组合但ST7789作为一款经典且廉价的TFT驱动IC其初始化流程极其脆弱——少一条指令或者某条指令的延时不够屏幕就永远卡在“未初始化”状态。调试的本质就是用逻辑分析仪抓波形、用串口打印看日志、用dmesg查驱动加载痕迹、用devmem2直接操作寄存器一层一层剥开这颗洋葱。它适合所有正在做RV1126定制板卡的硬件/固件工程师也适合想深入理解Linux Display Subsystem底层机制的驱动开发者。如果你只关心“怎么让屏幕亮起来”这篇文章会给你可复制的步骤如果你还想搞懂“为什么必须这样写dts”、“为什么DMA比轮询更稳”、“为什么ST7789的reset引脚必须严格按手册时序拉低”那接下来的内容就是你踩坑多年后才攒出来的真经验。2. 整体设计思路与方案选型解析2.1 为什么必须走SPI而不是MIPI或RGBRV1126本身集成了一路MIPI DSI和一路RGB接口性能远超SPI。但实际项目中选择SPI屏绝非“性能妥协”而是成本、空间与可靠性的综合权衡。一块标准MIPI屏模组含FPC软排线、ESD防护、背光驱动ICBOM成本通常在35元以上而一块ST7789 SPI屏裸板电阻电容背光LEDBOM能压到8元以内。更重要的是PCB布线——MIPI要求严格的差分阻抗控制100Ω±10%走线长度匹配误差需5mm这对双层板或小尺寸主控板几乎是灾难SPI则只需四根单端线SCLK、MOSI、CS、DC加上RESET和BACKLIGHT总共六根线普通FR4板材、20mil线宽就能跑80MHz布线自由度极高。我曾为一款手持医疗终端选型主板面积仅50×60mm最终放弃MIPI就是因为MIPI FPC弯折半径无法满足结构要求。SPI的另一个隐性优势是隔离性SPI是纯数字总线不受模拟噪声干扰而MIPI DSI在靠近Wi-Fi/BT天线时极易出现竖条纹干扰。所以RV1126平台SPI屏调试不是“退而求其次”而是主动选择一种更适合小批量、低成本、高鲁棒性场景的显示方案。它的设计起点就决定了调试必须围绕“时序精准性”和“初始化完备性”展开而非像MIPI那样侧重于链路训练和协议协商。2.2 ST7789为何成为RV1126 SPI屏的首选控制器在众多SPI TFT控制器中如ILI9341、SSD1351、GC9A01ST7789脱颖而出核心在于三点一是原生支持16位RGB565数据格式与RV1126的DMA引擎天然对齐无需软件做像素格式转换二是内置128x160显存但支持“GRAM全区域滚动”这意味着即使屏幕物理分辨率为240x320驱动也能通过设置窗口地址自动映射极大简化了fbdev层的实现三是Reset引脚行为明确——低电平持续≥10ms后释放内部寄存器复位且复位后默认进入睡眠模式必须通过特定指令序列唤醒。这点至关重要很多调试失败案例根源就是Reset信号时序不对。例如有的硬件设计将RESET接到SoC的GPIO由软件控制但代码里只做了“拉低-延时-拉高”忽略了ST7789手册明确要求的“拉低期间必须保持VDD稳定供电”而RV1126的GPIO在复位初期可能尚未完成电源域配置导致RESET脉冲无效。我们最终方案是硬件上将RESET接到专用的PMIC复位输出引脚确保其与SoC主电源同步软件上在dts中声明reset-gpios gpio0 12 GPIO_ACTIVE_LOW并启用reset-duration 15000单位us让内核驱动在probe阶段自动执行精准复位。这种软硬协同的设计才是ST7789稳定工作的基础。2.3 DTSDevice Tree为何是调试的第一道关卡很多人把dts当成“配置文件”认为只要填对引脚号就行。但在RV1126 SPI屏调试中dts是整个硬件抽象的基石它定义了设备如何被内核识别、如何分配资源、如何触发初始化。一个错误的dts会导致驱动根本不会加载连dmesg都看不到任何线索。RV1126的SPI控制器在dts中对应spiff110000节点其下必须包含spidev或自定义兼容字符串的子节点。关键点在于compatible属性必须与驱动源码中的.compatible字段严格一致例如ST7789驱动通常注册为sitronix,st7789那么dts中就必须写compatible sitronix,st7789不能简写成st7789或st,7789。其次是reg属性它指定SPI片选号CSRV1126的SPI0有4个片选cs0-cs3reg 0表示使用cs0reg 1表示cs1这个值必须与硬件实际连接的CS引脚对应。最容易被忽略的是spi-max-frequency它告诉内核该设备能承受的最高时钟频率。ST7789官方手册标称最大SPI速率是15MHz但实测在RV1126上当spi-max-frequency 15000000时屏幕会出现随机错行将值降至12000000后问题消失。这是因为ST7789的SPI接收器建立/保持时间裕量较小而RV1126的SPI控制器在高频下存在微小的时钟抖动。因此dts不仅是“连接描述”更是“时序契约”它强制内核SPI core在传输时遵守这个频率上限这是软件层面对硬件特性的尊重。2.4 软件片选 vs 硬件片选一个被严重低估的决策点RV1126的SPI控制器支持两种片选方式硬件片选Hardware CS和软件片选Software CS。硬件片选由SPI控制器内部逻辑自动管理CS信号在每次SPI传输开始前拉低结束后拉高时序精准、无延迟软件片选则由CPU通过GPIO模拟CS电平需要在每次传输前后手动控制GPIO引入额外的CPU开销和时序不确定性。初学者常认为“软件片选更灵活”但在ST7789调试中这是个致命陷阱。原因在于ST7789对CS信号的“边沿敏感性”它要求CS从高到低的下降沿必须发生在SCLK第一个时钟周期之前且CS保持低电平的时间必须覆盖整个传输帧。软件片选因GPIO翻转存在数微秒延迟且受系统负载影响极易导致CS下降沿与SCLK不同步造成首字节丢失。我曾用逻辑分析仪对比过两种方式的波形硬件片选下CS下降沿与SCLK第一个上升沿时间差稳定在12ns软件片选下同一代码在不同系统负载下该时间差波动范围达800ns~2.3μs。结果就是软件片选下ST7789偶尔能点亮但初始化指令序列经常中断屏幕显示残缺。因此我们的调试规范第一条就是必须使用硬件片选并在dts中明确禁用软件片选。具体做法是在SPI控制器节点下添加#address-cells 1; #size-cells 0;并在SPI设备节点中省略gpios属性只保留reg。这样内核就会绕过GPIO控制直接使用SPI controller的硬件CS逻辑。这个看似微小的配置差异直接决定了调试是事半功倍还是陷入无尽的时序猜谜。3. 核心细节解析与实操要点3.1 SPI物理层信号完整性不止是“有波形”更要“对时序”调试SPI屏示波器或逻辑分析仪不是可选项而是必需品。但很多人只满足于“看到SCLK和MOSI有信号”这远远不够。ST7789的SPI协议是Mode 0CPOL0, CPHA0即空闲时SCLK为低数据在SCLK上升沿采样。关键时序参数有三个TcshCS setup timeCS拉低到SCLK第一个上升沿的最小时间、ThcCS hold timeSCLK最后一个下降沿到CS拉高的最小时间、TdvData valid timeMOSI数据在SCLK上升沿前的建立时间。ST7789手册要求Tcsh ≥ 10nsThc ≥ 10nsTdv ≥ 10ns。RV1126的SPI控制器在12MHz下理论时钟周期83.3ns这些参数本应绰绰有余。但实测发现当PCB走线过长10cm或未做适当端接时SCLK信号会出现过冲和振铃导致实际采样点偏移。我的解决方案是在SCLK和MOSI线上各串联一个22Ω电阻靠近SoC端并在CS线上并联一个100pF电容到GND。这个RC网络能有效抑制高频振铃将SCLK边沿陡峭度降低20%同时将CS信号的上升/下降时间控制在5ns以内完美满足ST7789的时序裕量。另一个易被忽视的点是电源噪声。ST7789的VDD3.3V和VCCAVDD2.8V必须独立滤波。我曾遇到一块屏在低温-10℃下必黑屏测量发现VCC纹波高达120mVpp原因是共用了一个4.7μF钽电容。更换为两颗独立的10μF X7R陶瓷电容VDD和VCC各一颗并紧靠ST7789的VDD/VCC引脚放置问题彻底解决。信号完整性从来不是单一信号的事而是电源、地、布线、端接构成的系统工程。3.2 DTS节点编写从模板到精准适配的七处关键修改一个可用的RV1126 SPI屏dts节点绝不能直接拷贝网上模板。以下是我在量产项目中反复验证的七处必须修改点每一点都关联着能否点亮SPI控制器引用必须精确RV1126有两组SPISPI0和SPI1SPI0地址为0xff110000SPI1为0xff120000。确认你的屏接在哪个SPI上修改spi0或spi1。错误引用会导致整个SPI总线失效。片选号reg必须与硬件一致reg 0对应CS01对应CS1。若硬件将屏CS接到SPI0的CS1引脚此处必须写1否则驱动会向CS0发指令屏毫无反应。时钟频率必须保守设定spi-max-frequency 12000000是安全值。不要盲目追求手册标称的15MHz尤其当使用较长排线时12MHz是实测稳定的黄金频率。Reset引脚必须声明且带延时reset-gpios gpio0 12 GPIO_ACTIVE_LOW; reset-duration 15000;。GPIO编号12需根据实际原理图调整15000单位是微秒确保满足ST7789的≥10ms要求。DCData/Command引脚必须声明dc-gpios gpio1 5 GPIO_ACTIVE_HIGH;。DC线用于区分发送的是命令还是数据ST7789对此极为敏感。若遗漏驱动会将所有指令当数据写入GRAM屏幕永远处于未初始化状态。背光控制必须独立配置backlight backlight;并在dts中定义backlight节点使用PWM控制。切勿用GPIO直接开关背光否则上电瞬间电流冲击可能导致ST7789复位。兼容字符串必须一字不差compatible sitronix,st7789;。注意sitronix是厂商名st7789是型号中间用英文冒号全部小写。任何拼写错误都会导致驱动匹配失败。这七处修改每一处都经过至少三次硬件复位验证。我建议新手在修改dts后先不编译内核而是用dtc -I dts -O dtb -o spi-lcd.dtb spi-lcd.dts生成dtb再用fdtdump -s spi-lcd.dtb检查生成的二进制节点是否包含上述所有属性避免编译错误掩盖dts语法问题。3.3 初始化序列ST7789的“生命密码”缺一不可ST7789的初始化序列不是简单的“写一堆寄存器”而是一个精密的时序舞蹈。官方数据手册给出的标准序列有23条指令但RV1126 Linux驱动通常只实现了其中15条。调试中发现缺失的8条里有3条是致命的0x11Exit Sleep Mode、0x29Display On、0x36Memory Data Access Control。很多驱动代码在发送0x11后没有等待足够长的延时手册要求≥120ms就立刻发送后续指令导致ST7789内部状态机未完成唤醒后续指令被忽略。我们的实操方案是在驱动源码st7789.c的st7789_init_sequence()函数中对0x11指令后插入msleep(150)对0x29后插入msleep(50)。此外0x36指令用于设置GRAM访问方向ST7789默认是0x00从左到右从上到下但RV1126的fbdev默认坐标系是(0,0)在左上角若不设置屏幕内容会镜像或旋转。因此0x36的参数必须设为0x00并确保该指令在0x29Display On之前发送。另一个关键点是Gamma校正。ST7789支持0xE0/0xE1指令设置Gamma曲线但RV1126驱动默认未启用。实测发现未设置Gamma时屏幕在低灰度区域如#101010会出现明显色阶断层。我们在初始化序列末尾加入0xE0和0xE1指令各写入15字节的预设Gamma值从厂商提供的参考表中获取屏幕色彩过渡立即变得平滑。初始化序列就是ST7789的“生命密码”少一个字节它就拒绝苏醒。3.4 DMA传输为什么轮询模式在RV1126上必然失败RV1126的SPI控制器支持DMA但很多开源驱动默认使用轮询Polling模式。在调试初期为了快速验证硬件我会临时启用轮询模式但一旦进入量产必须切换到DMA。原因在于性能瓶颈ST7789的GRAM大小为240x320x2153.6KB以12MHz SPI速率轮询传输一帧全屏数据耗时约102ms153600*8/12000000这意味着刷新率被锁死在9.8fps且CPU占用率100%系统完全无响应。而DMA模式下CPU只需发起一次传输请求SPI控制器自动搬运数据耗时仍为102ms但CPU在此期间可处理其他任务系统流畅度提升一个数量级。RV1126的DMA引擎要求缓冲区地址必须是4字节对齐且长度为4的倍数。ST7789的RGB565数据是2字节/像素因此fbdev的framebuffer内存必须按4字节对齐分配。我们在驱动中使用dma_alloc_coherent()分配DMA缓冲区并将fbdev的fix.smem_start指向该地址。最关键的是DMA描述符配置tx_buf必须指向DMA缓冲区起始地址len必须是实际传输字节数且bits_per_word必须设为8SPI传输以字节为单位mode_bits必须包含SPI_TX_QUAD若使用四线SPI或SPI_TX_DUAL若使用双线否则DMA引擎无法正确解析数据宽度。一次DMA配置错误会导致屏幕显示大量乱码且dmesg中无任何错误提示只能靠逻辑分析仪抓取MOSI波形来反推——这也是为什么DMA调试必须配合硬件工具。4. 实操过程与核心环节实现4.1 环境准备从零开始搭建RV1126 SPI屏调试环境调试环境不是“装个SDK就行”而是一套完整的工具链闭环。我的标准配置如下硬件RV1126开发板带SPI0接口、ST7789 SPI屏带FPC排线、逻辑分析仪Saleae Logic Pro 8采样率≥100MS/s、USB-TTL串口模块CH340波特率115200、万用表、镊子。软件Ubuntu 20.04 LTS虚拟机4核CPU8GB RAM、RK官方Linux SDKrk3566_linux_release_v1.26虽为RK3566但RV1126内核源码结构高度相似、交叉编译工具链aarch64-linux-gnu-gcc版本9.3.0、dtcDevice Tree Compiler、fdtdump、devmem2、busybox提供基本shell命令。关键步骤SDK解压与路径设置tar -xvf rk3566_linux_release_v1.26.tar.gz进入kernel目录执行make ARCHarm64 rv1126_defconfig生成默认配置。启用SPI和ST7789驱动make ARCHarm64 menuconfig依次进入Device Drivers→SPI support→Rockchip SPI controller设为*再进入Graphics support→Support for frame buffer devices→ST7789V framebuffer support设为*。保存退出。编译内核与dtbmake ARCHarm64 -j4 Image生成内核镜像make ARCHarm64 -j4 rk3566-evb1-v10.dtb生成dtb注意RV1126的dtb文件名需替换为你的板子型号如rv1126-evb.dtb。烧录与启动使用upgrade_tool将Image和rv1126-evb.dtb烧录到板子eMMC启动后通过串口登录执行dmesg | grep spi查看SPI控制器是否正常探测dmesg | grep st7789查看驱动是否加载。这个环境搭建过程我强调“必须亲手编译”因为网上下载的预编译固件其dts可能未启用ST7789驱动或内核配置缺少CONFIG_FB_ST7789V导致一切调试工作归零。亲手编译才能掌控每一个bit。4.2 DTS修改与验证手把手教你写出零错误的SPI屏节点以RV1126 EVB板为例假设SPI屏接在SPI0的CS0上引脚分配为SCLK-GPIO0_A0、MOSI-GPIO0_A1、CS-GPIO0_A2、DC-GPIO0_A3、RESET-GPIO0_A4、BL-GPIO0_A5。以下是完整的dts修改步骤定位SPI0节点在arch/arm64/boot/dts/rockchip/rv1126-evb.dts中找到spi0节点确认其status okay;且pinctrl-0已正确配置引脚复用。添加SPI屏子节点在spi0节点末尾添加以下内容spi0 { status okay; pinctrl-names default; pinctrl-0 spi0_pins; st77890 { compatible sitronix,st7789; reg 0; spi-max-frequency 12000000; reset-gpios gpio0 4 GPIO_ACTIVE_LOW; dc-gpios gpio0 3 GPIO_ACTIVE_HIGH; backlight backlight; rotate 270; bgr; }; };注意reset-gpios中的4对应GPIO0_A4A组第4个引脚dc-gpios中的3对应GPIO0_A3必须与原理图一致。定义Backlight节点在dts文件末尾添加pmu { backlight: backlight { compatible pwm-backlight; pwms pwm1 0 5000000 0; brightness-levels 0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240 255; default-brightness-level 16; status okay; }; };pwm1是RV1126的PWM1通道5000000是5MHz PWM频率brightness-levels定义了17级亮度。验证dts语法执行dtc -I dts -O dtb -o rv1126-evb-spi.dtb rv1126-evb.dts若无报错则用fdtdump -s rv1126-evb-spi.dtb | grep -A 10 st7789检查节点是否生成确认compatible、reg、spi-max-frequency等属性均存在且值正确。编译并烧录make ARCHarm64 -j4 rv1126-evb-spi.dtb用upgrade_tool烧录新dtb。这一步完成后启动系统dmesg应输出类似st7789 spi0.0: ST7789V LCD panel detected的提示表明dts已生效。若无此提示90%的问题出在dts语法或引脚编号错误。4.3 驱动源码级调试当dmesg沉默时如何定位问题有时dmesg没有任何ST7789相关输出说明驱动甚至没走到probe函数。此时需深入源码调试。RV1126的ST7789驱动位于drivers/video/fbdev/st7789v.c。关键调试点有三处匹配检查在st7789_probe()函数开头添加pr_info(ST7789 probe start\n);。若串口无此输出说明of_match_table匹配失败。检查dts中compatible是否与驱动of_match_table数组中compatible字段完全一致。资源获取在platform_get_resource()后添加if (!res) { pr_err(Failed to get resource\n); return -ENODEV; }。若触发此错误说明dts中reg或interrupts属性缺失或错误。SPI传输验证在st7789_write_cmd()函数中添加pr_debug(Write cmd 0x%02x\n, cmd);并在spi_write()后添加if (ret) pr_err(SPI write failed: %d\n, ret);。若看到Write cmd但无SPI write failed说明SPI总线通信正常若看到SPI write failed则需检查SPI控制器状态寄存器。更进一步可使用devmem2直接操作SPI控制器寄存器。RV1126 SPI0基地址为0xff110000读取0xff110000SPI_CTRLR0应返回0x00000000空闲状态写入0x00000001使能SPI后再读应返回0x00000001。这能绕过驱动直接验证硬件SPI控制器是否工作。源码级调试是突破“黑盒”困境的终极手段。4.4 屏幕点亮后的终极验证不只是“亮”还要“稳”屏幕点亮只是万里长征第一步。真正的调试完成需通过三项严苛测试长时间压力测试运行fbtest工具apt install fbtest选择fb_test_pattern设置-t 3005分钟。观察屏幕是否有像素点闪烁、线条错位或局部变色。若出现大概率是电源纹波或SPI信号完整性问题。温度循环测试将整机放入恒温箱从-10℃升至60℃每10℃停留30分钟全程运行fbtest。ST7789在低温下易出现“冷凝效应”导致内部液晶响应变慢表现为拖影高温下则可能出现Gamma漂移色彩发白。需在驱动中加入温度补偿算法根据板载温度传感器读数动态调整Gamma值。EMC抗扰度测试在屏幕工作时用2W Wi-Fi路由器2.4GHz频段贴近主板观察是否出现竖条纹干扰。若出现需在SPI线旁加贴铜箔屏蔽层并将屏蔽层单点接地。ST7789对射频干扰极其敏感这是量产前必须跨过的门槛。这三项测试每项失败都意味着设计存在隐患。我曾有一个项目在常温下完美运行但EMC测试时Wi-Fi一开启屏幕就出现1px宽的绿色竖线最终解决方案是在SPI MOSI线上增加一个100nH磁珠并将ST7789的VSS引脚用0.1mm宽走线直接连接到最近的GND过孔问题消失。调试的终点不是“能用”而是“在任何条件下都可靠”。5. 常见问题与排查技巧实录5.1 典型问题速查表从现象到根因的快速定位现象可能根因排查步骤解决方案完全黑屏dmesg无任何st7789输出dts匹配失败或SPI控制器未启用1. dmesggrep spi确认SPI0是否探测成功br2.cat /proc/device-tree/spiff110000/st77890/compatible检查dts节点是否加载屏幕亮但显示全白/全黑/随机色块初始化序列错误或DMA缓冲区错位1. 用逻辑分析仪抓取前10条SPI指令波形2. 对比ST7789手册确认0x11、0x29、0x36是否发送修改驱动st7789_init_sequence()确保关键指令顺序与时序正确检查DMA缓冲区地址对齐屏幕有图像但严重偏色如全红/全绿RGB顺序错误或Gamma未校准1. dmesggrep fb查看fbdev信息确认bits_per_pixel16br2. 检查dts中是否含bgr;属性屏幕闪烁或间歇性黑屏RESET信号不稳定或电源纹波过大1. 用示波器测量RESET引脚波形确认低电平持续≥10ms2. 测量ST7789 VDD引脚纹波硬件RESET改接PMIC复位输出软件dts中reset-duration设为15000电源VDD/VCC各加10μF陶瓷电容触摸功能正常但显示无响应SPI与Touch共用同一SPI总线CS冲突1.ls /dev/spi*确认SPI设备节点数量2. 检查Touch芯片dts中reg值是否与ST7789冲突为Touch和ST7789分配不同CS号如ST7789用0Touch用1确保dts中reg不重复这张表是我过去三年整理的“血泪教训”精华。每一次填入都意味着一次深夜的硬件重焊或代码重构。5.2 逻辑分析仪实战如何用Saleae抓取并解读SPI波形逻辑分析仪是SPI调试的“X光机”。以Saleae Logic Pro 8为例抓取ST7789波形的关键设置通道分配CH0-SCLKCH1-MOSICH2-CSCH3-DCCH4-RESET可选。采样率设为100MS/s。SPI 12MHz时钟周期83.3ns100MS/s采样间隔10ns可精确捕捉每个边沿。触发设置在CS通道设置“下降沿触发”这样每次SPI传输开始时自动捕获。协议分析添加“SPI”协议解析器设置Clock polarity0CPOL0Clock phase0CPHA0Bit orderMSB firstWord size8。抓取后重点观察CS脉冲宽度应覆盖整个传输帧若CS在传输中途变高说明驱动DMA配置错误或中断被抢占。SCLK稳定性检查是否有周期性抖动或跳变若有检查电源或晶振。MOSI数据对照ST7789手册确认前几个字节是否为0x01Soft Reset、0x11Exit Sleep等关键指令。若数据全为0x00说明SPI控制器未正确写入TX FIFO。我习惯将正常波形和异常波形并排对比差异点往往就在毫秒级的时序偏差上。比如一次“花屏”问题对比发现异常波形中0x29Display On指令后的CS保持时间只有80ns而正常为120ns根源是驱动中msleep(50)被系统调度器延迟最终改为udelay(50000)50μs解决。5.3 “伪成功”陷阱那些让你误以为调试完成的假象调试中最危险的不是失败而是“伪成功”。常见陷阱有仅靠echo /dev/fb0测试向framebuffer写入固定颜色屏幕变色就以为OK。但ST7789的GRAM是双缓冲echo只写入前缓冲若未启用FBIO_WAITFORVSYNC后缓冲可能未更新导致静态画面正常动态画面撕裂。真正测试必须用fbtest或mplayer播放视频。忽略背光控制逻辑dts中声明了backlight但未在用户空间启用。echo 255 /sys/class/backlight/pwm-backlight/brightness后屏幕才真正亮起。很多调试者忘记这一步误判为屏故障。未测试不同分辨率驱动默认适配240x3
返回列表