【发布时间】:2016-05-03 15:11:52
【问题描述】:
我正在使用 CPU 的内部寄存器和为看门狗编写 Linux 内核驱动程序,并在(持久)RAM 中的一个专用位置存储调试信息,以防看门狗触发复位。
在旧世界中,我的板文件中有两个 IORESOURCE_MEM 类型的资源:内部寄存器(内部寄存器的基地址加上偏移量)和 RAM 中的位置(绝对内存地址)。
我可以通过platform_get_resource() 使用适当的索引访问这些,然后我可以重新映射。
在具有设备树的新世界中,我的看门狗节点位于内部 CPU 寄存器的域中,我可以毫无问题地访问它们。
但是如何在 RAM 中添加我的内存位置? RAM 的基地址与 CPU 内部寄存器不同,所以我不能在“reg”条目中添加另一个范围(如reg = <0x20300 0x408>, <0x3BFFE000 0x1000>;)。我是否需要像这样添加一个新的“设备”?
PRAM {
#address-cells = <1>;
#size-cells = <1>;
PRAM0: Watchdog_Crash_Debug_Context {
reg = <0x3BFFE000 0x1000>;
};
};
但是如何在看门狗设备驱动程序中引用它呢?还是在看门狗设备树条目中?
Linux 版本为 4.1.18。
【问题讨论】:
-
软件看门狗的硬件?
-
硬件看门狗(在 Marvell Armada XP 上)
标签: c linux linux-kernel device-tree