如何在NOR Flash上使用jffs2根jffs2文件系统制作

君,已阅读到文档的结尾了呢~~
【doc】JFFS2文件系统在嵌入式Linux根文件系统中的应用研究应用,文件,中的,jffs2,根文件系统,系统中,文件系统,JFFS2
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
【doc】JFFS2文件系统在嵌入式Linux根文件系统中的应用研究
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口驱动开发/核心开发
如何在NOR Flash上使用jffs2根文件系统
Hi,guys:
基本配置:
CPU:LPC2478
SDRAM:16M
NOR&Flash:4M&
kernel:uClinux(2.6.24.2)
开发板提供的根文件系统只有ROMFS,而且是通过uboot通过U盘down到SDRAM上运行的
我已经实现TFTP启动,根文件系统ROMFS,也能挂载NFS文件系统,下一步,打算制作jffs2根文件系统,这个才是产品需要的,
网上搜罗下资料,加上个人理解,是不是制作流程如下:
首先利用现在已经生成的romfs文件系统,然后使用mkfs.jffs2工具把这个文件夹制作成jffs2的镜像文件啊
mkfs.jffs2&-o&rootfs_jffs2.img&-r&romfs&-e&0x40000&-l&--pad=0x1e80000
然后写入flash?
2。可不可以直接生成jffs2根文件系统镜像,因为我在makefile文件中看到romfs文件系统使用genromfs工具生成的,如下:
[&-d&$(IMAGEDIR)&]&||&mkdir&-p&$(IMAGEDIR)
genromfs&-v&-V&"ROMdisk"&-f&$(ROMFSIMG)&-d&$(ROMFSDIR)
$(CROSS_COMPILE)objcopy&-O&binary&\
$(ROOTDIR)/$(LINUXDIR)/vmlinux&$(IMAGE)
是否可以直接使用mkfs.jffs2替换genromfs生成jffs2镜像
3。我使用笔记本,没有并口,暂时还没有Jlink,可不可以直接通过tftp把内核VMlinux.bin和根文件系统jffs2.img下载
到SDRAM上运行啊,每次刷写flash好累哦
1.2.都没问题。
注意一下,第一步的这个0x40000表示flash块大小的,要和flash规格对应,常见的是128KB和64KB的,256KB没见过,你要查一下规格书。
3.可以,但是下载的时候,内核不是vmlinux.bin,这是个压缩文件,你要下载编译直接生成的那个vmlinux文件。jff2的img文件好像不行,你可以烧录一个jffs2的img文件到flash,引导起来以后再把目录mount过来。
3.内核不是bin文件?
我最开始用的U-boot从U盘启动和TFTP启动,都是vmlinux.bin文件啊?
tftp_boot=tftpboot&0xa0008000&vmlinux.bin;tftpboot&0xa0800000&romfs_5.go&0xa0008000
usb_boot=usb&fatload&usb&0&0xa0800000&romfs_5.fatload&usb&0&0xa0008000&vmlinux.bin;go&a0008000
都是bin文件啊,文件系统是romfs的镜像文件
现在的问题就是无法通过jlink&V8的jflash下载bin文件到片外NOR&flash,所以才想把内核和根文件系统(jffs2)都直接down到SDRAM上运行,这样只要根文件系统能挂上,在调flash也好调点
0xa0080000是你的flash地址还是内存地址?如果是内存地址应该就可以使用了。之前不知道你这个vmlinux.bin怎么来的,所以推测可能是经过压缩的镜像文件,这是不能直接执行的,需要解压到内存中执行。内存中可以直接执行的那个vmlinux是可以直接下载运行的。
但romfs是压缩的文件系统,内核需要进行正确的挂载mtd分区;下载到内存中以后,内核怎么挂载,光给个内存地址是不行的。
我调试的时候,一般是要接上网线的,内核起来以后,将本地编译的可执行文件所在目录,通过nfs&mount到romfs中某个指定的目录就能用了。
0xa0080000&是内存地址
romfs.img是文件系统的镜像,nfs只是mount&宿主机的一个文件夹到内核,
我现在是想直接使用jffs2的根文件系统,先在内存里
这个不行。
应该也没有必要,你的flash里面装一个通用的jffs2文件系统,然后mount服务器的一个目录。那个目录可以是你做jffs2文件系统之前的文件夹,里面你想怎么改就怎么改。
笔记本没有并口,不能download&bin文件到NOR&flash
正在尝试通过uboot&把bin文件down到NOR&flash,CFI驱动还有点问题,
可以这样啊!怎么不能下载?
只要烧写了bootloader,并且bootloader支持tftp就没问题。
开启tftp服务器(tftp.exe);
[u-boot]#&tftp&&vmlinux.bin&回车,
下载完就来个cp.b&00000(这是你要往nor&flash中写的起始地址)size(就是你上面通过tftp下载的文件的大小,下载完会有显示)。
注:这样还可以来个bootloader自己更新自己。
引用&7&楼&zgp826&的回复:可以这样啊!怎么不能下载?
只要烧写了bootloader,并且bootloader支持tftp就没问题。
开启tftp服务器(tftp.exe);
[u-boot]#&tftp&&vmlinux.bin&回车,
下载完就来个cp.b&00000(这是你要往nor&flash中写的起始地址)size(就是你上面通过tftp……
这个当然知道,cp前面还缺个erase&bank&2
uboot是使用连续擦除扇区的方式去进行片擦除,不能下载的原因是扇区未擦除
发现在每个sector擦除时延时了udelay(25000),根据datasheet是最大25ms,貌似是正确的
但好像udelay(25000)没有达到要求,使用了一下方式
for&(i=0&;&25;i++)&udelay(1000);
这样就行了
直接延时25000好像不行,也没有用示波器看下到底延时了多久,使用for就可以了
该回复于 13:50:44被版主删除
您好,我也是这个问题。不知道楼主做通了没有?做通了也给我介绍一下经验哈。我的邮箱:mu_yi_.先行谢过啦。
我的是2M&flash,我想前128k做bootloader用,后面896k分配给内核与romfs文件系统,剩余的1M分配给JFFS2文件系统,不知道行不行?请朋友们帮个忙指导指导。小弟感激不尽。
回复
即使是一小步也想与你分享捷配欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&在nand flash上实现JFFS2根文件文件系统
  作者:刘洪涛,华清远见嵌入式培训中心高级讲师,公司授权ATC讲师。
  JFFS2是上应用最广的一个日志结构文件系统。它提供的垃圾回收机制,不需要马上对擦写越界的块进行擦写,而只需要将其设置一个标志,标明为脏块,当可用的块数不足时,垃圾回收机制才开始回收这些节点。同时,由于JFFS2基于日志结构,在意外掉电后仍然可以保持数据的完整性,而不会丢失数据。
  本文阐述如何在nand 上实现JFFS2根文件文件系统。实验环境是:FS2410开发平台及ubantu7.04主机环境。
  由于使用的ubantu7.04的环境没有安装制作JFFS2文件系统镜像的工具mkfs.jffs2,所以首先在Linux系统中安装mkfs.jffs2工具,安装的过程如下:
  1.下载MTD工具包
  本处使用的是mtd-snapshot-.tar.bz2:
  farsight#tar Cjxvf mtd-snapshot-.tar.bz2
  farsight#cd mtd
  farsight#./configure
  farsight#make
  farsight#make install
  如果系统中没有安装ZLIB库,那么首先安装ZLIB库。具体的安装过程如下:
  farsight#tar Czxvf zlib-1.2.3.tar.gz
  farsight#cd zlib-1.2.3
  farsight#./configure
  farsight#make
  farsight#make install
  完成此步骤后,系统中就有了mkfs.jffs2的工具。注意:这个工具不同于mkfs.ext2工具,它只能制作相应的JFFS2文件系统的镜像,而不具有进行格式化的功能,而mkfs.ext2具备这以上两种功能。然后用这个工具就可以制作JFFS2文件系统的镜像了。
  2、制作JFFS2文件镜像
  实验平台用到的nand flash 是,在制作镜像过程添加的参数需要和它对应。
  farsight#mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -n
  这样就会生成一个8M大小的rootfs.jffs2的镜像,它也正是JFFS2文件系统的镜像,关于这个命令行里的选项的内容,可以用man a mkfs.jffs2命令来查看内容。
  JFFS2 维护了几个链表来管理擦写块,根据擦写块上的内容,一个擦写块会在不同的链表上。具体来说,当一个擦写块上都是合法(valid)的节点时,它会在 clean_list 上;当一个擦写块包含至少一个过时(obsole)的节点时,它会在 dirty_list 上;当一个擦写块被擦写完毕,并被写入 CLEANMARKER 节点后,它会在 free_list 上。而当你在挂载这个文件系统的时候,如果出现CLEANMARKER node found at 0x has totlen 0xc != normal 0x0的警告的时候,可以加一个“-n”的选项,这个主要是由于针对Nand Flash不需要在每个擦除块的开始写入CLEANMARKER 节点。
  3、设置内核启动参数
  本处用的bootloader是U-BOOT.所以在U-BOOT的命令终端设置如下:
  FS2410#setenv bootargs root=/dev/mtdblock/2 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M
  4、配置内核支持JFFS2文件系统
  File s ---& Miscellaneous filesystems ---&
  &*&JournallingFlash File System v2 (JFFS2) support
  [*]JFFS2write-bufferingsupport
  [*]AdvancedcompressionoponsforJFFS2
  [*]JFFS2ZLIBcompressionsupport
  [*]JFFS2RTIMEcompressionsupport
  [*] JFFS2 RUBIN compression support
  5、下载rootfs.jffs2镜像
  下载到Nand Flash第二个分区。
  FS2410#nand erase
  FS2410#nand write.jffs2
  这里说明下关于nand flash操作的几个常用命令的含义
  nand write:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,则直接报错。
  nand write.jffs2:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块。
  nand read:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,则直接报错。
  nand read.jffs2s:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,将对应坏块区域的缓冲填充0xff,然后跳过此坏块继续读取。
  nand read.jffs2:读取Nand Flash相应区域的数据,如果NandFlash相应的区域有坏块,直接跳过坏块。
  具体的参考代码参看U-BOOT源码:common/cmd_nand.c文件。
  下载完JFFS2文件系统镜像后,需要把Linux内核NandFlash的驱动关于第二个分区的大小改为8M(和镜像一样大),否则会出现类似如下错误:
  Freeing init memory: 124K
  Warning: unable to open an initial console.
  Argh. Special inode #171 with mode 0xa1ff had more than one node
  Kernel panic: No init found. Try passing init= option to kernel.
  Argh. Special inode #63 with mode 0xa1ff had more than one node
  Returned error for crccheck of ino #63. Expect badness...
  Argh. Special inode #67 with mode 0xa1ff had more than one node
  Returned error for crccheck of ino #67. Expect badness...
  Argh. Special inode #68 with mode 0xa1ff had more than one node
  到此,一个JFFS2文件系统的镜像制作成功。可以启动系统并JFFS2的性能了
  还有一种制作JFFS2文件系统镜像的方法,在制作镜像的参数中可以不加―pad选项,过程如下:
  farsight#mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 -n
  启动烧写rootfs.jffs2镜像
  FS2410#nand erase 000//(注意把整个存放文件系统的分区全部给擦除)。
  FS2410#nand write.jffs2 000 31a28c//(必须是rootfs.jffs2的实际大小。如果是你写成了4M,那么分区的其余部分JFFS2文件系统将无法识别)。  “本文由华清远见http://www.embedu.org/index.htm提供”&&来源:
技术资料出处:zqh2004
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
12345678910
12345678910
12345678910
提到空气净化器,从其选购到使用,网上各种“指南”一搜一大把,内容大多千篇一律,无非是教用户怎么买、怎么用。不过“学习”了这么久,您真的能玩转家中的空气净化器吗?别的不说,咱今天重点聊聊绝大部分净化器标配,但99%用户可能忽略的小部件――空气质量传感器。本文将为您详解,这个看似[][][][][][][][][][]
IC热门型号
IC现货型号
推荐电子百科嵌入式系统移植
----构建根文件系统_嵌入式吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:44,650贴子:
嵌入式系统移植
----构建根文件系统收藏
1.嵌入式文件系统介绍2.Linux目录结构详解3.配置,编译busybox4.完善根文件系统5.制作yaffs2镜像文件系统是操作系统的重要组成部分,所谓文件系统是指操作系统中负责管理和存储文件信息的软件机构。Linux支持多种文件系统,包括ext2、ext3、vfat、ntfs、iso9660、jffs、romfs和nfs等,为了对各类文件系统进行统一管理,Linux引入了虚拟文件系统VFS(VirtualFile System),为各类文件系统提供一个统一的操作界面和应用编程接口。
Linux启动时,第一个必须挂载的是根文件系统;若系统不能从指定设备上挂载根文件系统,则系统会出错而退出启动。之后可以自动或手动挂载其他的文件系统。因此,一个系统中可以同时存在不同的文件系统。不同的文件系统类型有不同的特点,因而根据存储设备的硬件特性、系统需求等有不同的应用场合。在嵌入式Linux应用中,主要的存储设备为RAM(DRAM,SDRAM)和ROM(常采用FLASH存储器),常用的基于存储设备的文件系统类型包括:jffs2,yaffs, cramfs, romfs, ramdisk, ramfs/tmpfs等。Yaffs/Yaffs2 文件系统YAFFS文件系统是一种和JFFS2类似的Flash文件系统,和JFFS2相比,它减少了一些功能,因此速度更快,占用内存更少。此外YAFFS自带NAND芯片驱动,并为嵌入式系统提供了直接访问文件系统的API,用户可以不使用Linux中的MTD和VFS,直接对文件进行操作。在嵌入式系统设计中,NAND Flash大多使用YAFFS文件系统,而NORFlash多使用JFFS2文件系统。YAFFS1只支持小页(512b)NAND,YAFFS2兼容YAFFS1,并支持大页(2K或更高)NANDLinux 文件系统目录结构/bin 所有用户都可以使用的基本命令/sbin只有管理员能够使用的命令(系统命令)/dev
设备文件(对应具体硬件设备)/etc
配置文件/lib 共享库和驱动模块/home用户目录/root根用户(root)目录/var
log文件,临时文件/proc作为proc文件系统的挂载点/mnt
临时挂载某个文件系统的挂载点/tmp
临时文件/usr
系统中所有的应用程序和文件
root用户的管理程序
常用的动态连接库
/usr/local
Linux内核的源码Busybox简介“嵌入式Linux的瑞士军刀”--BusyboxBusybox项目是由BrucePerens在1996年发起的,目的是协助Debian发行套件建立安装磁盘。从1999年开始,此项目由uClibc的维护者ErikAndersen接手维护。Busybox将众多的UNIX命令集合进一个很小的可执行程序中,为嵌入式系统提供了一个比较完全的工具集网方官站
1.创建文件系统目录2.获得busybox源码(busybox-1.15.2)
配置、编译3.完善根文件系统4.制作YAFFS2镜像5.下载载文件到开发板
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 jffs2文件系统制作 的文章

 

随机推荐