i.MX6ULL 掉电保护说明 ============================================ imx6ull在突然掉电的场合需要做好掉电保护,防止根文件系统损坏导致系统无法启动,特别是nand核心板用户,请尤为注意。 掉电保护电路 ~~~~~~~~~~~~~~~~~~~~~~~~~~ - :download:`掉电保护_原理图_20230103.pdf <../../hardware/掉电保护/掉电保护_原理图_20230103.pdf>` .. image:: media/power0.png :align: center :alt: 掉电保护原理图 掉电保护电路主要是两个部分,一是通过超级电容存储电量,在掉电时,为CPU继续供电;二是掉电检测部分,当检测到掉电的时候,电源切换为超级电容充电,同时给CPU发出个掉电信号,CPU做掉电保护相关处理。 模块接口说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: media/power1.png :align: center :alt: 掉电保护模块接口 - 引脚1:5V输出; - 引脚2:掉电检测IO的电源,用于上拉掉电检测IO; - 引脚3:掉电检测IO,掉电时该IO输出低; - 引脚4:开机信号,连接imx6ull的ON/OFF按键; - 引脚5:GND 软件配置 ~~~~~~~~~~~~~~~~~~~~~~~~~~ 这里以掉电检测IO连接imx6ull的GPIO1_IO03为例: (以下内容涉及Systemd管理方面的知识,不熟悉的朋友建议先看下 `探索Systemd `_ 教程) (1)掉电保护脚本pdp.sh .. code-block:: c :linenos: #!/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 .. code-block:: c :linenos: [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/目录 .. code-block:: sh sudo mv pdp.service /etc/systemd/system/ 赋予pdp.sh可执行权限 .. code-block:: sh sudo chmod +x pdp.sh 设置开机自启动 .. code-block:: sh sudo systemctl enable pdp sudo systemctl start pdp 查看服务状态 .. code-block:: sh sudo systemctl status pdp