我正在尝试从 Linux 访问/写入 CPU 上的硬件看门狗。这是我以前从未做过的事情,所以我的知识很少。RTD 用户手册的链接是http://www.rtd.com/NEW_manuals/hardware/cpumodules/CMV34M_BDM610000077A.pdf(看门狗定时器信息见第 64 页)和我在互联网上找到并编辑的小示例程序。我在 BIOS 中启用了看门狗设置寄存器,并运行了附加的程序。程序运行并且不输出任何错误,但似乎实际上并没有做任何事情,因为我的系统没有重置(如果你不“踢狗”,它应该这样做),即使我通过编写启用看门狗1秒。希望也许有人会对我做错了什么有所了解。
#include <stdio.h>
#include <unistd.h>
#include <sys/io.h>
#include <stdlib.h>
#define BASEPORT 0x985
int main()
{
/* Get access to the ports */
if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
/* Set the data signals (D0-7) of the port to all high (1) */
outb(1, BASEPORT);
/* Sleep for a while (100 ms) */
usleep(100000);
/* Read from the status port (BASE+1) and display the result */
printf("status: %d\n", inb(BASEPORT + 1));
/* We don't need the ports anymore */
if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}
exit(0);
}