目前开发用的 ARM 开发板,刷了 Ubuntu MATE 系统,今天遇到怪事: 调试的时间发现设置 GPIO 没用了,前台运行脚本错误内容为 INPUT OUPUT ERROR, 马上敲 df 命令结果也执行不了,也是同样的错误提示,敲 free 命令也不行,敲 ls 命令是行的; cd 到 df 命令所在的目录,再 ls,结果不行; 无奈重启,结果有线网口灯都不亮了。
网口灯都不亮的问题,之前就遇到过,还以为是网口坏了,重新刷系统也不行,但放了几天以后,网口灯神奇地好了。
现在怀疑是要么是 flash 存储器坏了,要么是文件系统不行;个人更倾向于文件系统,flash 存储器固然容易坏,但文件系统应该有检测哪块区域坏掉的能力,好像有专门的 flash 文件系统
1
huangya 2020-07-14 09:42:15 +08:00
flash 存储器有许多种,你先给下你用的型号。
|
2
koebehshian OP @huangya 刚才又试了下那个坏的板了,结果又全部恢复了,现在怀疑现场有干扰,给板子加个壳应该能减小干扰吧
|
3
love 2020-07-14 09:48:39 +08:00 via Android
关系应该不大,不过我用的是 flash 专用文件系统 f2fs
|
4
koebehshian OP @love 从现在又恢复的情况看,干扰的可能性比较大。现场和开发板放在一起的设备还有一个路由器,一个开关电源,会不会被开关电源干扰了
|
5
Cooky 2020-07-14 10:04:19 +08:00 via Android
flash 加个金属壳?
|
6
reus 2020-07-14 10:06:30 +08:00
……flash 坏的几率这么大,居然不怀疑,怀疑 ext4 ?
文件检测到坏块又能怎样处理?除了给你返回 IO error 还能怎么处理? 当然,ext4 确实没有 crc 之类机制,zfs 和 btrfs 有。但这和是不是面向 flash 无关。 另外,数字信号没那么容易干扰…… 坏了某一个块,没用到的话,是不会出错的。所以我的判断是,有坏块,只是当前没用到那一块。全盘扫描一下,看有没有办法屏蔽掉那些块,将就用吧 |
9
flynaj 2020-07-14 10:57:58 +08:00 via Android
树莓派这样子大概率是硬件问题,不会是文件系统问题。
|
10
vk42 2020-07-14 11:08:15 +08:00
关键看你的板子用的什么 flash 啊,如果是 eMMC 之类的带主控的那基本就当优盘用,啥文件系统区别不大。要是 NAND 或 NOR flash 的话一般要用专门的文件系统
|
11
jworg 2020-07-14 11:10:26 +08:00
理论上断电可能会有问题,不过概率非常非常小。nandflash 上 jffs2 和 ubifs 用的比较多,也用 soc 厂商自己实现的 nandflash 驱动带坏块管理然后上面跑 ext2/3/4
|