最近在研究软件无线电管理系统,自主研发的软件无线电平台包括SP6 FPFA以及DAVINCI DSP,而涉及其管理系统,需要借助于DAVINCI的ARM核,包括系统移植、内核定制裁剪,文件系统制作固化,以及应用程序和驱动程序编写等。下面简要概述其过程,留作学习笔记,仅供自己学习参考之用。
Linux根文件系统是存放tool软件、lib文件、script(脚本)、配置文件、其他特殊文件、自己开发的应用程序的地方。嵌入式linux的根文件系统rootfs就像windows操作系统的C、D盘这种概念机制,FLASH对应硬盘。但linux文件系统是一种挂载点的概念,根文件系统是一个整体,组织到一个树状的目录结构中。这种文件组织遵守文件系统科学分类FHS国际标准。
1、创建工作目录:
host $ mkdir –p /home/user/workdir
2、拷贝ramdisk.gz文件至工作目录
host $ cd /home/user/workdir
host $ cp /ramdisk.gz .
3、解压并挂载至临时ram目录
host $ mkdir ram
host $ gunzip ramdisk.gz
host $ mount ramdisk ram –o loop
可以将需要执行的程序和可执行文件拷贝至相应目录,并可以修改文件系统启动脚本,在脚本文件系统 /etc/init.d/rcS目录下,添加需要启动的程序或可执行文件路径与名称。
4、创建tarball image
host $ cd ram
host $ tar czf ../rootfs.tar.gz *
这样即可将其移植到YAFFS/YAFFS2文件系统。
通常,通过使用Linux MTD子系统来烧写YAFFS/YAFFS2文件系统。MTD(memory technology device内存技术设备)是用来访问memory设备(ROM、flash)的Linux子系统。MTD的主要目的是为了使新的memory设备的驱动更加简单,为此它在硬件和上层之间提供了一个抽象接口。需要使用MTD工具来擦除和拷贝文件系统至Flash。MTD
utils工具,MontaVista已经提供相关工具(/pro/devkit/arm/v5t_le/target)。(备注:需要首先建立NFS文件系统,可参考其他)
1、flash_eraseall。用来擦除整个MTD设备,一般情况下,首先要确认Falsh文件系统分区:
Target $ cat /proc/mtd
一般会出现以下信息:
dev: size erasesize name
mtd0: 00040000 00004000 “bootloader”
mtd1: 00020000 00004000 “params”
mtd2:
mtd3:
2、擦除文件系统分区
target $ flash_eraseall /dev/mtd3
3、通过使用block device node挂载Flash文件系统
target $ mkdir –p /mnt/nand
target $ mount –t yaffs2 /dev/mtdblock3 /mnt/nand
target $ cp /rootfs.tar.gz /mnt/nand
target $ cd /mnt/nand
target $ tar xzf rootfs.tar.gz
target $ rm –rf rootfs.tar.gz
target $ ls
target $ cd ..
target $ umount /mnt/nand
至此已经完成yaffs2文件系统挂载,当然也可以修改u-boot源码,使其支持yaffs.bin文件系统下载。