0

全志V3S嵌入式驱动开发(看门狗驱动)

 11 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131124913
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

全志V3S嵌入式驱动开发(看门狗驱动)

嵌入式-老费 于 2023-06-09 12:41:00 发布 93

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        大家如果做过工业级别的嵌入式设备,那么对看门狗应该不陌生。很多工业级的设备,其应用环境很多时候是非常糟糕的,甚至简单加一个塑料壳子,放在室外都是有可能的。在这么差的环境下,要保证系统持续稳定地运行,这就需要引入看门狗这个武器了。

        所谓看门狗,就是要求系统定时去进行喂狗的操作。具体时间多长,可以自己设置。软件一旦没有及时喂狗,那么系统就会自动重启。这个操作,就是为了防止嵌入式系统出现死锁、软件故障、程序跑飞等各种异常情况。

1、文档说明

        在Allwinner_V3s_Datasheet_V1.0.pdf芯片手册上面,看门狗是和timer放在一起的。这也算合理。相关的寄存器不多,主要就是5个,

d8f4f1609efa4b20bc8e7184c445b507.png

         从名字也能大概看出这5个寄存器的用途。第一个是中断开关,第二个是状态,第三个是控制,第四个是配置,第五个是模式。

        和之前的驱动都不同,看门狗完全是soc内部的模块设置,因此这个部分也就没有电路图,没有外部引脚的信号需要考虑。

3、设备树文件

        查看sun8i-v3s.dtsi文件,输入wdt,可以很容易找到看门狗的内容,

        内容也不复杂,第一个表明兼容什么样的soc,第二个表示寄存器地址范围,第三个表示中断号、中断形式。

4、查看驱动c文件

        由之前的sun6i-a31-wdt在drivers目录下面做全局查找,不需要花很多的时间就可以找到驱动文件,即sunxi_wdt.c。文件中有这样的内容,

        看到这个,基本就能判断出我们的驱动是加载对了。整个驱动基本上就是一个套路,对于驱动开发者来说,他所要做的就是把对应的回调函数填完就可以了,

5、验证和使用

        通过查看官方soc文档,我们发现目前来说看门狗的最长喂狗时间是16s。当然,配小一点也是可以的,大家可以根据自己的需求灵活设置,

40a389dc62a54db68124ef07e98de403.png

        如果不想设置,那直接使用默认配置就好。这个时候为了验证看门狗有没有起作用,可以分成两步骤,第一,查看ls -l /dev/w*下面有没有watchdog这个节点;第二,给watchdog发送一个1的数据,即

echo 1 > /dev/watchdog

         一段时间之后,如果发生了系统重启,那么代表看门狗生效。当然,没有生效的话,需要结合soc文档和kernel驱动打印日志,分析一下具体的原因了。当前,watchdog的驱动是默认打开的,大家不需要做额外的配置就可以开始测试了。

        此外,正在做、或者将来准备做工业级设备的同学,可以好好看看相关的用法,未来肯定会涉及到看门狗的操作。当然,使用看门狗,只是最后没有办法的办法,嵌入式系统本身的稳定性还是需要研发人员努力去完成的。这和看门狗本身并不冲突。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK