制作mkyaffs2image和mkyaffsimage

我们转换文件系统到yaffs2或yaffs的时候,需要两个工具:mkyaffs2image和mkyaffsimage。

mkyaffs2image:制作yaffs2镜像

mkyaffsimage:制作yaffs镜像

关于yaffs2与yaffs的区别:

维基百科是这样说的:

YAFFS1和YAFFS2 主要差异还是在于PAGE 读写 size的大小,YAFFS2可支持到2K per page, 远高于YAFFS的512 Bytes, 因此对大容量NAND flash更具优势。其他与YAFFS1不同的是, YAFFS2不再写spare area, sequenceNumber 用29 bits 表示。Yaffs2还拥有YAFFS1所缺乏的SuperBlock, 因此YAFFS1严重依赖文件系统的read_super。

1. Download Yaffs using Git

We now operate a GIT server for our active projects. Here we give details of the setup:-

If you just want to browse or download code then it’s easiest to access the repositoryover the web. This is also the best
option if you are behind a firewall that does not allow direct GIT access(which is quite common).

To get a tarball of the top of the tree, just click ‘snapshot’ for the release that you want, or to quickly obtain a snapshot of the top of the tree you can use
this URL
.

You will be offered a freshly-squeezed gzipped tarball of your choice.

If you want to use GIT directly from the command line then public read-only access is available, using the(bash) command:

git clone git://www.aleph1.co.uk/yaffs2 

If you are a registered developer with a server account you can get read/write access using:

git clone ssh://www.aleph1.co.uk/home/aleph1/git/yaffs2

Please contact [email protected] ifyou are having problems using the GIT server.

If you need more info on how to use GIT then this website is a useful start. Many other tutorials are also available on the internet.

2. 解压缩

目前版本:yaffs2-HEAD-7e5cf0f.tar.gz

#tar zxvf yaffs2-HEAD-7e5cf0f.tar.gz

在解压缩后的目录里,有一个utils文件夹;这个就是我们需要的。

3. 配置Makefile

(1) Linux kernel

设置Linux kernel目录位置

## Change or override  KERNELDIR to your kernel

#KERNELDIR = /usr/src/kernel-headers-2.4.18

在下面设置:

KERNELDIR = /home/at91/linux-2.6.30

(2) CROSS_COMPILE

设置交叉编译器

## Change if you are using a cross-compiler
MAKETOOLS = 

在“MAKETOOLS=”后面,填写交叉编译器路径:/home/at91/x-tools/arm-softfp-linux-gnueabi/bin/arm-softfp-linux-gnueabi-

4. 头文件

(1) 新建mytypes.h

此头文件,主要解决u8,u16,s32等等的定义问题;

(2) 修改yutilsenv.h

此头文件主要为工具环境而设,所以把我们新建的mytypes.h加进来。

5. 生成

执行生成

make

附录:

1. Makefile

#Makefile for mkyaffs
#
# NB this is not yet suitable for putting into the kernel tree.
# YAFFS: Yet another Flash File System. A NAND-flash specific file system.
#
# Copyright (C) 2002 Aleph One Ltd.
#   for Toby Churchill Ltd and Brightstar Engineering
#
# Created by Charles Manning <[email protected]>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 as
# published by the Free Software Foundation.

## Change or override  KERNELDIR to your kernel

#KERNELDIR = /usr/src/kernel-headers-2.4.18
KERNELDIR = /home/at91/linux-2.6.30

CFLAGS =    -O2 -Wall -DCONFIG_YAFFS_UTIL
CFLAGS+=   -Wshadow -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-declarations
CFLAGS+=   -Wmissing-prototypes -Wredundant-decls -Wnested-externs -Winline

## Change if you are using a cross-compiler
MAKETOOLS = /home/at91/x-tools/arm-softfp-linux-gnueabi/bin/arm-softfp-linux-gnueabi-

CC=$(MAKETOOLS)gcc

