i.MX6ULL 掉电保护说明

imx6ull在突然掉电的场合需要做好掉电保护,防止根文件系统损坏导致系统无法启动,特别是nand核心板用户,请尤为注意。

掉电保护电路

掉电保护原理图

掉电保护电路主要是两个部分,一是通过超级电容存储电量,在掉电时,为CPU继续供电;二是掉电检测部分,当检测到掉电的时候,电源切换为超级电容充电,同时给CPU发出个掉电信号,CPU做掉电保护相关处理。

模块接口说明

掉电保护模块接口
  • 引脚1:5V输出;

  • 引脚2:掉电检测IO的电源,用于上拉掉电检测IO;

  • 引脚3:掉电检测IO,掉电时该IO输出低;

  • 引脚4:开机信号,连接imx6ull的ON/OFF按键;

  • 引脚5:GND

软件配置

这里以掉电检测IO连接imx6ull的GPIO1_IO03为例:

(以下内容涉及Systemd管理方面的知识,不熟悉的朋友建议先看下 探索Systemd 教程)

(1)掉电保护脚本pdp.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 #!/bin/bash
 echo 3 > /sys/class/gpio/export
 echo in > /sys/class/gpio/gpio3/direction

 while true
 do
     dect_gpio=$(cat /sys/class/gpio/gpio3/value)
      if [ ${dect_gpio} = '0' ]; then
     sync
     poweroff
     fi
      sleep 0.5s;
 done

(2)掉电检测服务pdp.service

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
 [Unit]
 Description = power down protection daemon
 [Service]
 # pdp.sh放在/home/debian/目录下,放在其他目录可更改该
 路径
 ExecStart = /home/debian/pdp.sh
 Restart = always
 Type = simple
 [Install]
 WantedBy = multi-user.target

(3) 开机启动掉电保护脚本pdp.sh

把pdp.service放到/etc/systemd/system/目录

sudo mv pdp.service /etc/systemd/system/

赋予pdp.sh可执行权限

sudo chmod +x pdp.sh

设置开机自启动

sudo systemctl enable pdp
sudo systemctl start pdp

查看服务状态

sudo systemctl status pdp