【问题标题】:What is the best way to toggle gpios to indicate the kernel boot progress?切换 gpios 以指示内核启动进度的最佳方法是什么?
【发布时间】:2020-11-19 20:39:52
【问题描述】:

我有一个小型嵌入式系统板(很像 RasPi),运行 Yocto Linux 发行版(来自第三方供应商,而不是开放嵌入的原始存储库)。在那块电子板上有一排 LED 灯,每个 LED 灯都分配了一个特定的 GPIO。我可以使用 sysfs 轻松切换它们(例如:echo 1 >/sys/class/gpio/gpio123/value)。

我想指出内核启动序列的进度(不是在 u-boot 期间,不是在 systemd 期间,实际上是在加载驱动程序的各个步骤期间,等等。在我的板上持续大约 2 或 3 秒)就像一个闪屏,而是使用物理 LED 作为进度条“类似于闪屏”的指示器。

是否有预定义的最佳方式或“推荐”方法/地点/脚本/任何方法?这很可能是一件很常见的事情,我似乎找不到任何其他人这样做(我知道,我知道,我很可能只是没有搜索/谷歌搜索正确的词)。

谢谢!

【问题讨论】:

  • 正确的方法是使用led子系统,但根本问题是鸡与蛋的困境。在内核启动的早期阶段,led 驱动程序将不可用(即尚未初始化)。在您还希望使驱动程序能够维护该硬件的同时直接操作硬件是通常可以避免的问题。 IOW 驱动程序通常在硬件静止时启用,即已知状态。
  • 并且内核驱动探测顺序是不确定的。

标签: linux-kernel yocto


【解决方案1】:

修改你的机器板的设备树。有一个 compatible =“gpio-led”标签,用于节点切换 LED 的这些引脚。您需要了解如何在 RasPi 中切换 GPIO。也许在 Pin Funciton Controller 中,你可以找到一个 GPIO 列表,或者在互联网上你可以很容易地找到它。

这里是链接: kernel.org/doc/Documentation/devicetree/bindings/leds/leds-gpio.txt

【讨论】:

  • 或者您在内核级别编写自己的 gpio 驱动程序
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多