fmql之Linux WDT
正点原子第52章。
基础知识
正点原子教程
fmql-dts
代码
APP代码(不需要编写驱动代码)
static int dw_wdt_drv_probe(struct platform_device *pdev)
{struct device *dev = &pdev->dev;struct watchdog_device *wdd;struct dw_wdt *dw_wdt; /* 描述SDWT设备 */struct resource *mem;struct dw_wdt_of_data *of_data = NULL;int ret;/* 实例化wdt对象 */ dw_wdt = devm_kzalloc(dev, sizeof(*dw_wdt), GFP_KERNEL);if (!dw_wdt)return -ENOMEM;/* 获取SWDT的寄存器基地址(物理地址)* 并将其转换为内核当中操作使用的虚拟地址* 将其存放在dw_wdt->regs中*/mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);dw_wdt->regs = devm_ioremap_resource(dev, mem);if (IS_ERR(dw_wdt->regs))return PTR_ERR(dw_wdt->regs);/* 获取输入时钟 */dw_wdt->clk = devm_clk_get(dev, NULL);if (IS_ERR(dw_wdt->clk))return PTR_ERR(dw_wdt->clk);/* 使能时钟 */ret = clk_prepare_enable(dw_wdt->clk);if (ret)return ret;/* 获取时钟频率 */dw_wdt->rate = clk_get_rate(dw_wdt->clk);if (dw_wdt->rate == 0) {ret = -EINVAL;goto out_disable_clk;}dw_wdt->rst = devm_reset_control_get_optional_shared(&pdev->dev, NULL);if (IS_ERR(dw_wdt->rst)) {ret = PTR_ERR(dw_wdt->rst);goto out_disable_clk;}reset_control_deassert(dw_wdt->rst);/* 对 struct watchdog_device 对象成员变量进行了初始化 */wdd = &dw_wdt->wdd;wdd->info = &dw_wdt_ident;wdd->ops = &dw_wdt_ops;wdd->min_timeout = 1;wdd->max_hw_heartbeat_ms =dw_wdt_top_in_seconds(dw_wdt, DW_WDT_MAX_TOP) * 1000;wdd->parent = dev;/* 调用函数:* 初始化WDT*/watchdog_set_drvdata(wdd, dw_wdt); watchdog_set_nowayout(wdd, nowayout); // 设置WDT status为WDOG_NO_WAY_OUTwatchdog_init_timeout(wdd, 0, dev); // 超时时间值/** If the watchdog is already running, use its already configured* timeout. Otherwise use the default or the value provided through* devicetree.*/if (dw_wdt_is_enabled(dw_wdt)) {wdd->timeout = dw_wdt_get_top(dw_wdt);set_bit(WDOG_HW_RUNNING, &wdd->status);} else {wdd->timeout = DW_WDT_DEFAULT_SECONDS;watchdog_init_timeout(wdd, 0, dev);}platform_set_drvdata(pdev, dw_wdt);watchdog_set_restart_priority(wdd, 128);/* 向看门狗核心层注册一个WDT设备 */ret = watchdog_register_device(wdd);if (ret)goto out_disable_clk;of_data = dev_to_ofdata(&pdev->dev);if (of_data && of_data->init) {ret = of_data->init(&pdev->dev);if (ret)goto out_disable_clk;}return 0;out_disable_clk:clk_disable_unprepare(dw_wdt->clk);return ret;
}
static const struct watchdog_info dw_wdt_ident = {.options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT |WDIOF_MAGICCLOSE,.identity = "Synopsys DesignWare Watchdog",
};
/* options:* WDIOF_KEEPALIVEPING 支持喂狗* WDIOF_SETTIMEOUT 设置超时时间* WDIOF_MAGICCLOSE 当应用层关闭设备时,WDT不会停止运行*/static const struct watchdog_ops dw_wdt_ops = {.owner = THIS_MODULE,.start = dw_wdt_start,.stop = dw_wdt_stop,.ping = dw_wdt_ping,.set_timeout = dw_wdt_set_timeout,.get_timeleft = dw_wdt_get_timeleft,.restart = dw_wdt_restart,
};
运行测试
过一会就重启了(应该是WDT没喂狗)
- fmql的WDT时间要比设置的长一些,比如这里我设置的"set 10",理论上是10s,但是我大概计算了一下,需要30s+才会复位。
- 需要查看wdt使用的clk。
开启&定时:
重启:
重启时卡在这里。
发现sd卡的第二个分区未能成功搭载。(当时不知道为什么创建了三个分区:sdb1放启动文件,sdb3放ubuntu系统,sdb2空的)(所以只需要创建2个分区即可★★★)
WDT重启系统后
linux内核启动报错Kernel panic - not syncing: No working init found. 问题分析-CSDN博客
petalinux启动报错:Kernel panic - not syncing: No working init found. Try passing init= option to kernel.-CSDN博客
显示SD卡的某个分区未成功加载。
不可行:
之前设置好了:
尝试其他解决办法
法一:
不使用wdt,使用shell命令(如reboot)让ubuntu重启。
理论可行。
法二:
修改SD卡分区,只创建2个分区。
并且修改u-boot环境变量,设置为从mmcplk0p2启动
wdt没有喂狗后成功重启ubuntu。
- 备份ubuntu系统:(要先取消sdb3的挂载)
sudo dd if=/dev/sdb3 of=/home/sdcard_backup.img bs=4M status=progress
- 拷贝到SD卡新的分区:
sudo dd if=/home/sdcard_backup.img of=/dev/sdb2 bs=4M status=progress
setenv bootargs 'console=ttyPS0,115200 noinitrd root=/dev/mmcblk0p2 rootfstype=ext4 rootwait rw'
重启后
MobaXterm(windows)无法通过SSH连接ubuntu:
尝试中。。。
其他学习内容
kill杀掉进程
https://download.csdn.net/blog/column/11438800/137284052
buildroot配置目录
【Buildroot】学习记录(2)配置注释_buildroot配置-CSDN博客
17. Buildroot根文件系统的构建 — [野火]嵌入式Linux镜像构建与部署——基于LubanCat-i.MX6ULL开发板 文档
相关文章:

