在uboot里添加yaffs镜像的支持
出处:lhlsw 发布于:2009-07-13 11:58:01
作者:孙晓明,华清远见嵌入式学院讲师。
uboot源码默认是不支持yaffs文件系统的,所以我们需要自己修改源码进行支持。
首先我们进入U-Boot源码目录添加对yaffs镜像烧写的支持.
在commON/CMD_nand.c里仿照jffs2来写一些yaffs的内容:
在:
U_BOOT_CMD(NAND, 5, 1, do_nand,
"nand - NAND sub-system\n",
"info - show available NAND devices\n"
"nand device [dev] - show or set current device\n"
"nand read[.jffs2] - addr off|partition size\n"
"nand write[.jffs2] - addr off|partition size - read/write `size' bytes starting\n"
" at offset `off' to/from memory address `addr'\n"
之后添加nand read.yaffs 的使用说明:
"nand read.yaffs - addr off|partition size\n"
"nand write.yaffs - addr off|partition size - read/write `size' bytes starting\n"
然后在nand命令的处理函数里do_nand中增加对write.yaffs的支持,do_nand在common/cmd_nand.c中实现:
在:
if (s != NULL &&
(!strcmp(s, ".jffs2") || !strcmp(s, ".e") || !strcmp(s, ".i"))) {
…….
的判断后面加:
else if (s != NULL &&
(!strcmp(s, ".yaffs") || !strcmp(s, ".e") || !strcmp(s, ".i"))) {
if (read) {
/* read */
nand_read_options_t opts;
memset(&opts, 0, sizeof(opts));
opts.buffer = (u_char*) addr;
opts.length = size;
opts.offset = off;
opts.readoob = 1;
opts.quiet = quiet;
ret = nand_read_opts(nand, &opts);
} else {
/* write */
nand_write_options_t opts;
memset(&opts, 0, sizeof(opts));
opts.buffer = (u_char*) addr;
opts.length = size;
opts.offset = off;
/* opts.forcejffs2 = 1; */
//opts.pad = 1;
opts.noecc = 1;
opts.writeoob = 1;
opts.blockalign = 1;
opts.quiet = quiet;
ret = nand_write_opts(nand, &opts);
}
}
由于前面设置了opts.noecc = 1,不使用ecc校验码,烧写过程中会提示这个信息:
Writing data without ECC to NAND-FLASH is not recommended
Writing data without ECC to NAND-FLASH is not recommended
Writing data without ECC to NAND-FLASH is not recommended
Writing data without ECC to NAND-FLASH is not recommended
Writing data without ECC to NAND-FLASH is not recommended
可以修改driver/mtd/nand/nand_base.c文件的nand_write_page函数,将它去掉,修改如下:
case NAND_ECC_NONE:
//printk (KERN_WARNING "Writing data without ECC to NAND-FLASH is not ecommended\n");
this->write_buf(mtd, this->data_poi, mtd->oobblock);
break;
修改完这些,U-BOOT就可以支持yaffs文件镜像的烧写了。
“本文由华清远见https://www.embedu.org/index.htm提供”
上一篇:浅析函数传参及返回值
下一篇:阻塞与非阻塞赋值
版权与免责声明
凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- PLC 编程中急停开关触点抉择:常开还是常闭?接线要点揭秘2025/6/26 16:02:37
- 全面解析:PLC 控制柜设计原理、布局接线与原理图2025/6/16 16:12:05
- PLC控制系统输入/输出回路的隔离技术2025/6/12 17:27:11
- 深度解析:PLC 上升沿和下降沿指令的应用时机与使用方法2025/6/9 15:18:19
- 利用 PLC 轻松打造红绿交通灯控制系统2025/5/29 15:36:55