AM5728(AM5708)开发实战之使能u-boot看门狗

2023-05-16

一 看门狗介绍

为了使嵌入式系统能够在异常情况下自动复位,一般需要引入看门狗
看门狗可以分为如下几类:
1 CPU自带的看门狗模块
优点:可以灵活配置溢出时间,可以随时禁用
缺点:需要初始化,如果在初始化之前跑飞或者在禁用之后跑飞,此时看门狗无法复位系统
2 独立的看门狗芯片
优点:无须配置,上电即用,系统恢复能力高
缺点:无法灵活配置溢出时间,无法禁用,灵活性低,增加成本
3 软件看门狗
软件看门狗实际上属于监控程序

二 U-boot看门狗初始化

(1) 禁用看门狗
初始化看门狗之前必须禁用看门狗。具体代码如下所示:
在这里插入图片描述
调用while语句可以确保寄存器写入成功
(2) 设置看门狗预分频器
在这里插入图片描述
看门狗时钟频率为32KHz
BIT(5)表示使能预分频器,PTV为预分频器参数
PTV等于0,WCRR计数寄存器增加32768为1秒
PTV等于1,WCRR计数寄存器增加16384为1秒
PTV等于2,WCRR计数寄存器增加8192为1秒
PTV等于3,WCRR计数寄存器增加4096为1秒
PTV等于4,WCRR计数寄存器增加2048为1秒
(3) 设置看门狗到期时间
在这里插入图片描述
在这里插入图片描述
到期时间换算成计数值等于((secs) * (32768/(1<<PTV)))
WCRR计数寄存器终点为0xffffffff,此时看门狗会溢出,因此:
WCRR计数寄存器起点为0xffffffff - ((secs) * (32768/(1<<PTV))) + 1,即WLDR寄存器的初始值为0xffffffff - ((secs) * (32768/(1<<PTV))) + 1
(4) 喂狗,每次喂狗时写入不同的数值到WTGR触发寄存器,触发看门狗自动将WLDR寄存器的数值装入WCRR计数寄存器
在这里插入图片描述
(5) 使能看门狗
在这里插入图片描述

三 添加代码到u-boot源码树

由于上述代码定义成了omap_wdt.c和 omap_wdt.h两个文件,因此需要将上述代码以及调用函数添加到u-boot源码树中,
具体实现如下所示:
1 cp omap_wdt.c omap_wdt.h u-boot/board/ti/common/
2 u-boot/board/ti/common/Makefile文件末尾添加如下行:
obj-y += omap_wdt.o
3 u-boot/board/ti/am57xx/board.c文件开头添加如下行:
#include “…/common/omap_wdt.h”
board_late_init()函数添加看门狗初始化函数:
#if !defined(CONFIG_SPL_BUILD)
board_ti_set_ethaddr(2);
omap_wdt_init();
#endif
经过上述三个步骤u-boot成功使能看门狗,但是linux内核启动时会重置看门狗模块,因此需要关闭看门狗重置程序。具体实现如下所示:
linux/arch/arm/mach-omap2/omap_hwmod_7xx_data.c文件中
dra7xx_wd_timer2_hwmod结构体添加如下标志即可
.flags = HWMOD_INIT_NO_RESET,
上述标志会禁止linux内核重置看门狗模块
4 喂狗程序
linux启动成功后需要喂狗,每次喂狗时写入不同的数值到WTGR触发寄存器,触发看门狗自动将WLDR寄存器的数值装入WCRR计数寄存器,具体代码如下所示:
devmem2 0x4AE14030 w 0x1234

devmem2 0x4AE14030 w 0xFFFFEDCB

devmem2 0x4AE14030 w 0x1234

devmem2 0x4AE14030 w 0xFFFFEDCB

四 参考代码

