相关疑难解决方法(0)

谁在Linux中刷新硬件看门狗?

我有一个运行2.6内核的处理器AT91SAM9G20.看门狗在引导级别启用并配置为16秒.看门狗模式寄存器只能配置一次.当代码在引导程序,引导程序或内核中挂起时,该板将重新启动.但是一旦内核出现,即使看门狗没有在任何应用程序中刷新,板也不会在16秒后重置,而是15分钟.

谁在刷新看门狗?

在我们的例子中,看门狗应该受到应用程序的影响,因此如果我们的应用程序挂起,则可以重置板.

这些是正在运行的进程:

1 root     init
2 root     [kthreadd]
3 root     [ksoftirqd/0]
4 root     [watchdog/0]
5 root     [events/0]
6 root     [khelper]
63 root     [kblockd/0]
72 root     [ksuspend_usbd]
78 root     [khubd]
85 root     [kmmcd]
107 root     [pdflush]
108 root     [pdflush]
109 root     [kswapd0]
110 root     [aio/0]
740 root     [mtdblockd]
828 root     [rpciod/0]
982 root     [jffs2_gcd_mtd10]
1003 root     /sbin/udevd -d
1145 daemon   portmap
1158 dbus     dbus-daemon --system
1178 root     /usr/sbin/ifplugd -i eth0 -fwI -u0 -d5 -l -q
1190 root     /usr/sbin/ifplugd -i …
Run Code Online (Sandbox Code Playgroud)

linux kernel arm watchdog

17
推荐指数
4
解决办法
2万
查看次数

如何使用ioctl()来操作我的内核模块?

所以我正在尝试编写一个使用linux/timer.h文件的内核模块.我让它在模块内部工作,现在我试图让它从用户程序开始工作.

这是我的内核模块:

//Necessary Includes For Device Drivers.
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#include <linux/timer.h>
#include <linux/ioctl.h>

#define DEVICE_NAME "mytimer"
#define DEVICE_FILE_NAME "mytimer"
#define MAJOR_NUM 61
#define MINOR_NUM 0

MODULE_LICENSE("Dual BSD/GPL");

static struct timer_list my_timer;

struct file_operations FileOps = 
{
    //No File Operations for this timer.
};

//Function to perform when timer expires.
void TimerExpire(int data)
{
    printk("Timer Data: %d\n", data);
}

//Function to set up timers.
void TimerSetup(void)
{
    setup_timer(&my_timer, TimerExpire, …
Run Code Online (Sandbox Code Playgroud)

linux kernel kernel-module linux-kernel gumstix

14
推荐指数
3
解决办法
3万
查看次数

标签 统计

kernel ×2

linux ×2

arm ×1

gumstix ×1

kernel-module ×1

linux-kernel ×1

watchdog ×1