COMMON_BASE_C_LINKS = yaffs_ecc.c
COMMON_BASE_LINKS = $(COMMON_BASE_C_LINKS) yaffs_ecc.h yaffs_guts.h yaffs_packedtags2.h yaffs_trace.h
COMMON_DIRECT_C_LINKS = yaffs_hweight.c
COMMON_C_LINKS = $(COMMON_DIRECT_C_LINKS) $(COMMON_BASE_C_LINKS)
COMMON_DIRECT_LINKS= $(COMMON_DIRECT_C_LINKS) yportenv.h yaffs_hweight.h yaffs_list.h
COMMONOBJS = $(COMMON_C_LINKS:.c=.o)

MKYAFFSSOURCES = mkyaffsimage.c
MKYAFFSIMAGEOBJS = $(MKYAFFSSOURCES:.c=.o)

MKYAFFS2SOURCES = mkyaffs2image.c
MKYAFFS2LINKS = yaffs_packedtags2.c
MKYAFFS2IMAGEOBJS = $(MKYAFFS2SOURCES:.c=.o) $(MKYAFFS2LINKS:.c=.o)

BASE_LINKS = $(MKYAFFSLINKS) $(MKYAFFS2LINKS) $(COMMON_BASE_LINKS)
DIRECT_LINKS = $(MKYAFFS_DIRECT_LINKS) $(MKYAFFS2_DIRECT_LINKS) $(COMMON_DIRECT_LINKS)
ALL_LINKS = $(BASE_LINKS) $(DIRECT_LINKS)

all: mkyaffsimage mkyaffs2image

$(BASE_LINKS):
	ln -s ../[email protected] [email protected]

$(DIRECT_LINKS):
	ln -s ../direct/[email protected] [email protected]

$(COMMONOBJS) $(MKYAFFSIMAGEOBJS) $(MKYAFFS2IMAGEOBJS) : $(ALL_LINKS)

$(COMMONOBJS) $(MKYAFFSIMAGEOBJS) $(MKYAFFS2IMAGEOBJS) : %.o: %.c
	$(CC) -c $(CFLAGS) $< -o [email protected]

mkyaffsimage: $(MKYAFFSIMAGEOBJS) $(COMMONOBJS)
	$(CC) -o [email protected]  $^

mkyaffs2image: $(MKYAFFS2IMAGEOBJS) $(COMMONOBJS)
	$(CC) -o [email protected] $^

clean:
	rm -f $(COMMONOBJS) $(MKYAFFSIMAGEOBJS) $(MKYAFFS2IMAGEOBJS) $(ALL_LINKS) mkyaffsimage mkyaffs2image core

2. mytypes.h

#ifndef __MYTYPES_H
#define __MYTYPES_H

typedef unsigned char   u8;
typedef unsigned short  u16;
typedef unsigned int    u32;
typedef unsigned long   u64;
typedef char            s8;
typedef short           s16;
typedef int             s32;
typedef long            s64;

#endif

3. yutilsenv.h

/*
 * YAFFS: Yet another Flash File System . A NAND-flash specific file system.
 *
 * Copyright (C) 2002-2011 Aleph One Ltd.
 *   for Toby Churchill Ltd and Brightstar Engineering
 *
 * Created by Charles Manning <[email protected]>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 2.1 as
 * published by the Free Software Foundation.
 *
 * Note: Only YAFFS headers are LGPL, YAFFS C code is covered by GPL.
 */

#ifndef __YAFFS_UTILSENV_H__
#define __YAFFS_UTILSENV_H__

#define YCHAR char
#define YUCHAR unsigned char

#include <sys/types.h>
#include <string.h>
#include "mytypes.h"
#include "yaffs_list.h"
#include "yaffs_hweight.h"

#define hweight8(x) yaffs_hweight8(x)
#define hweight32(x) yaffs_hweight32(x)

#define yaffs_trace(...) do {} while (0)
#endif

参考文章:

1. 《YAFFS》 --- 维基百科

时间: 2024-11-05 12:31:44

制作mkyaffs2image和mkyaffsimage的相关文章

用Busybox构建Linux根文件系统(转载)

