当前位置:首页 > 工业控制 > 电子设计自动化
[导读]作者:孙晓明,华清远见嵌入式学院讲师。 uboot源码默认是不支持yaffs文件系统的,所以我们需要自己修改源码进行支持。 首先我们进入U-Boot源码目录添加对yaffs镜像烧写的支持. 在common/cmd_nand.c里仿照jffs2来写一

作者:孙晓明,华清远见嵌入式学院讲师。

uboot源码默认是不支持yaffs文件系统的,所以我们需要自己修改源码进行支持。

首先我们进入U-Boot源码目录添加对yaffs镜像烧写的支持.

在common/cmd_nand.c里仿照jffs2来写一些yaffs的内容:

在:

U_BOOT_CMD(nand, 5, 1, do_nand,

"nand - NAND sub-systemn",

"info - show available NAND devicesn"

"nand device [dev] - show or set current devicen"

"nand read[.jffs2] - addr off|partition sizen"

"nand write[.jffs2] - addr off|partition size - read/write `size' bytes startingn"

" at offset `off' to/from memory address `addr'n"

之后添加nand read.yaffs 的使用说明:

"nand read.yaffs - addr off|partition sizen"

"nand write.yaffs - addr off|partition size - read/write `size' bytes startingn"

然后在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 ecommendedn");

this->write_buf(mtd, this->data_poi, mtd->oobblock);

break;

修改完这些,U-BOOT就可以支持yaffs文件镜像的烧写了。

“本文由华清远见http://www.embedu.org/index.htm提供”



来源:华清远见0次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

同大多数的Bootloader一样,uboot的启动过程也分为BL1、BL2两个阶段,分别对应着SPL和Uboot。

关键字: Bootloader uboot SPL

为什么要有uboot?它能解决哪些问题?

关键字: uboot 计算机 嵌入式

在改进型差动放大器中,用恒流源取代射极电阻RE,既为差动放大电路设置了合适的静态工作电流,又大大增强了共模负反馈作用,使电路具有了更强的抑制共模信号的能力,且不需要很高的电源电压,所以,恒流源和差动放大电路简直是一对绝配...

关键字: 镜像 恒流源电路

在改进型差动放大器中,用恒流源取代射极电阻RE,既为差动放大电路设置了合适的静态工作电流,又大大增强了共模负反馈作用,使电路具有了更强的抑制共模信号的能力,且不需要很高的电源电压,所以,恒流源和差动放大电路简直是一对绝配...

关键字: 镜像 恒流源电路

前不久,Linux Mint 20的公开测试版引起了专业用户的关注,终于可以正式下载。 全世界的Linux爱好者和Messenger可以免费下载,安装和使用它们。 根据国外社区的知名用户,当前发布的安装映像全部托管在li...

关键字: 20 Linux mint 镜像

一、为什么要有uboot 1.1、计算机系统的主要部件 (1)计算机系统就是以CPU为核心来运行的系统。典型的计算机系统有:PC机(台式机+笔记本)、嵌入式设备(手机、平板电脑、游戏机)、单片机(家用电器像电饭锅、空调)...

关键字: uboot

几十年来,香水学家和科学家一直在努力探索分子结构与气味之间的关系。虽然科学家可以观察一个光的波长并识别它是什么颜色,但当涉及到气味时,科学家不能简单地观察一个分子并识别它的气味,谷歌脑力小组的研

关键字: AI 人工智能 手机 镜像

可通过点对点网桥、点对多点网桥的灵活组合,满足各种复杂环境及特殊项目需求。合理使用无线网桥,可大大缩短施工周期,简化施工流程,部署快捷可靠。 产品优势: (一)稳定性高

关键字: 组网 无线网桥 内核 镜像

很长一段时间以来,科学家和香水师一直在努力弄清楚一个分子的结构和它独特的气味是如何相互关联的。虽然,科学家可以根据光的波长来识别一种生物的颜色,但却不能仅仅根据特定的分子来识别气味。

关键字: 人工智能 模型 测试 镜像
关闭
关闭