youcanh 发表于 2007-6-29 23:23

S3C2410开发板上使用flash_eraseall,为什么找不到MTD信息!

急!大虾帮帮小弟。最近我要用到flash_eraseall工具,好擦除flash,往NAND上写yaffs文件系统。参考网上的做法下载了mtd-utils-1.0.0.tar&nbsp;和&nbsp;zlib-1.2.3.tar&nbsp;。我的环境是centOS5.0&nbsp;交叉编译器3.4.3下面是我的操作步骤,帮我看看有没有错误<br />首先交叉编译zlib。做法如下<br />make&nbsp;clean&nbsp;<br />CC=arm-linux-gcc&nbsp;LDSHARED=&quot;arm-linux-ld&nbsp;-shared&quot;&nbsp;./configure&nbsp;--shared<br />make&nbsp;<br />make&nbsp;prefix=/usr/local/arm/v5t_le/rootfs&nbsp;install<br />这样在rootfs下有三个目录&nbsp;include&nbsp;&nbsp;lib&nbsp;&nbsp;share在include目录里就有zlib.h我就把include里的头文件拷到了usr/include中。lib中有我们下一步用到的库文件<br />接着交叉编译mtd-util<br />修改Makefile<br />SBINDIR=/usr/sbin<br />MANDIR=/usr/man&nbsp;<br />INCLUDEDIR=/usr/include<br />上面几句不知道什么意思,就没改<br />LDFLAGS&nbsp;:=&nbsp;-L&nbsp;/usr/local/arm/v5t_le/rootfs/lib&nbsp;&nbsp;添了这句,就是前面交叉编译出来的库<br />CROSS=arm-linux-<br />CC&nbsp;:=&nbsp;$(CROSS)gcc<br /><br />make就出现了下面的错误arm-linux-gcc&nbsp;-I./include&nbsp;-O2&nbsp;-Wall&nbsp;-g&nbsp;-c&nbsp;-o&nbsp;mkfs.jffs2.o&nbsp;mkfs.jffs2.c&nbsp;-g&nbsp;-Wp,-MD,.mkfs.jffs2.c.dep<br />mkfs.jffs2.c:68:18:&nbsp;zlib.h:&nbsp;No&nbsp;such&nbsp;file&nbsp;or&nbsp;directory<br />make:&nbsp;***&nbsp;&nbsp;Error&nbsp;1<br />rm&nbsp;ftl_check.o&nbsp;mkfs.jffs.o&nbsp;flash_erase.o&nbsp;ftl_format.o&nbsp;nanddump.o&nbsp;doc_loadbios.o<br />把编译器换成3.3.2,步骤一样zlib.h找到了,链接又有错误<br />/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/../../../../arm-linux/bin/ld:&nbsp;ERROR:&nbsp;/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_modsi3.oS)&nbsp;is&nbsp;compiled&nbsp;for&nbsp;EABI&nbsp;version&nbsp;0,&nbsp;whereas&nbsp;mkfs.jffs2&nbsp;is&nbsp;compiled&nbsp;for&nbsp;version&nbsp;4<br />File&nbsp;format&nbsp;not&nbsp;recognized:&nbsp;failed&nbsp;to&nbsp;merge&nbsp;target&nbsp;specific&nbsp;data&nbsp;of&nbsp;file&nbsp;/usr/local/arm/3.3.2/lib/gcc-lib/arm-linux/3.3.2/libgcc.a(_modsi3.oS)<br />mtd换成mtd-snapshot-20040730.tar也是找不到zlib.h<br />我都快急疯了,搞了一整天都没有结果!是不是zlib和mtd的版本不配套呢?真是搞不明白了!

andante 发表于 2007-6-30 14:10

偶之前的一个笔记,希望对你有参考作用

交叉编译mtd-utils-1.0.0&nbsp;<br /><br />https://bbs.21ic.com/club/bbs/list.asp?boardid=40&t=2514289&tp=mkfs.jfss2%u4EA4%u53C9%u7F16%u8BD1%u7684%u95EE%u9898%3F%3F%3F<br /><br />&nbsp;andante&nbsp;发表于&nbsp;2007-5-23&nbsp;06:19&nbsp;LINUX|编程&nbsp;←返回版面&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />2楼:&nbsp;交叉编译mtd-utils-1.0.0&nbsp;<br /><br />假设mtd-utils-1.0.0.tar.gz解压目录为mtd-utils-1.0.0<br />#cd&nbsp;mtd-utils-1.0.0<br /><br />1)&nbsp;修改Makefile<br />CROSS=arm-linux-<br />并确认以下两项都有加&nbsp;-lz(链接zlib)<br />mkfs.jffs2:&nbsp;crc32.o&nbsp;compr_rtime.o&nbsp;mkfs.jffs2.o&nbsp;compr_zlib.o&nbsp;compr.o<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(LDFLAGS)&nbsp;-o&nbsp;$@&nbsp;$^&nbsp;-lz<br /><br />jffs2reader:&nbsp;jffs2reader.o<br />&nbsp;&nbsp;&nbsp;&nbsp;$(CC)&nbsp;$(LDFLAGS)&nbsp;-o&nbsp;$@&nbsp;$^&nbsp;-lz<br /><br />2)&nbsp;复制zlib头文件及库<br />交叉编译zlib生成三个文件夹如下:include&nbsp;lib&nbsp;share(假设为home目录下)<br />&nbsp;&nbsp;cp&nbsp;/home/include/*&nbsp;-&gt&nbsp;mtd-utils-1.0.0/include&nbsp;下<br />&nbsp;&nbsp;cp&nbsp;-ar&nbsp;/home/lib/*&nbsp;-&gt&nbsp;/usr/local/arm/3.4.4/arm-linux/lib(根据所使用交叉编译器,进行修改。<br /><br />3)&nbsp;make&nbsp;(&nbsp;用file命令查看,如&nbsp;file&nbsp;mkfs.jffs2&nbsp;)<br />#file&nbsp;mkfs.jffs2<br />mkfs.jffs2:&nbsp;ELF&nbsp;32-bit&nbsp;LSB&nbsp;executable,&nbsp;ARM,&nbsp;version&nbsp;1&nbsp;(ARM),&nbsp;for&nbsp;GNU/Linux&nbsp;2.0.0,&nbsp;dynamically&nbsp;linked&nbsp;(uses&nbsp;shared&nbsp;libs),&nbsp;for&nbsp;GNU/Linux&nbsp;2.0.0,&nbsp;not&nbsp;stripped<br />可知:交叉编译成功。<br /><br />注:最近也整这个,所以把笔记整理了下。(走了不少弯路。。)<br />&nbsp;<br />&nbsp;<br />

