微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > uClinux系统平台下的Flash存储技术

uClinux系统平台下的Flash存储技术

时间:10-08 来源:互联网 点击:

个目标机的根文件系统的目录树,然后利用嵌入式根文件系统生成工具在宿主机上生成目录树的二进制文件镜像,最后下载到目标机上就可以了。对于不同的文件格式有不同的二进制镜像生成工具,譬如JFFS的mkfs.jffs2、ISO9660的mkisofs。

Flash工具及实例

uClinux下的Flash的操作工具有很多种,它们都是为底层的块设备而设计使用的。

当使用MTD driver时,主要的工具有:erase(数据段擦除工具)、eraseall(擦除Flash)、lock(写保护)、unlock(打开写保护)、mkfs.jffs(从目录结构生成JFFS格式文件工具)和mkfs.jffs2(JFFS2格式生成工具)。由于MTD driver提供字符和块设备支持,所以在目标机上可以使用诸如dd命令来写Flash。

实际设计实例:

系统硬件配置:S3C4510B,2M Flash,4M SDRAM。内核:uClinux2.4.x,使用MTD driver支持Flash存储。文件系统格式选择ROMfs。在Flash存储器的地址底部存在一系列的大小不等的可擦除的地址空间,它们的大小分别是16K、8K、8K和32K,总计大小为64K ,我们选择Flash的“bottom boot”。

Flash 分区如下

● SEGMENT SIZE MTD-DEVICE DESCRIPTION

0 16K mtd0 boot loader

1 8K mtd1 内核引导参数

2 8K mtd2 出厂设置信息

3 32K mtd3 空闲

4 64K mtd4 固化设置

5

. 1984K mtd5 内核+根文件系统 .

35

0-35 2048K mtd6 all of Flash memory

在Flash分区的过程中,尽量使用Flash的顶部和底部。不同的MTD分区可以部分重叠,但是在操作时要特别注意。

系统内核是压缩存储的,Bootloader在初始化SDRAM后就解压内核到SDRAM中运行。根文件系统存储在压缩的内核镜像文件之后的,它可以直接在Flash上运行,移除内核压缩镜像后,典型的根文件系统的大小约有1.5M左右。

内核文件和根文件系统合并在一个镜像文件中有一个最大的好处就是当二者需要升级的时候,只需要重新编译MTD4上的配置文件即可。

在所有配置中关键是MTD驱动器映射的建立, uClinux-2.4.x/drivers/mtd/maps下的nettle-uc.c是文件系统建立的源程序,其主要是解释了分区映射的内容和在MTD4上如何配置根文件系统。

通过引导日志可以分析引导过程,譬如引导过程的日志如下:

SnapGear Flash probe(0xf0000000,2097152,2): 200000 at f0000000

CFI: Found no Flash device at location zero

Found: Toshiba TC58FVB160

number of JEDEC chips: 1

Creating 7 MTD partitions on Flash:

0x00000000-0x00004000 : Bootloader

0x00004000-0x00006000 : Bootargs

0x00006000-0x00008000 : MAC

0x00010000-0x00020000 : Config

0x00008000-0x00010000 : Spare

0x00020000-0x00200000 : Image

0x00000000-0x00200000 : Flash

从上面的日志可以看到,MTD drivers发现了Toshiba Flash,并按先前的要求把它分为指定的几个分区,Flash被映射到CPU地址单元的0xf0000000开始。当然,MTD driver提供更为复杂的配置设置,通过对位于内核配置内的MTD drivers的配置,可以得到更为详细的关于Flash device的日志报告。

使用netFlash工具来刷新系统的内核和文件系统。命令行仅是: netFlash imagez.bin ,将镜像文件放在Tftp 服务器上,netFlash从指定地址的Tftp服务器上下载并完成烧录工作,重新启动目标板就可以让uClinux跑起来了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top