最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【已解决】Uboot中fatls显示根目录文件有问题

工作和技术 crifan 3241浏览 0评论

【已解决】Uboot中fatls显示根目录文件有问题

【问题】

在qt2440的板子上,以及原先的EmbedSky的uboot 1.1.6的版本,添加了USB的U盘功能,然后去执行fatls以显示我的U盘的中的内容的时候,结果显示内容有问题,不能正常显示:

EmbedSky> fatls usb 0
            grub4dos-0.4.3-2007-08-27/
            ./
            ../
      512   jaosn.cpp
            spf`d?
            d?
            撌9/
            騭p/
            stb/
 1852385396   .ar
 151653755   t.
 
 824929371   ]==’’).
 
            ]=’a’;
.       ou/
 1630037609   +1);
 
 728521569   [l]==’b’.)
 
.538976288   1]=’a’;
 
 1920099618   .els
            )
.=’/

8 file(s), 10 dir(s)

【解决过程】

网上去搜了一番,也见过有别人提到这个问题,即fatls去显示根目录的文件时,显示不正常。

然后经过不懈努力,终于网上找到对应的解决掉此bug的源码补丁了:

FAT32: fix broken root directory handling

http://git.linaro.org/gitweb?p=boot/u-boot-linaro-stable.git;a=commitdiff;h=2aa98c6612fc34145d1f692cf610690955362bd0;hp=66c2d73cfc901aa35e0331b2fd710b250151f966

然后把此改动添加到uboot 1.1.6中,然后再去尝试fatls显示内容,结果基本解决掉了此bug,但是好像根目录下面的两个固有目录,. 和..,却不能正常显示:

EmbedSky> fatls usb 0
            grub4dos-0.4.3-2007-08-27/
            drivers/
Invalid FAT entry
            disk/
Invalid FAT entry
            3d 64k/

0 file(s), 4 dir(s)

对此,又去对比了uboot 2010.12版本的fat.c源码,发现其源码fs/fat.c又有些不一样,然后就将uboot 2010.12的源码的改动更新过来,然后重新尝试,发现完全工作正常,可以正确显示根目录的内容了:

EmbedSky> fatls usb 0
            grub4dos-0.4.3-2007-08-27/
            drivers/
            disk/
            3d 64k/

0 file(s), 4 dir(s)

【总结】

uboot的之前的版本,包括常用的uboot 1.1.6和2010.06,一直有此bug,2010.12版本才完全解决。所以办法很简单,去网上下载个uboot 2010.12的版本,然后把改动更新到你当前的源码:

uboot根目录下的fs/fat.c和include/fat.h中即可。

转载请注明:在路上 » 【已解决】Uboot中fatls显示根目录文件有问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
79 queries in 0.153 seconds, using 22.12MB memory