注:本文转载自http://blog.sina.com.cn/u/2478597014 用Busybox构建Linux根文件系统 (2015-07-05 14:25:02)   虚拟机:Virtual Box4.2.6 和VMware Workstation6.5.2(这两种虚拟机都成功实作过) 开发环境:Linux版本2.6.32,采用Ubuntu10.04 arm-linux-gcc版本:3.4.1 Busybox版本:1.7.0 开发板:飞凌嵌入式S3C2440 开发板linux内核版本:

jffs2和yaffs2文件系统

一,JFFS2 JFFS:1999 Journalling Flash File System, Version 2:2001-9-23,Linux 2.4.10 主要用于NOR Flash,可用于NAND Flash 1. 特性: 掉电保护与损耗平衡 垃圾回收机制 CRC循环冗余校验机制 挂载时间与内存消耗跟文件系统的大小成正比:文件系统越大,越慢,消耗越多 ————> 很差的扩展性 挂载需要进行全盘扫描,挂载一个 16M 的闪存有时需要半分钟以上的时间 在实际应用中,JFFS2 最大能用在

linux系统移植和根文件系统制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5.

第4阶段——制作根文件系统 (4)

在上节制作busybox后(位于/work/nfs_root/mini_fs), 然后根据以下5个来构建最小根文件系统: (1)/dev/console(终端控制台, 提供标准输入.标准输出以及标准错误) /dev/null  (表示空设备终端, 所有写到这个文件中的数据都会被丢弃掉.) (2)init进程的程序(也就是busybox,因为init程序位于busybox中,已经完成) (3)/etc/inittab(用于init进程读取配置, 然后执行inittab里的指定应用程序) (4)应用

Linux 4.10.8 根文件系统制作(三)---制作yaffs文件系统

这里直接用的是韦东山提供的工具. yaffs文件系统是专门用于nandflash的文件系统 我们前面已经下载了yaffs 的源码,也做了文件系统目录的构建. 在yaffs2的源码目录中有一个utils 目录,里面就是制作文件印象的工具. 将工具拷贝到系统目录中去 加上可执行属性: 进入nfs_root目录,执行命令: mkyaffs2image fs_mini fs_mini.yaffs2 然后启动u-boot,进行烧写: nfs 30000000 192.168.0.192:/home/ubu

S5PV210根文件系统的制作(一)

一.基本概念 文件管理:数据管理算法 文件系统:管理文件算法的载体 文件系统的功能:管理分区上的数据(增删查改) 文件系统的分类:fat32/ntfs/ext3/ext4/yaffs/jffs/cramfs/..... 文件系统的表现形态: window--------->森林 linux------------>树 ------->文件目录标准 文件系统与根文件系统: 根文件系统: 系统启动时加载的助文件系统 其他文件系统: 根系统启动后挂载的其他文件系统 二.需要用到的工具 busy

mini2440 最小根文件系统制作和nfs启动

mini2440 内核启动后,可以用busybox制作一个简单的根文件系统并用nfs来启动该文件系统 启动mini2440, 按任意键进入uboot,按q键进入uboot命令行: 执行以下命令: set bootargs "noinitrd root=/dev/nfs rw nfsroot=192.168.211.2:/home/host/nfs/mini2440/rootfs ip=192.168.211.211 console=ttySAC0 init=/linuxrc" save

制作、烧写根文件系统,使用NFS,编译使用驱动程序

制作YAFFS2.JFFS2文件系统映象文件制作文件系统映象非常简单.① 制作YAFFS2文件系统映象文件对于YAFFS2,要用到mkyaffs2image工具,它在/work/linux/tools目录下.源码为/work/system/yaffs_source_util_larger_small_page_nand.tar.bz2.把工具复制到/usr/bin目录下去:$ sudo cp /work/linux/tools/mkyaffs2image /usb/bin$ sudo chmod

hi3531 SDK已编译文件系统制作jffs2文件系统镜像并解决问题 .

一, 安装SDK 1.Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下,您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件, 该文件就是Hi3531的软件开发包. 2.解压缩SDK包 在linux服务器上(或者一台装有linux的PC上,主流的linux发行版本均可以),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,可以得到一个Hi3531_SDK_Vx.