每次打开
开发板都会出现Par
tially written block xxx detected 而且会越来越多,看到了一些解释,但是似乎没有好的解决方法,现有方法是:
方法一,修改 yaffs_fs.c 中 yaffs_auto_checkpoint 改成 值 2
方法二,修改内核目录fs/yaffs2/yaffs_guts.c 中, static int yaffs_ScanBackwards(yaffs_Device * dev) 函数
(yaffs_guts.c文件的6437行)
在 T(YAFFS_TRACE_ALWAYS, /*YAFFS_TRACE_SCAN*/
(TSTR("Partially written block %d detected" TENDSTR),
blk));
报错是由于YAFFS_TRACE_ALWAYS造成的。只要把它改成YAFFS_TRACE_SCAN 就OK了
试验第一种方法,启动时间从20秒降到10秒。
但是,烧写内核后的第一次启动,必须等到启动完成后给出一个提示(save exit: isCheckpointed 1)后再关机,再启动才可以缩短时间。如果在这个提示出现之前关机,下次开机还是很长时间。
第二种方法效果相同,但是奇怪的是板子总是在重启完成后10秒内自动重启,这可是严重的问题!
再试,两种方法都用上,结果是,烧写内核后第一次启动完成后,肯定会再自动重启一次。以后就可以了。但是如果在重启以后未出现isCheckpointed1提示之前重启或关机,下次重启后,必然会再次自动重启一次。
看来,第一种方法还是说得过去,至少可以说,这个启动跟电脑一样,没彻底完成重启之前关机,会导致下次启动时自检,因此启动时间加长。但是第二种方法会导致重启是不可接受的,原因还不知道。
第一种方法也有一个问题,终端上,只要操作一个命令行,不管是干什么,稍后就会跳出一个提示:
save exit: isCheckpointed 1,必须敲下回车才可以换行。
**********************************************
另外,在改写bootloader过程中,经常发现,多一句或少一句源码就会导致编译代码尺寸大幅变化,为什么呢? 疑惑。