当前位置:   article > 正文

新唐 nuc980 yaffs2 根文件制作与烧写全过程记录/超详细_烧写yaffs2根文件系统

烧写yaffs2根文件系统

(一). 搭建 rootfs 制作环境
1.1).下载busybox
https://busybox.net/downloads/
选择版本
busybox-1.32.0.tar.bz2

mkdir busybox-1.32
cd busybox-1.32
cp ../busybox-1.32.0.tar.bz2 ./
mkdir rootfs
ls
busybox-1.32.0.tar.bz2 rootfs
tar xvf busybox-1.32.0.tar.bz2
cd rootfs
mkdir -p dev etc proc sys tmp mnt lib var/run
cd ../busybox-1.32.0/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

1.2).配置busybox
make menuconfig
需选择配置内容:
a).—Build Options
Cross compiler prefix
arm-linux-
b).—Installation Options (“make install” behavior)
Destination path for ‘make install’
/home/robot/busybox-1.32/rootfs /* path /
在这里插入图片描述c).
Coreutils—>
[ ] sync (3.8 kb) /
cancel /
d).
Linux System Utilities—>
[ ] nsenter (6.5 kb) /
cancel */

在这里插入图片描述1.3).编译安装
make
make install //注意 make install 配置路径

(二). 完善根文件系统内容
在rootfs目录下仅仅只是创建一个根文件系统的框架,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。
2.1).
复制busybox-1.32.0/examples/bootfloppy/etc 整个目录下的全部文件,到rootfs/etc目录下。

$ cp -r ../busybox-1.32.0/examples/bootfloppy/etc/ ./
  • 1

2.2).
手动在文件系统中建立如下设备文件:

robot@ubuntu:~/busybox-1.32/rootfs$ cd dev/
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo mknod -m 666 console c 5 1
	[sudo] password for robot: 
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l
	total 0
	crw-rw-rw- 1 root root 5, 1 Sep  2 11:15 console
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo mknod -m 666 null c 1 3
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l
	total 0
	crw-rw-rw- 1 root root 5, 1 Sep  2 11:15 console
	crw-rw-rw- 1 root root 1, 3 Sep  2 11:16 null
	
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo chown robot *
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l
	total 0
	crw-rw-rw- 1 robot root 5, 1 Sep  2 11:15 console
	crw-rw-rw- 1 robot root 1, 3 Sep  2 11:16 null
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ sudo chgrp robot *
	robot@ubuntu:~/busybox-1.32/rootfs/dev$ ls -l
	total 0
	crw-rw-rw- 1 robot robot 5, 1 Sep  2 11:15 console
	crw-rw-rw- 1 robot robot 1, 3 Sep  2 11:16 null

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

2.3).
修改rcS文件内容如下:

gedit etc/init.d/rcS
#增加内容  
  #! /bin/sh
	/bin/mount -a
	/bin/hostname nuc980

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2.4).
修改fstab文件

 gedit etc/fstab
  #device  mount   type    options   dump fsck order  
	proc	    /proc	 proc   defaults    0	  0
	none    /tmp    ramfs   defaults    0   0
	mdev    /dev    ramfs   defaults    0   0
	sysfs   /sys    sysfs   defaults    0   0
	none    /mnt    nfs     defaults    0   0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.5).
修改group文件
gedit etc/group

root:*:0:
	daemon:*:1:
	bin:*:2:
	sys:*:3:
	adm:*:4:
	tty:*:5:
	disk:*:6:
	lp:*:7:lp
	mail:*:8:
	news:*:9:
	uucp:*:10:
	proxy:*:13:
	kmem:*:15:
	dialout:*:20:
	fax:*:21:
	voice:*:22:
	cdrom:*:24:
	floppy:*:25:
	tape:*:26:
	sudo:*:27:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

2.6).
修改inittab文件
gedit etc/inittab

    ::sysinit:/etc/init.d/rcS
	::respawn:-/bin/sh
	::askfirst:-/bin/sh
	::ctrlaltdel:/bin/umount -a -r
	# add context
	::shutdown:/bin/umount -a -r
	::shutdown:/sbin/swapoff –a

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.7).
修改passwd文件
gedit etc/passwd

 # add context
	  root::0:0:root:/:/bin/sh
  • 1
  • 2

2.8)
修改profile文件

echo
	echo -n "Processing /etc/profile... "
	# no-op
	echo "Done"
	echo
	# add context
	USER="`id -un`"
	LOGNAME=$USER
	PS1='[\u@\h \W]\# '
	PATH=$PATH
	HOSTNAME=`/bin/hostname`
	export USER LOGNAME PS1 PATH
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

2.9). 增加设备、网络配置文件

   $ cp -r ../busybox-1.32.0/examples/mdev.conf ./etc/
   $ cp -r ../busybox-1.32.0/examples/devfsd.conf ./etc/
   $ cp -r ../busybox-1.32.0/examples/inetd.conf ./etc/
   $ cp -r ../busybox-1.32.0/examples/udhcp ./etc/
   $ cp -r ../busybox-1.32.0/examples/var_service/ ./etc/service
   /** 增加可执行权限 */
   $ chmod +x etc/mdev.conf 
   $ chmod +x etc/inittab 
   $ chmod +x etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.0).制作 uclib 库
主机库路径: /usr/local/arm_linux_4.8/lib

cd /usr/local/arm_linux_4.8/lib
cp *.so* /home/robot/busybox-1.32/rootfs/lib/ -d 		/*** -d copy ln solution */
  • 1
  • 2

至此简单的根文件系统制作完成。

(三). 制作 yaffs2 的镜像文件

3.1). 下载新唐提供的yaffs制作工具源码

$ mkdir tool
$ cd tool
$ git clone https://gitee.com/OpenNuvoton/NUC980_Linux_Applications.git
  • 1
  • 2
  • 3

进入NUC980_Linux_Applications/yaffs2utils/目录。

$ make
$ sudo cp mkyaffs2 /usr/local/bin/
$ cd /usr/local/bin/
$ sudo chmod u+x mkyaffs2image
  • 1
  • 2
  • 3
  • 4

即可以使用 mkyaffs2 制作镜像文件

3.2). 制作 yaffs2 的镜像文件

cd /home/robot/busybox-1.32/
mkyaffs2 --inband-tags -p 2048 rootfs rootfs_yaffs2.img
  • 1
  • 2

至此rootfs_yaffs2 镜像文件制作完成,可烧写到nuc980的spi flash芯片中。

(四). 烧写rootfs.yaffs2镜像到 nuc980 芯片,mtdblk2分区地址0x1600000。

参考《NuWriter用户手册(简体中文)》烧写nuc980芯片说明文件,注意需先擦除176块至flash结束地址。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/188906
推荐阅读
相关标签
  

闽ICP备14008679号