`
helloyesyes
  • 浏览: 1306537 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

ARM+LINUX移植攻略(十九)Linux驱动移植之看门狗

阅读更多

努力成为linux kernel hacker的人李万鹏原创作品,为梦而战。转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2011/06/06/6527969.aspx

默认看门狗是不开机启动的,我们可以向/dev/watchdog写入数据来启动关闭看门狗。使用echo命令,经过我的测试,这个命令启动的作用是先打开那个文件,再写入内容,然后关闭。也就是open->write->release。

此时打印出:

过了几秒后系统复位。

如果这样:

则系统不会复位。

为什么这样呢,下面看看源码是怎样实现的,open函数:

write函数:

release函数:

看门狗只能被一个进程打开,打开函数中先判断了一下,然后启动了看门狗;再看write函数,写入的如果是V则允许关闭看门狗,如果不是V仅仅喂狗一次;最后是release函数,如果允许关闭则关闭看门狗,如果不允许关闭,打印"Unexpected close, not stopping watchdog",喂狗一次。此时看门狗并没有关闭,所以系统会复位的,如果输入V则看门狗被关闭,这样系统就不复位了。

下面让看门狗开机启动:

查看启动信息:

首先make menuconfig进行配置:

在drivers/watchdog/s3c2410_wdt.c中进行修改:

设置成系统启动就启动看门狗,并且看门狗到期时间为20s。这样系统复位后每20s系统就会复位一次,所以我们在用户空间进行喂狗,驱动中的那个中断函数是当看门狗作为定时器时用的,所以没有实现喂狗,所以只能在用户程序中喂狗,下面是源码:

然后:

把wdt拷贝到root-2.6.30.4/sbin/下,并修改root-2.6.30.4/etc/init.d/rcS文件,添加wdt&这么一句,让系统启动后这个应用程序在后台运行:

然后重新制作文件系统:

此时由于用户程序在不断喂狗所以系统不复位了。再次查看启动信息:

分析看门狗源码s3c2410_wdt.c其中的中断处理函数是定时器中断处理函数。如果关闭复位功能,使能定时器功能,则中断处理函数中的喂狗也就是让定时器重新定时罢了。

分享到:
评论

相关推荐

    Arm+Linux系统移植(非常好的移植文档很详细)

    - **关闭看门狗**:关闭看门狗定时器。 - **禁掉所有中断**:禁止中断以保证系统的稳定。 - **设置以CPU的频率**:根据硬件配置设置CPU的运行频率。 - **设置CP15**:配置CP15寄存器。 - **配置内存区控制...

    ARM-Linux系统移植

    ### ARM-Linux系统移植知识点概览 #### 第一部分:前言 **1. 硬件环境** - **1.1 主机硬件环境** - 需要明确主机(开发机)的具体硬件配置,包括处理器类型、内存大小等。 - **1.2 目标板硬件环境** - 描述目标板...

    linux在TQ2440上移植8--启动看门狗+.pdf

    根据给定文件的信息,本文将深入探讨在TQ2440平台上移植Linux并实现看门狗(Watchdog)功能的全过程。看门狗是一种硬件或软件机制,用于监控系统的运行状态,当检测到异常时,能够自动重启系统,从而提高系统的稳定...

    linux在TQ2440上移植8--启动看门狗

    在TQ2440开发板上移植Linux并启动看门狗涉及到多个步骤,包括配置内核、编写驱动和应用程序,以及设置开机自启动。 首先,我们需要了解TQ2440开发板的硬件特性。TQ2440基于Samsung S3C2440处理器,该处理器内含一个...

    [韦东山]嵌入式Linux开发完全手册+系统移植篇

    它通常在系统上电后立即执行,执行一系列硬件初始化任务,包括关闭看门狗、改变系统时钟频率、初始化存储控制器,以及将操作系统内核从存储介质中复制到内存里。这个过程对于确保操作系统内核能够在硬件上顺利启动至...

    ARM嵌入式Linux系统开发详解

    2. ARM处理器的外围设备:涉及LCD控制器(LCD Controller)、I2C控制器(I2C Controller)、看门狗定时器(WatchDog)、USB接口(USB)等,这些都是嵌入式设备中常见的外设接口。 3. ARM处理器的网络通信支持:包括...

    Linux系统的移植.pdf

    - 关闭看门狗定时器。 - 禁止中断。 - 设置CPU频率。 - 配置内存控制器。 - 安装栈空间。 - 清除BSS段。 - 搬移NandFlash代码。 - 进入C代码部分。 - **阶段2:** - 调用初始化函数。 - 初始化网络设备。 ...

    ARM9 2440的系统移植流程

    Bootloader在嵌入式系统中起着非常关键的作用,它主要负责初始化硬件设备,设置系统时钟、中断、看门狗,初始化内存等,为操作系统的启动做好准备。而Linux内核移植则涉及到选择合适的目标板平台选项,编译内核映像...

    Linux典藏大系_-ARM嵌入式Linux系统开发介绍(免费)

    例如,ARM9TDMI处理器集成了数据缓存、数据内存管理单元、指令缓存、LCD控制器、AMBA总线接口、I2C控制器、看门狗定时器和USB接口等功能,展现了嵌入式微处理器的强大处理能力。 嵌入式系统的应用领域非常广泛,...

    linux系统移植uboot

    - **阶段1**:主要完成处理器初始化、关闭看门狗等任务。 - **阶段2**:C语言代码部分,包括设备初始化、网络配置等。 **3. 移植过程** - **环境**:确保目标板与开发环境匹配。 - **步骤**: - 修改Makefile文件...

    嵌入式Linux系统移植步步通

    2.1.2 Linux操作系统 .......................................................................................................8 2.1.3 目标板最后运行的环境....................................................

    \linux移植课程\实验文档

    - 关闭看门狗。 - 禁用所有中断。 - 设置 CPU 频率。 - 将自己复制到 RAM。 - 配置内存区域控制寄存器。 - 配置栈空间。 - 进入 C 语言代码部分。 - **阶段 2**:用 C 语言编写,实现了更复杂的功能,并提高...

    广嵌2440开发板实验资料本实验指导手册针对目前国内非常流行的三星公司 ARM9 嵌入式微处理器――S3C2440A,通过具体的实例精讲,详细介绍了 ARM9 嵌入式常用模块的原理和驱动程序实现方法。

    本实验指导手册针对目前国内非常流行的三星公司 ARM9 嵌入式微处理器――S3C2440...第四篇为嵌入式linux开发实例篇,通过4个linux应用开发实例,使大家对嵌入式linux在ARM微处理器上的移植及驱动程序设计有很好的掌握。

    嵌入式Linux驱动开发

    以ARM Cortex-M3为具体例子,通过阅读设备手册,掌握如何控制典型的硬件设备,比如LED灯、看门狗、系统时钟以及UART串口。这为学习后续章节打下了坚实的基础。 接着,基于ARM Cortex-M3的例子,深入解析了CPU硬件...

Global site tag (gtag.js) - Google Analytics