基本配置:
CPU:LPC2478
SDRAM:16M
NOR Flash:4M
kernel:uClinux(2.6.24.2)
开发板提供的根文件系统只有ROMFS,而且是通过uboot通过U盘down到SDRAM上运行的
我已经实现TFTP启动,根文件系统ROMFS,也能挂载NFS文件系统,下一步,打算制作jffs2根文件系统,这个才是产品需要的,
网上搜罗下资料,加上个人理解,是不是制作流程如下:
1。
首先利用现在已经生成的romfs文件系统,然后使用mkfs.jffs2工具把这个文件夹制作成jffs2的镜像文件啊
mkfs.jffs2 -o rootfs_jffs2.img -r romfs -e 0x40000 -l --pad=0x1e80000
然后写入flash?
2。可不可以直接生成jffs2根文件系统镜像,因为我在makefile文件中看到romfs文件系统使用genromfs工具生成的,如下:
image:
[ -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好累哦
11 个解决方案
#1
1.2.都没问题。
注意一下,第一步的这个0x40000表示flash块大小的,要和flash规格对应,常见的是128KB和64KB的,256KB没见过,你要查一下规格书。
3.可以,但是下载的时候,内核不是vmlinux.bin,这是个压缩文件,你要下载编译直接生成的那个vmlinux文件。jff2的img文件好像不行,你可以烧录一个jffs2的img文件到flash,引导起来以后再把目录mount过来。
注意一下,第一步的这个0x40000表示flash块大小的,要和flash规格对应,常见的是128KB和64KB的,256KB没见过,你要查一下规格书。
3.可以,但是下载的时候,内核不是vmlinux.bin,这是个压缩文件,你要下载编译直接生成的那个vmlinux文件。jff2的img文件好像不行,你可以烧录一个jffs2的img文件到flash,引导起来以后再把目录mount过来。
#2
3.内核不是bin文件?
我最开始用的U-boot从U盘启动和TFTP启动,都是vmlinux.bin文件啊?
tftp_boot=tftpboot 0xa0008000 vmlinux.bin;tftpboot 0xa0800000 romfs_5.img;go 0xa0008000
usb_boot=usb start;fatload usb 0 0xa0800000 romfs_5.img;fatload usb 0 0xa0008000 vmlinux.bin;go a0008000
都是bin文件啊,文件系统是romfs的镜像文件
现在的问题就是无法通过jlink V8的jflash下载bin文件到片外NOR flash,所以才想把内核和根文件系统(jffs2)都直接down到SDRAM上运行,这样只要根文件系统能挂上,在调flash也好调点
我最开始用的U-boot从U盘启动和TFTP启动,都是vmlinux.bin文件啊?
tftp_boot=tftpboot 0xa0008000 vmlinux.bin;tftpboot 0xa0800000 romfs_5.img;go 0xa0008000
usb_boot=usb start;fatload usb 0 0xa0800000 romfs_5.img;fatload usb 0 0xa0008000 vmlinux.bin;go a0008000
都是bin文件啊,文件系统是romfs的镜像文件
现在的问题就是无法通过jlink V8的jflash下载bin文件到片外NOR flash,所以才想把内核和根文件系统(jffs2)都直接down到SDRAM上运行,这样只要根文件系统能挂上,在调flash也好调点
#3
0xa0080000是你的flash地址还是内存地址?如果是内存地址应该就可以使用了。之前不知道你这个vmlinux.bin怎么来的,所以推测可能是经过压缩的镜像文件,这是不能直接执行的,需要解压到内存中执行。内存中可以直接执行的那个vmlinux是可以直接下载运行的。
但romfs是压缩的文件系统,内核需要进行正确的挂载mtd分区;下载到内存中以后,内核怎么挂载,光给个内存地址是不行的。
我调试的时候,一般是要接上网线的,内核起来以后,将本地编译的可执行文件所在目录,通过nfs mount到romfs中某个指定的目录就能用了。
但romfs是压缩的文件系统,内核需要进行正确的挂载mtd分区;下载到内存中以后,内核怎么挂载,光给个内存地址是不行的。
我调试的时候,一般是要接上网线的,内核起来以后,将本地编译的可执行文件所在目录,通过nfs mount到romfs中某个指定的目录就能用了。
#4
0xa0080000 是内存地址
romfs.img是文件系统的镜像,nfs只是mount 宿主机的一个文件夹到内核,
我现在是想直接使用jffs2的根文件系统,先在内存里
romfs.img是文件系统的镜像,nfs只是mount 宿主机的一个文件夹到内核,
我现在是想直接使用jffs2的根文件系统,先在内存里
#5
这个不行。
应该也没有必要,你的flash里面装一个通用的jffs2文件系统,然后mount服务器的一个目录。那个目录可以是你做jffs2文件系统之前的文件夹,里面你想怎么改就怎么改。
应该也没有必要,你的flash里面装一个通用的jffs2文件系统,然后mount服务器的一个目录。那个目录可以是你做jffs2文件系统之前的文件夹,里面你想怎么改就怎么改。
#6
比较懵懂
笔记本没有并口,不能download bin文件到NOR flash
正在尝试通过uboot 把bin文件down到NOR flash,CFI驱动还有点问题,
笔记本没有并口,不能download bin文件到NOR flash
正在尝试通过uboot 把bin文件down到NOR flash,CFI驱动还有点问题,
#7
可以这样啊!怎么不能下载?
只要烧写了bootloader,并且bootloader支持tftp就没问题。
PC端:
开启tftp服务器(tftp.exe);
开发板端:
[u-boot]# tftp 30000000 vmlinux.bin 回车,
下载完就来个cp.b 30000000 20000000(这是你要往nor flash中写的起始地址)size(就是你上面通过tftp下载的文件的大小,下载完会有显示)。
注:这样还可以来个bootloader自己更新自己。
只要烧写了bootloader,并且bootloader支持tftp就没问题。
PC端:
开启tftp服务器(tftp.exe);
开发板端:
[u-boot]# tftp 30000000 vmlinux.bin 回车,
下载完就来个cp.b 30000000 20000000(这是你要往nor flash中写的起始地址)size(就是你上面通过tftp下载的文件的大小,下载完会有显示)。
注:这样还可以来个bootloader自己更新自己。
#8
路过……
#9
这个当然知道,cp前面还缺个erase bank 2
uboot是使用连续擦除扇区的方式去进行片擦除,不能下载的原因是扇区未擦除
发现在每个sector擦除时延时了udelay(25000),根据datasheet是最大25ms,貌似是正确的
但好像udelay(25000)没有达到要求,使用了一下方式
for (i=0 ;<25;i++) udelay(1000);
这样就行了
直接延时25000好像不行,也没有用示波器看下到底延时了多久,使用for就可以了
#10
#11
您好,我也是这个问题。不知道楼主做通了没有?做通了也给我介绍一下经验哈。我的邮箱:mu_yi_ke@163.com.先行谢过啦。
我的是2M flash,我想前128k做bootloader用,后面896k分配给内核与romfs文件系统,剩余的1M分配给JFFS2文件系统,不知道行不行?请朋友们帮个忙指导指导。小弟感激不尽。
我的是2M flash,我想前128k做bootloader用,后面896k分配给内核与romfs文件系统,剩余的1M分配给JFFS2文件系统,不知道行不行?请朋友们帮个忙指导指导。小弟感激不尽。
#1
1.2.都没问题。
注意一下,第一步的这个0x40000表示flash块大小的,要和flash规格对应,常见的是128KB和64KB的,256KB没见过,你要查一下规格书。
3.可以,但是下载的时候,内核不是vmlinux.bin,这是个压缩文件,你要下载编译直接生成的那个vmlinux文件。jff2的img文件好像不行,你可以烧录一个jffs2的img文件到flash,引导起来以后再把目录mount过来。
注意一下,第一步的这个0x40000表示flash块大小的,要和flash规格对应,常见的是128KB和64KB的,256KB没见过,你要查一下规格书。
3.可以,但是下载的时候,内核不是vmlinux.bin,这是个压缩文件,你要下载编译直接生成的那个vmlinux文件。jff2的img文件好像不行,你可以烧录一个jffs2的img文件到flash,引导起来以后再把目录mount过来。
#2
3.内核不是bin文件?
我最开始用的U-boot从U盘启动和TFTP启动,都是vmlinux.bin文件啊?
tftp_boot=tftpboot 0xa0008000 vmlinux.bin;tftpboot 0xa0800000 romfs_5.img;go 0xa0008000
usb_boot=usb start;fatload usb 0 0xa0800000 romfs_5.img;fatload usb 0 0xa0008000 vmlinux.bin;go a0008000
都是bin文件啊,文件系统是romfs的镜像文件
现在的问题就是无法通过jlink V8的jflash下载bin文件到片外NOR flash,所以才想把内核和根文件系统(jffs2)都直接down到SDRAM上运行,这样只要根文件系统能挂上,在调flash也好调点
我最开始用的U-boot从U盘启动和TFTP启动,都是vmlinux.bin文件啊?
tftp_boot=tftpboot 0xa0008000 vmlinux.bin;tftpboot 0xa0800000 romfs_5.img;go 0xa0008000
usb_boot=usb start;fatload usb 0 0xa0800000 romfs_5.img;fatload usb 0 0xa0008000 vmlinux.bin;go a0008000
都是bin文件啊,文件系统是romfs的镜像文件
现在的问题就是无法通过jlink V8的jflash下载bin文件到片外NOR flash,所以才想把内核和根文件系统(jffs2)都直接down到SDRAM上运行,这样只要根文件系统能挂上,在调flash也好调点
#3
0xa0080000是你的flash地址还是内存地址?如果是内存地址应该就可以使用了。之前不知道你这个vmlinux.bin怎么来的,所以推测可能是经过压缩的镜像文件,这是不能直接执行的,需要解压到内存中执行。内存中可以直接执行的那个vmlinux是可以直接下载运行的。
但romfs是压缩的文件系统,内核需要进行正确的挂载mtd分区;下载到内存中以后,内核怎么挂载,光给个内存地址是不行的。
我调试的时候,一般是要接上网线的,内核起来以后,将本地编译的可执行文件所在目录,通过nfs mount到romfs中某个指定的目录就能用了。
但romfs是压缩的文件系统,内核需要进行正确的挂载mtd分区;下载到内存中以后,内核怎么挂载,光给个内存地址是不行的。
我调试的时候,一般是要接上网线的,内核起来以后,将本地编译的可执行文件所在目录,通过nfs mount到romfs中某个指定的目录就能用了。
#4
0xa0080000 是内存地址
romfs.img是文件系统的镜像,nfs只是mount 宿主机的一个文件夹到内核,
我现在是想直接使用jffs2的根文件系统,先在内存里
romfs.img是文件系统的镜像,nfs只是mount 宿主机的一个文件夹到内核,
我现在是想直接使用jffs2的根文件系统,先在内存里
#5
这个不行。
应该也没有必要,你的flash里面装一个通用的jffs2文件系统,然后mount服务器的一个目录。那个目录可以是你做jffs2文件系统之前的文件夹,里面你想怎么改就怎么改。
应该也没有必要,你的flash里面装一个通用的jffs2文件系统,然后mount服务器的一个目录。那个目录可以是你做jffs2文件系统之前的文件夹,里面你想怎么改就怎么改。
#6
比较懵懂
笔记本没有并口,不能download bin文件到NOR flash
正在尝试通过uboot 把bin文件down到NOR flash,CFI驱动还有点问题,
笔记本没有并口,不能download bin文件到NOR flash
正在尝试通过uboot 把bin文件down到NOR flash,CFI驱动还有点问题,
#7
可以这样啊!怎么不能下载?
只要烧写了bootloader,并且bootloader支持tftp就没问题。
PC端:
开启tftp服务器(tftp.exe);
开发板端:
[u-boot]# tftp 30000000 vmlinux.bin 回车,
下载完就来个cp.b 30000000 20000000(这是你要往nor flash中写的起始地址)size(就是你上面通过tftp下载的文件的大小,下载完会有显示)。
注:这样还可以来个bootloader自己更新自己。
只要烧写了bootloader,并且bootloader支持tftp就没问题。
PC端:
开启tftp服务器(tftp.exe);
开发板端:
[u-boot]# tftp 30000000 vmlinux.bin 回车,
下载完就来个cp.b 30000000 20000000(这是你要往nor flash中写的起始地址)size(就是你上面通过tftp下载的文件的大小,下载完会有显示)。
注:这样还可以来个bootloader自己更新自己。
#8
路过……
#9
这个当然知道,cp前面还缺个erase bank 2
uboot是使用连续擦除扇区的方式去进行片擦除,不能下载的原因是扇区未擦除
发现在每个sector擦除时延时了udelay(25000),根据datasheet是最大25ms,貌似是正确的
但好像udelay(25000)没有达到要求,使用了一下方式
for (i=0 ;<25;i++) udelay(1000);
这样就行了
直接延时25000好像不行,也没有用示波器看下到底延时了多久,使用for就可以了
#10
#11
您好,我也是这个问题。不知道楼主做通了没有?做通了也给我介绍一下经验哈。我的邮箱:mu_yi_ke@163.com.先行谢过啦。
我的是2M flash,我想前128k做bootloader用,后面896k分配给内核与romfs文件系统,剩余的1M分配给JFFS2文件系统,不知道行不行?请朋友们帮个忙指导指导。小弟感激不尽。
我的是2M flash,我想前128k做bootloader用,后面896k分配给内核与romfs文件系统,剩余的1M分配给JFFS2文件系统,不知道行不行?请朋友们帮个忙指导指导。小弟感激不尽。