u-boot看门狗驱动路径为:
board-support/u-boot/board/ti/common/omap_wdt.c
board-support/u-boot/board/ti/common/omap_wdt.h
board-support/u-boot/board/ti/common/Makefile

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AM5728(AM5708)开发实战之使能u-boot看门狗 的相关文章

  • @Autowired

    1 Autowired依赖注入底层是通过反射暴力获取对象并赋值给属性 2 setter与构造器注入是通过给IOC容器提供入口注入的
  • C语言 Hanoi(汉诺)塔问题,用递归解决

    问题 古代有一个梵塔 xff0c 塔内有3个座A xff0c B xff0c C 开始时A座上有64个盘子 xff0c 盘子大小不等 xff0c 大的在下 xff0c 小的在上 有一个老和尚想把64个盘子从A作移到C座 xff0c 但规定每
  • Ubuntu server 22.04 安装kvm

    本人有一台工控机 xff0c 5500u cpu xff0c 8g 内存 xff0c 本来是打算用来跑docker的 xff0c 但是因为要装 k8s 虚拟机会更加合适方便 xff0c 宿主机的系统是ubuntu server 22 04
  • win10 linux 子系统 wsl2实现ip自动转发

    win10 系统带linux子系统有两个版本 第一个是wsl xff0c 它与windows 系统公用同1个ip地址 xff0c 但是没有自己内核 xff0c 不支持docker 第二个版本是wsl2 xff0c 它可以使用docker x
  • 【独家】互联网变现与计算广告(干货+5000字精彩问答)

    本讲座选自2015年9月28日刘鹏先生在清华大数据 技术 前沿 讲座上所做的题为 互联网变现与计算广告 的演讲 刘鹏 xff1a 大家好 xff0c 我是老的清华人 xff0c 诸位都是95后了 xff0c 你们出生的时候我是95年入学 清
  • 本地(window)使用alist和RaiDav网盘挂载

    一 背景 百度网盘的限速可能会让你转战阿里云盘 xff0c 但是阿里云盘的缺点在于不能分享 xff0c 网络上的资源都是通过各类网盘来分享的 xff0c 这样就会让你可能同时拥有不同网盘的账号 那么我们有没有一款工具 xff0c 可以将这些
  • 【笔记】ssd mobilenet 网络

    之前实习用过太多次mobilenet ssd xff0c 但是一直只是用 xff0c 没有去了解它的原理 今日参考了一位大神的博客 xff0c 写得很详细 xff0c 也很容易懂 xff0c 这里做一个自己的整理 xff0c 供自己理解 x
  • 添加与删除 Ubuntu 环境变量

    1 作者的系统是Ubuntu 13 10 xff0c 在其他linux发行版中环境变量的设置方式类似但会有不同 xff1b 2 这里以环境变量PATH为例 xff0c 环境变量还可以有很多 xff0c 也可以自己定义名称 什么是环境变量 环
  • [Kali Linux 安全渗透教程新手版]

    1 1什么是安全渗透 渗透测试时通过模拟黑客的攻击方法 来评估计算机网络系统安全的一种评估方法 通常的评估方式对评估结果更具全面性 而渗透测试更注重安全露的严重性 1 6Kali更新与升级 Ctrl 43 F1 快捷键提示 Ctrl 43
  • CTreeList 拖拽功能实现

    转载地址 http tech ddvip com 2008 11 122662837992492 html Visual C 43 43 中提供的MFC类CtreeCtrl xff08 树型控件 xff09 用来显示具有一定层次结构的数据项
  • 使用hex编码绕过主机卫士IIS版本继续注入

    本文作者 xff1a 非主流 测试文件的源码如下 xff1a 我们先直接加上单引号试试 xff1a http 192 168 0 20 conn asp id 61 1 27 很好 xff0c 没有报错 那我们继续 xff0c and 1
  • Win10启动VMware虚拟机结果宿主机蓝屏重启

    VM启动虚拟机结果宿主机蓝屏重启 xff0c 按照以下步骤处理即可 xff0c 我是通过升级VM版本最终解决的 xff0c 自己看自己的情况 xff0c 都试一下就行 1 操作控制面板 右键windows图标 xff0c 点击搜索 xff0
  • Debian9.12镜像下载及网络、软件源配置

    Debian9 12安装 配置 文章目录 获取镜像虚拟机安装配置网络配置合适的仓库源更新软件包 安装所需工具 搭建环境Debian镜像下载链接其他资源 获取镜像 Debian9 12 Debian 9 12 官方原版镜像下载 任我乐 ren
  • dpkg: 处理软件包 xxx (--configure)时出错 解决办法

    第一步 xff1a 备份 sudo mv var lib dpkg info var lib dpkg info bk 1 第二步 xff1a 新建 sudo mkdir var lib dpkg info 1 第三步 xff1a 更新 s
  • 解决SQL server中提示对象名无效

    用SQL server的时间不长 xff0c 但现在遇到两种情况 xff0c 在这里分别说一下解决办法 1 刚打开SQL server Manager Studio xff0c 想看看表里的信息 xff0c 就写一个查询语句 xff0c 结
  • 解决maven无法下载依赖的问题

    大概从2020年1月底的时候第一次遇到这个问题 xff0c 当时在假期期间自己写小Demo玩 xff0c 依赖下载不了就去找了个包放进去 xff0c 并没有太在意 直至几天后因为疫情在家远程办公的时候新项目的依赖一直下载不了 xff0c 困
  • 解决idea已经添加外部jar包但仍然找不到包的错误

    对于开发人员来说 xff0c 开发项目时除了maven下载的依赖之外 xff0c 一般都需要引入一些公司内部封装的jar包依赖 xff0c 但是有时候会出现明明已经build path了 xff0c 但是build项目的时候还是报错说某某包
  • vmware安装虚拟机提示此主机不支持64位系统,此系统无法运行

    原因 安装虚拟机提示这个是因为和电脑上的Hyper V服务冲突了 xff0c 解决办法是关闭Hyper V服务就可以了 步骤 打开控制面板找到程序和功能 点击启用或关闭Windows功能 找到Hyper V xff0c 此时状态是勾选的 取
  • springboot项目启动指定项目外部yml配置文件

    spring boot的经典项目配置是application yml xff0c 在项目打包部署运行的时候 xff0c 这个文件也会一同打进包里 xff0c 随之启动 这就带来了一个问题 xff1a 如果部署的服务器发生了变动 xff0c
  • MyEclipse安装SVN插件及插件下载地址

    在网上找了很多安装教程 xff0c 但是找到的subclipse的下载地址都访问不到 xff0c 不知道是不是需要翻墙 xff0c 我自己找了个测试过有效的 xff1a 网盘下载地址 xff1a https pan baidu com s

随机推荐

  • Linux 安装并配置 OpenLDAP 新编(3)YUM安装

    Linux 安装并配置 OpenLDAP 新编 xff08 3 xff09 YUM安装 我实操OpenLDAP的过程 xff0c 是先根据官网资料编译安装 xff0c 大约花费了近2周时间 xff0c 也有点陷入牛角尖了 xff0c 一时不
  • org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException

    问题描述 xff1a 1 在application yml文件里的注释乱码 2 idea编辑器提示这个文件被错误的编码UTF 8加载 xff0c 并提示重新使用GBK加载等等 3 项目启动报错 xff1a java nio charset
  • 解决java.lang.IllegalStateException: Cannot call sendError() after the response has been committe

    错误截图 xff1a 错误代码 xff1a 错误原因 xff1a 输出流关闭之后 xff0c socket也已经关闭 xff0c 不能再次发送response xff0c 所以导致错误的就是return的返回值信息 xff0c 这时候把re
  • Object转成JSONObject

    object转jsonObject的时候经常会因为符号报错 xff0c 类似于 xff1a span class token function expect span at span class token number 0 span ac
  • Comparison method violates its general contract!null

    span class token annotation punctuation 64 Override span span class token keyword public span span class token keyword i
  • bigDecimal存到数据库后变成0

    检查数据库该字段 xff0c 小数点栏是不是默认为0了 xff0c 像这样 xff1a 如果是 xff0c 就改成你需要该字段保留的小数点后位数 xff0c 比如你要保留两位 xff0c 这一栏就改成2
  • [教程] 中兴光猫f477V2改固话桥接,支持电脑、手机SIP APP拨打

    坐标北京 联通免费开通固话 xff0c 新给的光猫是比较新的型号中兴F477V2 光猫本身支持voip xff0c 买个最普通的座机接到phone口就可以用了 xff0c 固话号码是01082xxxxxxx打头的 xff0c 资费市内0 1
  • PVE安装笔记

    PVE新安装 1 安装 iso准备 xff0c 系统盘目录有6 2的iso xff0c 挺好用 准备一个U盘 xff0c 最好是usb2 0的 xff0c 用ultraiso写入硬盘镜像 xff0c 注意选择raw格式 xff08 非常重要
  • pve 6.2增加CPU温度显示

    1 安装PVE xff0c 建议用refus烧录U盘 xff0c 记得选DD镜像模式 2 iso文件名 proxmox ve 6 2 1 iso 3 安装 4 替换如下文件中相关字段 具体参考上传文件pve主页添加温度显示 6 2 zip
  • VC++工程头文件重复和循环引用

    复杂工程中头文件众多 xff0c 很容易发生包含顺序 重复引用以及循环引用导致的编译链接错误 xff01 最近整理工程中文件引用时遇到不少这方面的问题 xff01 一般来说 xff0c 包含顺序问题会导致某些类型 函数等无定义 xff0c
  • PyQt+界面防卡死+selenium+多进程爬取图片一次打通!

    创建MyUrl py 编写爬取图片代码 爬取图片 xff0c 实际上就是对网页信息的读取 而selenium可以很好的做到这一点 xff0c 相对于beautifulsoup只能爬取静态前端源码的缺点 xff0c selenium可以解析由
  • LDAP应用篇(1)CentOS8接入登录

    LDAP应用篇 xff08 1 xff09 CentOS8接入登录 相比于服务器端的配置 xff0c 做为客户端接入LDAP的文章和资料就多了许多 能看到的文章都介绍了使用 authconfig 或者 authconfig tui xff0
  • MySQL OCP888题解031-使用X509加密连接

    文章目录 1 原题1 1 英文原题1 2 中文翻译1 3 答案 2 题目解析2 1 题干解析2 2 选项解析 3 知识点3 1 知识点1 xff1a X509 X 509 3 2 知识点2 xff1a 创建需要X509加密的账户 CREAT
  • 【PIL】验证码验证

    import random from PIL import Image ImageDraw ImageFont ImageFilter 图片的写文本的基础使用 img 61 Image new mode 61 34 RGB 34 size
  • 解决80端口被占用的问题

    先前在安装warmpsever的时候 xff0c 图标颜色总是橘黄色的不正常状态 xff0c 弹出系统错误提示框 xff1a 无法启动此程序 xff0c 因为计算机中丢失 MSVCR110 dll 尝试重新安装该程序以解决此问题 百度了一下
  • 《Python程序设计(第3版)》配套教学大纲

    配套教材 xff1a Python程序设计 xff08 第3版 xff09 xff0c xff08 ISBN xff1a 978 7 302 55083 9 xff09 xff0c 董付国 xff0c 清华大学出版社 xff0c 2020年
  • ROS学习番外篇11—Winows的WSL2(Linux子系统)下安装ROS并搭建开发环境

    一般ROS的开发是在Ubuntu下面进行的 自从今年6月份微软为WSL装配上了gui神器之后 我们又多出了一种新的玩法 那就是在Windows下用WSL2来安装Ubuntu虚拟机来做ROS的开发 虽然可能有老哥要说 之前搞个虚拟机不也一样
  • 数据结构5 栈和队列

    1 1 分数 2 作者 DS课程组单位 浙江大学 Run the following operations on a stack S Push S 1 Push S 2 Pop S Push S 3 Pop S Pop S The outp
  • git命令之快速搭建远程仓库

    首先使用系统管理员账号登录远程服务器 xff0c 具体步骤如下所示 xff1a 1 安装git应用程序 sudo apt get install git 2 创建git用户组和git用户 xff0c 具体命令如下所示 xff1a group
  • AM5728(AM5708)开发实战之使能u-boot看门狗

    一 看门狗介绍 为了使嵌入式系统能够在异常情况下自动复位 xff0c 一般需要引入看门狗 看门狗可以分为如下几类 xff1a 1 CPU自带的看门狗模块 优点 xff1a 可以灵活配置溢出时间 xff0c 可以随时禁用 缺点 xff1a 需