千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > 制作YAFFS2文件系统

制作YAFFS2文件系统

来源:千锋教育
发布人:wjy
时间: 2022-12-28 11:59:47 1672199987

  如果开发板只有Nand Flash,那么选择最合适的文件系统为YAFFS文件系统。mini2440 只有 Nand Flash 没有 Nor Flash,因此选择的文件系统为 YAFFS2 文件系统。

  1.制作文件系统时准备的源代码

  关于内核源代码和交叉编译器,读者可以根据自己的实际情况选择具体的对应版本, yaffs2.tar.gz 源码是必需的。

制作 YAFFS2 文件系统179

  2.解压源码

  解压内核源码和交叉编译器的源码,并将 yaffs2.tar.gz 复制到内核源码的 fs 目录下进行解压。如果是第一次使用交叉编译器,那么应该在环境变量中添加交叉编译器的路径或者在/etc/profile 中添加交叉编译器路径,并重新启动计算机。文件/etc/profile 中的交叉编译 器的设置,例如:

  # Path manipulation

  if [ "$EUID" = "0" ]; then

  pathmunge /sbin

  pathmunge /usr/sbin

  pathmunge /usr/local/sbin

  pathmunge /usr/local/arm/4.3.2/bin

  fi

  3.修改内核顶层Makefile

  在 Makefile 中设置目标平台为 arm,交叉编译器为 arm-linux。

  # vi Makefile

  ARCH ?= $(SUBARCH)

  CROSS_COMPILE ?=

  修改为

  ARCH ?=arm

  CROSS_COMPILE ?=arm-linux-

  4.修改机器码

  在 vivi 启动时如果机器码与设置的不一致会出现提示,在文件 arch/arm/tools/mach-types

  中进行下面的修改。

  # vi arch/arm/tools/mach-types

  s3c2440 ARCH_S3C2440 S3C2440 362

  修改为

  s3c2440 ARCH_S3C2440 S3C2440 782

  5.修改时钟频率

  修改 arch/arm/mach-s3c2440/mach-smdk2440.c 中的时钟为 12MHz,具体修改如下:

  static void __init smdk2440_map_io(void)

  {

  s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

  //s3c24xx_init_clocks(16934400);

  s3c24xx_init_clocks(12000000);//将频率设置为 12MHz

  s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

  }

  6.使内核支持YAFFS2

  解压 yaffs2.tar.gz 后进入 YAFFS2 目录,在 YAFFS2 目录下有可执行文件 patch-ker.sh,

  执行如下命令:

  # ./patch-ker.sh c /usr/local/arm/linux-2.6.29.6

  执行该命令后,就会在 fs 的 Kconfig 和 Makefile 中增加对 YAFFS2 的编译选项的支持。

  在 fs/Kconfig 会自动添加:

  # Patched by YAFFS

  source "fs/yaffs2/Kconfig"

  在 fs/Makefile 中会自动添加:

  # Patched by YAFFS

  obj-$(CONFIG_YAFFS_FS) += yaffs2/

  注意:这两部分内容也可以进行手动添加。添加的目的是在内核的文件系统选项中增加 对 YAFFS2 的支持选项。

  回到内核的一级目录下运行 make menuconfig,对内核进行配置,配置中多了对 YAFFS2 文件系统支持的选项。进入内核配置界面后,依次选择命令 File systems ---> Miscellaneous filesystems --->,进入 Miscellaneous filesystems 配置窗口,选择对 YAFFS2 文件系统的支持

制作 YAFFS2 文件系统1783

  7.使内核支持Mini2440

  在内核的 System Type-->ARM system type 选项下,选择 Samsung S3C24xx 系列。如果读者的开发板不是 mini2440,那么就应该选择对应的处理器类型。然后 在 S3C2440 Machines 中选择 Mini2440 支持选项。

制作 YAFFS2 文件系统1943

  8.编译内核映像文件

  执行 make zImage 生成内核的映像文件,如果遇到下面的错误可以执行 make distclean 进行清理,然后重新生成映像文件。

  # make distclean

  # make zImage

  9.编译Busybox

  编译 Busybox 的配置细节可以参考制作 《Ramdisk 文件系统》。这里可以将 Busybox 交叉编译安装在 _install 文件中,

制作 YAFFS2 文件系统2151

  在/usr/local 目录下新建 yaffs_root 文件夹,将 Busybox 的安装目录_install 中的文件 bin、linuxrc、sbin、usr 复制到 yaffs_root 目录下。

  # mkdir /usr/local/yaffs_root

  # cd /usr/local/busybox-1.21.1/_install

  # cp –rf bin linuxrc sbin usr /usr/local/yaffs_root

  10.为YAFFS文件系统准备lib库

  将交叉编译器目录下的库文件全部复制到 lib 库目录下,-d 表示复制的时候包括链接 文件一起复制过来。

  #cp -d /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/*so* ./lib

  11.制作etc目录下必要的文件

  etc 目录是文件系统中最重要的目录,系统配置的启动信息都在该目录下,下面分别给出必要的几个文件。

  (1)/etc/inittab 文件。

  ::sysinit:/etc/init.d/rcS #调用系统初始化文件

  s3c2410_serial0::askfirst:-/bin/sh #文件 drivers/serial/s3c2410.c 中指定了串口驱动名字 s3c2410_serial

  ::ctrlaltdel:/sbin/reboot #重启

  ::shutdown:/bin/umount -a -r #关机

  该文件为 init 进程的配置文件。

  (2)etc/init.d/rcS 文件。

  #!/bin/sh

  PATH=/sbin:/bin:/usr/sbin:/usr/bin

  runlevel=S

  prevlevel=N

  umask 022

  export PATH runlevel prevlevel

  mount -a

  mkdir /dev/pts

  mount -t devpts devpts /dev/pts

  echo /sbin/mdev > /proc/sys/kernel/hotplug

  mdev -s

  mkdir -p /var/lock

  /bin/hostname -F /etc/sysconfig/HOSTNAME

  该文件为可执行文件,完成后还要修改其权限为可执行。该文件功能包括指定环境变量、运行级别和挂载设备等。

  (3)etc/profile 文件。

  USER="`id -un`"

  LOGNAME=$USER

  PS1='[Yaffs_LiuG]# '

  PATH=$PATH

  HOSTNAME='/bin/hostname'

  export USER LOGNAME PS1 PATH

  如果不配置 profile,移植完文件系统后,进入系统命令行头为空,效果如下:

  # ls

  bin home lost+found proc sys var

  dev lib mnt root tmp

  etc linuxrc opt sbin usr

  配置 profile 文件后,其效果如下:

  ]# ls

  bin home lost+found proc sys var

  dev lib mnt root tmp

  etc linuxrc opt sbin usr

  (4)etc/sysconfig/HOSTNAME 文件。

  Yaffs@LiuG #指定 HOSTNAME,rcS 中调用该文件

  (5)etc/fstab 文件。

  proc /proc proc defaults 0 0

  tmpfs /tmp tmpfs defaults 0 0

  sysfs /sys sysfs defaults 0 0

  tmpfs /dev tmpfs defaults 0 0

  var /dev tmpfs defaults 0 0

  该文件指明需要挂载的文件系统。

  12.制作YAFFS映像文件

  解压制作文件系统工具 mkyaffs2image.tar,解压后该工具自动安装在目录 usr/sbin/下。 使用 mkyaffs2image 将上面制作的文件系统制作成映像文件。

  # tar xvf mkyaffs2image.tar

  # mkyaffs2image yaffs_root yaffs_root.img

  本文摘自《linux系统移植(第2版)》

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT