使用uboot116,启动扬创的utulinux。
发现,用扬创自己的uboot可以正常加载yaffs文件系统,但是他们不开放源代码。
后来自己移植。发现自己移植的怎么也不能正常加载。 后来发现:
在uboot116的 nand_util.c 中的444行。
if (opts->writeoob) {
/* read OOB data from input memory block, exit
* on failure */
memcpy(oob_buf, buffer, meminfo->oobsize);
buffer += meminfo->oobsize;
{
unsigned char ucTemp;
ucTemp = oob_buf[8];
oob_buf[8] = oob_buf[9];
oob_buf[9] = ucTemp;
ucTemp = oob_buf[13];
oob_buf[13] = oob_buf[14];
oob_buf[14] = ucTemp;
}
把oob的顺序掉一下,就会和扬创带的uboot一样了。 我一定要搞清楚这是为什么。
难道是故意的?如果真是的话,那也太无耻了。
/* write OOB data first, as ecc will be placed
* in there*/