海思35xx系统移植

嵌入式Linux系统移植

  • 海思35xx系统移植
      • 制作根文件系统
      • 参考文档

海思35xx系统移植

制作根文件系统

  1. 编译和安装 busybox

    下载busybox源码,依次运行makemake install 默认会在 _install 目录下生成系统基本的文件。

  2. 制作根文件系统的相关文件

    /home/luoyang/nfsroot/myrootfs 目录下建立 rootfs_glibc 目录,然后将上一步 _install 目录下所有文件复制进去,再建立一些基本的目录:

    cd /home/luoyang/nfsroot
    mkdir rootfs_glibc
    cp -R packet/busybox-1.20.2/_install/* . # -R 就是复制所有
    mkdir etc dev lib tmp var mnt home proc
    

    配置 etc、lib、dev 目录的必需文件。

    a) etc 目录可参考系统/etc 下的文件。其中最主要的文件包括 inittabfstabinit.d/rcS 文件等,这些文件最好从 busybox 的 examples 目录下拷贝过来,根据需要自行修改。
    b) dev 目录下的设备文件,可以直接从系统中拷贝过来或者使用 mknod 命令生成需
    要的设备文件。拷贝文件时请使用 cp –R file。(注:海思提供了udev的源码,可以使用udev自动检测设备)
    c) lib 目录是存放应用程序所需要的库文件,请根据应用程序需要拷贝相应的库文
    件。(关于海思的一些库直接从长沙3531D开发板复制出来的)

  3. 修改 /etc/fstab 文件如下:

proc		/proc		proc	defaults,nodev,nosuid	0	0
sysfs		/sys		sysfs	defaults,nodev,nosuid	0	0
tmpfs		/dev		tmpfs	defaults	0	0
tmpfs		/tmp		tmpfs	defaults	0	0
  1. 修改 /etc/inittab 文件

    # Boot-time system configuration/initialization script.
    # This is run first except when booting in single-user mode.
    #
    ::sysinit:/etc/init.d/rcS
    # Example of how to put a getty on a serial line (for a terminal)
    ::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
    #::respawn:/sbin/getty -L ttyS1 9600 vt100
    #
    # Example how to put a getty on a modem line.
    #::respawn:/sbin/getty 57600 ttyS2
    
    # Stuff to do when restarting the init process
    ::restart:/sbin/init
    
    # Stuff to do before rebooting
    ::ctrlaltdel:/sbin/reboot
    ::shutdown:/bin/umount -a -r
    ::shutdown:/sbin/swapoff -a
    
  2. 关于海思设备节点自动添加的问题

    在海思 /etc/init.d/S01udev这个文件中有如下命令:

    #!/bin/sh
    
    mkdir /dev/pts
    mount -t devpts devpts /dev/pts
    
    mkdir -p /dev/.udev
    udevd --daemon
    udevadm trigger
    
    

    这个就是用于设备热拔插设置hotplug(即,设备自动检测)。

编译内核指令

make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- uImage

boot from yaffs2

setenv bootargs 'mem=128M console=ttyAMA0,115200 root=/dev/mtdblock2 rw rootfstype=yaffs2 mtdparts=hinand:1M(boot),4M(kernel),128M(rootfs)'

boot from nfs:

setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.1.119:/home/luoyang/nfsroot/myrootfs/rootfs_glibc ip=192.168.1.98:192.168.1.119:192.168.1.1:255.255.255.0 console=ttyAMA0,115200 mem=128M'

参考文档

  • uboot nfs 启动
  • uboot 官方关于 nfs 启动
  • 关于nfs启动上面的启动参数的详解
  • 利用busybox和mkfs.jffs2制作根文件系统
  • hi3518c根文件系统的制作与移植
  • Linux根文件系统制作
  • 一步一步制作yaffs根文件系统
  • mdev的hotplug模式 :海思用的不是mdev,用的udev

你可能感兴趣的:(嵌入式)