打印
[新唐博主]

nuc980 yaffs2 根文件制作与烧写全过程记录

[复制链接]
2131|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zljiu|  楼主 | 2021-8-14 17:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
(一). 搭建 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).配置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 配置路径


使用特权

评论回复
沙发
zljiu|  楼主 | 2021-8-14 17:14 | 只看该作者
(二). 完善根文件系统内容
在rootfs目录下仅仅只是创建一个根文件系统的框架,很多系统运行所必须的文件尚未建立成功,必须手动复制进去。
2.1).
复制busybox-1.32.0/examples/bootfloppy/etc 整个目录下的全部文件,到rootfs/etc目录下。

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


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




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

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



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



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:





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



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

# add context
          root::0:0:root:/:/bin/sh


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


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


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 */


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


使用特权

评论回复
板凳
zljiu|  楼主 | 2021-8-14 17:15 | 只看该作者
(三). 制作 yaffs2 的镜像文件

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

$ mkdir tool
$ cd tool
$ git clone https://gitee.com/OpenNuvoton/NUC980_Linux_Applications.git


进入NUC980_Linux_Applications/yaffs2utils/目录。

$ make
$ sudo cp mkyaffs2 /usr/local/bin/
$ cd /usr/local/bin/
$ sudo chmod u+x mkyaffs2image


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

3.2). 制作 yaffs2 的镜像文件

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


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

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


使用特权

评论回复
地板
foxsbig| | 2021-8-19 10:54 | 只看该作者
学习了,这个要慢慢跟着试试

使用特权

评论回复
5
keaibukelian| | 2021-9-10 15:23 | 只看该作者
根文件的用途是什么呢

使用特权

评论回复
6
labasi| | 2021-9-10 15:25 | 只看该作者
代码可以原封不动的额用吗

使用特权

评论回复
7
paotangsan| | 2021-9-10 15:27 | 只看该作者
要慢慢的才能上手了

使用特权

评论回复
8
renzheshengui| | 2021-9-10 15:29 | 只看该作者
还有其他的烧写办法吗

使用特权

评论回复
9
wakayi| | 2021-9-10 15:30 | 只看该作者
镜像文件的用途是什么啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

3319

帖子

3

粉丝