问题/功能背景描述
提出此问题的背景:
由于客户的的系统偶尔卡死,在终端输入也没有反应,只能硬件复位,所有需要添加硬件看门狗,来监控系统有没有卡死,一旦卡死就复位系统。
验证的平台/板子:T113
是否通用:是
参考资料
开发记录/过程
步骤1:uboot 配置watchdog
由于客户所采用的这款watchdog需要不断的给它输入方波信号,才不会重启,在uboot下其实有watchdog驱动,但我开启后编译报错,于是就采用pwm方案,将watchdog的复位脚配置成pwm,让它不断输出方波信号。在uboot下也有sunxi_pwm这个命令来验证pwm,我只需在设备树中将复位脚配置成pwm即可。
uboot设备树配置,添加pwm0引脚配置,使能pwm0
&pwm0_pin_a {
pins = "PB5";
function = "pwm0";
muxsel = <5>;
drive-strength = <10>;
bias-pull-up;
};
&pwm0_pin_b {
pins = "PB5";
muxsel = <0>;
function = "gpio_in";
};
&pwm0 {
pinctrl-names = "active", "sleep";
pinctrl-0 = <&pwm0_pin_a>;
pinctrl-1 = <&pwm0_pin_b>;
status = "okay";
};
开启pwm0
我们只要在开机过程中加入下面命令,即可开启pwm0。
run_command("sunxi_pwm 0 500000000 1000000000", 0);
步骤2:kernel下配置watchdog
修改设备树
watchdog {
compatible = "linux,wdt-gpio";
gpio = <&pio PB 5 GPIO_ACTIVE_HIGH>;
hw_algo = "toggle";
hw_margin_ms = <1000>;
always-running = "true";
};
添加驱动程序
+CONFIG_GPIO_WATCHDOG=y
功能使用说明/测试验证方法
加载驱动前后会生成新的看门狗节点
ls /dev/watchdog*
/dev/watchdog /dev/watchdog0 /dev/watchdog1
测量看门狗喂狗引脚
可以测量到方波信息,内核通过PB5一直给看门狗芯片喂狗,周期为1秒。
3282

被折叠的 条评论
为什么被折叠?