fmql之Linux WDT
正点原子第52章。 基础知识 正点原子教程 fmql-dts 代码 APP代码(不需要编写驱动代码) static int dw_wdt_drv_probe(struct platform_device *pdev) {struct device *dev &pdev->dev;struct watchdog_device *wdd;struct dw_wdt *dw_wdt; …...

【算法学习之路】7.链表算法
链表算法 前言一.原地逆置思路一:头插法思路二:双指针法思路3:递归 例题:1.头插法2.双指针法3,递归 二.双指针快慢指针:一个指针快一个指针慢例题1例题2 前言 我会将一些常用的算法以及对应的题单给写完&am…...

IDEA Commit 模态提交界面关闭VS开启对比
IDEA Commit 模态提交界面关闭VS开启对比 前言开启模态提交界面优点快捷且灵活的选择需要commit文件显示文件修改内容多(主观) 缺点在模态提交界面选择文件,临时关闭模态框重新打开会重置选择的commit文件 关闭模态提交界面优点允许在commit选择文件时查看其它没有修…...
【AI赋能】AI 工具生成视频教材:从创意到成品的全流程指南
AI 工具生成视频教材:从创意到成品的全流程指南 目标 通过本教材,您将学会如何利用 AI 工具(Grok、Sora、Speechify 和 CapCut)生成一个完整的视频,包括脚本生成、视频片段制作、字幕添加、音频生成以及最终剪辑合成…...
qt 操作多个sqlite文件
qt 操作多个sqlite文件 Chapter1 qt 操作多个sqlite文件1. 引入必要的头文件2. 创建并连接多个SQLite数据库3. 代码说明4. 注意事项 Chapter2 qt 多线程操作sqlite多文件1. 引入必要的头文件2. 创建数据库操作的工作线程类3. 在主线程中创建并启动多个工作线程4. 代码说明5. 运…...

WSL with NVIDIA Container Toolkit
一、wsl 下安装 docker 会提示安装 docekr 桌面版,所以直接安装 docker 桌面版本即可 二、安装 NVIDIA Container Toolkit NVIDIA Container Toolkit仓库 https://github.com/NVIDIA/nvidia-container-toolkitgithub.com/NVIDIA/nvidia-container-toolkit 安装…...

Vue 系列之:组件通讯
子组件调用父组件方法 1、直接在子组件中通过 this.$parent.event 来调用父组件的方法 父组件: <template><p><child></child></p> </template> <script>import child from ./child;export default {components: {chi…...

【Linux实践系列】:用c语言实现一个shell外壳程序
🔥本文专栏:Linux Linux实践项目 🌸博主主页:努力努力再努力wz 那么今天我们就要进入Linux的实践环节,那么我们之前学习了进程控制相关的几个知识点,比如进程的终止以及进程的等待和进程的替换,…...
STL map 的 lower_bound(x)、upper_bound(x) 等常用函数
【STL map 简介】 ● STL map 是一种关联容器,存储键值对,每个键(key value)是唯一的,而值(mapped value)可以重复。构建 STL map 时,无论元素插入顺序如何,STL map 中的…...

【A2DP】SBC 编解码器互操作性要求详解
目录 一、SBC编解码器互操作性概述 二、编解码器特定信息元素(Codec Specific Information Elements) 2.1 采样频率(Sampling Frequency) 2.2 声道模式(Channel Mode) 2.3 块长度(Block Length) 2.4 子带数量(Subbands) 2.5 分配方法(Allocation Method) 2…...
Computational Linguistics期刊全解析:领域顶刊的投稿指南与学术价值
在人工智能与语言学交叉融合的浪潮中,《Computational Linguistics》(CL)作为该领域的标杆期刊,始终是研究者发表前沿成果的首选平台。本文将从期刊影响力、投稿策略、收稿方向等角度,为学者提供一份全面的指南。 一、…...
【量化科普】Sharpe Ratio,夏普比率
【量化科普】Sharpe Ratio,夏普比率 🚀量化软件开通 🚀量化实战教程 在量化投资领域,夏普比率(Sharpe Ratio)是一个非常重要的风险调整后收益指标。它由诺贝尔经济学奖得主威廉F夏普(William…...

运行OpenManus项目(使用Conda)
部署本项目需要具备一定的基础:Linux基础、需要安装好Anaconda/Miniforge(Python可以不装好,直接新建虚拟环境的时候装好即可),如果不装Anaconda或者Miniforge,只装过Python,需要确保Python是3.…...

TikTok Shop欧洲市场爆发,欧洲TikTok 运营网络专线成运营关键
TikTok在欧洲的影响力还在持续攀升,日前,TikTok发布了最新的欧盟执行和使用数据报告,报告中提到: 2024年7~12月期间,TikTok在欧盟地区的月活用户达1.591亿,较上一报告期(2024年10月发布…...

基于YOLO11深度学习的电瓶车进电梯检测与语音提示系统【python源码+Pyqt5界面+数据集+训练代码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

计算机毕业设计SpringBoot+Vue.js制造装备物联及生产管理ERP系统(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...

微服务保护:Sentinel
home | Sentinelhttps://sentinelguard.io/zh-cn/ 微服务保护的方案有很多,比如: 请求限流 线程隔离 服务熔断 服务故障最重要原因,就是并发太高!解决了这个问题,就能避免大部分故障。当然,接口的并发…...
labelimg标注的xml标签转换为yolo格式标签
本文不生产技术,只做技术的搬运工!!! 前言 在yolo训练时,我们需要对图像进行标注,而使用labelimg标注时如果直接选择输出yolo格式的数据集,则原始数据的很多信息无法被保存,因此一版…...

VUE3开发-9、axios前后端跨域问题解决方案
VUE前端解决跨域问题 前端页面需要改写 如果无效,记得重启服务器 后端c#解决跨域问题 前端js取值,后端c#跨域_c# js跨域-CSDN博客...
机试准备第12天
首先学习队列,队列有先进先出的特性。广度优先遍历需要基于队列实现,C中的stl引入了队列的实现方式。队列支持push(),进入队尾,pop()出队,队头出队,front()获取队首元素,back()获取队尾元素&…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”
2025年#高考 将在近日拉开帷幕,#AI 监考一度冲上热搜。当AI深度融入高考,#时间同步 不再是辅助功能,而是决定AI监考系统成败的“生命线”。 AI亮相2025高考,40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕,江西、…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...