TF读写修复

前言

此处做一个记录,记录自己犯下的致命错误,加上内核对TF的检举,一度导致设备基本成为白砖。


问题

部分设备出现应用无法启动问题, 串口发现用户态基本无法和内核态的交互,而且TF卡也出现了一些异常,具体表现为:
1,TF卡原先分的区减少了,丢失了
2,fdisk重新格式化,发现一直阻塞shell上,dmesg确认异常。

问题报备

1)一致认为是TF卡分的区太小,读写超过了次数,形成了坏区导致。导致。
P.S 64G的TF卡,分了2个区,分别是写日志,另外一个是离线保存图片,当网络正常将保存的图片等关联数据上传到服务。
2)TF卡做了一个循环覆盖,即写入超过了90%就将最旧的数据清除10%。认为分区太小,读写超过寿命。
3)使用一些工具分析TF,发现有坏区。

出货设备修复

1.格式化分区

#!/bin/sh
MAJOR_PATH=/dev/mmcblk1
echo "卸载LOG PIC"
umount -l /home/ubuntu/log /home/ubuntu/pic
echo "确认是否卸载完成"
df
fdisk $MAJOR_PATH <<EOF
p
d
1

p
d
2

w
EOF
echo -e "\033[1;32mDone\033[0m"

echo -e "\033[1;32m将fdisk.sh复制到/home/ubuntu/app/下,自动分区脚本复制"
cp fdisk.sh /home/ubuntu/app
rm fdisk.sh
sync

2.自动分区:

#!/bin/sh

DEVICE_FRIST_BOOT_FLAGE=/home/ubuntu/work/device_frist_flage.txt
MAJOR_PATH=/dev/mmcblk1
LOG_MOUNT_PATH=/dev/mmcblk1p1
PIC_MOUNT_PATH=/dev/mmcblk1p2

if [ ! -e $DEVICE_FRIST_BOOT_FLAGE ]; then
if [  -e $MAJOR_PATH ];then
fdisk $MAJOR_PATH <<EOF
p
d
1

p
d
2

w
EOF
sleep 1;
touch $DEVICE_FRIST_BOOT_FLAGE
fi

fi

if [ ! -e $LOG_MOUNT_PATH ] && [ ! -e $PIC_MOUNT_PATH ];then
fdisk $MAJOR_PATH <<EOF
n
p
1

103946239
n
p
2


w
EOF

fi

软件上

1)日志模块上位机可设置保存级别和关闭, 比如只打印错误信息,或打印所有的等级, 支持关闭日志。

思考

1)同一批次的设备, 部分设备出货3个月出现该问题, 部分设备出货2年依然没有该问题, 确认是
写的寿命到了吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值