在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提供”

 



  
关键词:在uboot里添加yaffs镜像的支持

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!