youcanh 发表于 2007-6-30 18:23

呵呵 搞定了!

呵呵&nbsp;谢谢!是我交叉编译zlib的时候错了。<br />编译zlib的时修改配置选项<br />./configure&nbsp;–prefix=/usr/local/arm/3.3.2/arm-linux/&nbsp;--shared<br />注意这里配置选项指向了&nbsp;/usr/local/arm/3.3.2/arm-linux/目录,编译时会自动安装&nbsp;/usr/local/arm/3.3.2/arm-linux/目录,一定不要安装错了,不然后面会找不到zlib.h<br />&nbsp;&nbsp;make&nbsp;<br />&nbsp;&nbsp;make&nbsp;install<br />然后交叉编译mtd-utils,顺利通过,编译出了flash_erase和flash_eraseall,问题又来了,我把它下载到目标板上,zlib库也拷进去了,可是执行<br />flash_eraseall&nbsp;/dev/mtdblock/3<br />提示找不到MTD设备信息,&nbsp;提示unable&nbsp;to&nbsp;get&nbsp;MTD&nbsp;device&nbsp;info<br />执行<br />flash_erase&nbsp;/dev/mtdblock/3<br />也不能擦除提示&nbsp;Erase&nbsp;Total&nbsp;1&nbsp;Units<br />有没有人遇到过这种情况<br />

wangkj 发表于 2007-7-2 09:01

我用的是dev/mtdblock3

andante 发表于 2007-7-2 20:37

flash_eraseall /dev/mtd3

flash_eraseall&nbsp;/dev/mtdblock/3<br />提示找不到MTD设备信息,&nbsp;提示unable&nbsp;to&nbsp;get&nbsp;MTD&nbsp;device&nbsp;info<br /><br />感觉,这可能与nand&nbsp;flash的擦除方式有关<br /><br />flash_eraseall&nbsp;/dev/mtdx,这样能正常擦除(当做字符设备),写入的时候,则当块设备看待。可以查阅下datasheet。偶印象中,应该是这样

youcanh 发表于 2007-7-3 12:35

谢谢

我现在用着cramfs暂时没有用yaffs,有空再试试,说不定就是这个原因

youcanh 发表于 2007-7-4 20:54

还是不行啊!

dev/mtdblock3&nbsp;dev/mtd3都试了还是不行啊!<br />擦的时候是当成字符设备来擦,可我的dev下面没有mtd设备啊,只有mtdblock设备。直接设节点是不行的,怎么才能让他出现mtd字符设备呢?下面是我的mtd信息。<br />#&nbsp;cat&nbsp;/proc/mtd<br />dev:&nbsp;&nbsp;&nbsp;&nbsp;size&nbsp;&nbsp;&nbsp;erasesize&nbsp;&nbsp;name<br />mtd0:&nbsp;00100000&nbsp;00004000&nbsp;&quot;bootloader&quot;<br />mtd1:&nbsp;00300000&nbsp;00004000&nbsp;&quot;kernel&quot;<br />mtd2:&nbsp;02800000&nbsp;00004000&nbsp;&quot;root&quot;<br />mtd3:&nbsp;00f00000&nbsp;00004000&nbsp;&quot;user&quot;<br />#&nbsp;flash_eraseall:&nbsp;/dev/mtd3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />flash_eraseall::&nbsp;No&nbsp;such&nbsp;file&nbsp;or&nbsp;directory<br />#&nbsp;flash_eraseall&nbsp;/dev/mtdblock/3<br />flash_eraseall:&nbsp;/dev/mtdblock/3:&nbsp;unable&nbsp;to&nbsp;get&nbsp;MTD&nbsp;device&nbsp;info

daxia911 发表于 2007-7-7 21:50

的啊

liangjiaf 发表于 2011-7-11 13:50

7# youcanh

liangjiaf 发表于 2011-7-11 13:50

7# youcanh

您的问题现在解决了吗?我也是最近出现这个问题。
页: [1]
查看完整版本: S3C2410开发板上使用flash_eraseall,为什么找不到MTD信息!