主题

Display driver

Display driver 表示项目围绕显示控制器驱动建立了稳定的可复用模式,通常是面向 LCD/OLED/controller 的驱动 crate,或在产品固件中把显示驱动视为独立维护边界。这里的重点不是“有屏幕”,而是显示控制器交互本身已经成为长期维护契约。 这个 Topic 关注显示控制器层,而不是更高层的 UI/graphics 语义。

  • 硬件

目录

Definition

Display driver 表示项目围绕显示控制器驱动建立了稳定的可复用模式,通常是面向 LCD/OLED/controller 的驱动 crate,或在产品固件中把显示驱动视为独立维护边界。这里的重点不是“有屏幕”,而是显示控制器交互本身已经成为长期维护契约。

这个 Topic 关注显示控制器层,而不是更高层的 UI/graphics 语义。它通常会和 Embedded Rust、Async embedded、MCU flashing integration 一起出现,但不替代这些 Topic:Display driver 解释总线事务、初始化、buffer/update 约束和与 embedded-graphics 一类框架的接缝,其他 Topic 才解释 runtime、整机交付或刷机流程(projects/gc9307-async-rs.md、projects/gc9d01-rs.md、projects/isolarail.md)。

When to use

当 README、Cargo.toml、project snapshot 或 checked-in 目录结构明确表明仓库主要维护显示控制器 driver、显示子模块,或整机中把显示驱动独立成一个明确边界时使用。若项目只是顺带驱动一块屏幕、但没有独立的显示控制器层,不必强行命中。

如果一个改动会影响显示初始化序列、总线事务、buffer/update 策略、embedded-graphics 接口、async/sync 支持、面板控制器差异或显示子模块与整机 firmware 的接缝,就应该命中 Display driver。若问题主要在页面布局、图形组件或整机刷机流程,则应回到相邻 Topic。

Habits / defaults

  • 与 embedded-graphics 或类似绘制抽象的集成是强信号,但 Topic 重点仍在控制器层,不是 UI 组件层(projects/gc9d01-rs.md)。
  • 若支持 async,不应强迫所有下游 firmware 必须采用 async runtime;更稳妥的做法是把 async 作为扩展能力,而不是唯一接口(projects/gc9307-async-rs.md)。
  • 显示驱动默认要写清总线和刷新边界:SPI/并口/I2C 哪一层负责、是否有 frame buffer、全屏刷新还是局部更新、对下游 timing 有何要求。
  • 对产品仓中的显示子模块,要明确它是“可独立维护的 driver 层”还是“整机 UI 子系统的一部分”。像 projects/isolarail.md 这种仓库,回答时必须指出 display 模块只是整机的一层,而不是整个产品的定义。
  • 显示驱动的验证常在 crate 层和整机层分开:crate 层验证寄存器/接口/编译边界,整机层验证上屏、方向、刷新、背光和交互联动。

Reference implementations

  • projects/gc9307-async-rs.md:典型显示控制器 driver crate,适合看 async support 如何作为可选能力叠加。
  • projects/gc9d01-rs.md:典型 embedded-graphics 兼容 driver,适合看控制器层与图形抽象层的接缝。
  • projects/isolarail.md:整机 firmware 中把显示模块单独保留为子边界,适合提醒维护者不要把显示层和整机控制逻辑混成一团。
  • projects/isolappurr-usb-hub.md:硬件/固件/Web/文档一体项目,适合补充“显示驱动只是更大系统的一部分”这一面。
  • projects/pd-sink-stm32g431cbu6-rs.md:可作为窄样本,提醒显示相关逻辑有时嵌在更小的设备交互面里,而不是单独成仓。

Failure modes

  • 只因为仓库“带屏幕”就打 Display driver,却没有控制器层证据,会让 Topic 失去判别力。
  • 把 Display driver 当成整个仓库的总括标签,忽略 Embedded Rust、Async embedded、MCU flashing integration 等相邻 Topic,会让后续 Agent 无法判断真正应该验证的是驱动接口、整机运行时还是刷机链路。
  • 只写 embedded-graphics 集成,不写初始化序列、刷新边界和总线约束,会让真正的维护风险完全丢失。
  • 把 crate 层验证和整机上屏验证混为一谈,也会让审查粒度失焦;Topic 回答里应明确哪一层在保什么语义。

Evidence index

  • projects/gc9307-async-rs.md
  • projects/gc9d01-rs.md
  • projects/isolarail.md
  • projects/isolappurr-usb-hub.md
  • projects/pd-sink-stm32g431cbu6-rs.md
  • skills/style-playbook/references/data/topics/display-driver.json