我正在查看一些指针以了解 Linux 内核如何实现各种硬件时钟的设置。这基本上与设置 LCD、UART 等硬件功能将使用的各种时钟有关。例如,当 Linux 启动时,它如何处理设置 UART 或 USB 的时钟。也许像时钟管理器之类的东西。
我基本上是在尝试在我正在开发的新硬件上为不同的操作系统实现类似的东西。任何帮助将非常感激。
[编辑]
感谢您的回复和链接。所以这是我到目前为止所实施的。这应该让你知道我要去哪里。
我查找了我所针对的特定系统的硬件参考手册,并编写了一些代码来监视/修改我感兴趣的外围设备的信号/引脚,即从命令行打开/关闭它们。现在这些集合时钟/信号一起控制外围设备。HRM 会说,如果你想打开 UART 或其他东西,那么就打开这样那样的信号/引脚。@BjoernD 是的,我正在使用类似 mmap() 的函数来与外围设备通信。
我的问题的核心是我想了解使用我已经编写的实用程序的时钟/外设管理器的设计和实现。这个时钟/外设管理器可以让我控制启用/禁用我想要的外围设备。基本上,这个管理器将使我能够对正在运行的初始化代码进行更改。此外,在运行时进程可以调用此管理器来打开/关闭设备,从而优化功耗。这可能没有完全的意义,但我自己正试图解决这个问题。
现在我确信这样的事情会在 Linux 或任何操作系统中实现性能问题(没有人愿意通过在启动时打开所有外围设备来浪费电力)。我想了解它的软件架构。到目前为止,来自任何操作系统的引用都至少可以抢占先机。此外,我不是在编写自己的操作系统,有一个操作系统,但我更多地关注板级软件,即 BSP 来工作。但是无论如何感谢操作系统链接,它们真的很棒。欣赏它。
谢谢!