我的博客已迁移至自建服务器:博客传送门,博客暂时停止,如有机器学习方面的兴趣,欢迎来看一看。
此外目前我在gitHub上准备一些李航的《统计学习方法》的实现算法,目标将书内算法全部手打实现,欢迎参观并打星。GitHib传送门
uboot启动以后,先烧写jffss看看能不能用
tftp 30000000 fs_mini_mdev.jffs2 nand erase.part rootfs nand write.jffs2 30000000 0x00260000 5b89a8“5b89a8”是实际文件的大小,下载以后会显示的,直接copy过来就可以了。这个时候还不能直接启动,uboot传给内核的参数需要修改
bootargs=console=ttySAC0 root=/dev/mtdblock3修改为
bootargs=console=ttySAC0 root=/dev/mtdblock3 rootfstype=jffs2说明根文件系统的格式是jffs2的。 命令:boot 启动。 结果:成功启动jffs格式的根文件系统
再来试试yaffs格式的根文件 uboot的参数修改为
bootargs=console=ttySAC0 root=/dev/mtdblock3 rootfstype=yaffs2烧写YAFFS
tftp 30000000 fs_mini_mdev.yaffs2 nand erase.part rootfs nand write.yaffs 30000000 260000 889bc0出现错误,说没有yaffs,进入文件查找
#ifdef CONFIG_CMD_NAND_YAFFS } else if (!strcmp(s, ".yaffs")) { if (read) { printf("Unknown nand command suffix '%s'.\n", s); return 1; } ret = nand_write_skip_bad(nand, off, &rwsize, (u_char *)addr, WITH_YAFFS_OOB); #endifCONFIG_CMD_NAND_YAFFS没有宏定义,将其在s3c2440.h文件中宏定义。 此外还需要一些修改,我直接跟着韦东山改的,是uboot里面逻辑之类的错误,不好好查代码根本查不出来。 在刚才的函数中找到nand_write_skip_bad函数,进入 a.找到下面这段代码
for (page = 0; page < pages; page++) { WATCHDOG_RESET(); ops.datbuf = p_buffer; ops.oobbuf = ops.datbuf + pagesize; rval = nand->write_oob(nand, offset, &ops); if (!rval) break; offset += pagesize; p_buffer += pagesize_oob; }修改为
for (page = 0; page < pages; page++) { WATCHDOG_RESET(); ops.datbuf = p_buffer; ops.oobbuf = ops.datbuf + pagesize; rval = nand->write_oob(nand, offset, &ops); if (rval) /* 原先是非,这样是错的,把非去掉 */ break; offset += pagesize; p_buffer += pagesize_oob; }b.在上面代码的上方的
ops.mode = MTD_OOB_AUTO;修改为
ops.mode = MTD_OOB_RAW;编译,烧写。成功启动根文件系统