Tiny4412从零搭建linux系统之从SD卡启动

    https://blog.csdn.net/tech_pro/article/details/80269751这篇文章讲了一下如何从emmc中启动系统,本文来说一下如何从SD卡中启动系统。

一、对SD卡进行分区并格式化SD卡

    首先从emmc中启动系统,然后执行如下命令来对SD卡进行分区和格式化:

fdisk -c 1 320 2057 520
fatformat mmc 1:1
ext3format mmc 1:2
ext3format mmc 1:3
ext3format mmc 1:4

二、编译u-boot并把它烧写到SD卡中

    本部分内容可以参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751

三、编译内核并下载内核到SD卡中

3.1 编译内核

    参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751

3.2 下载到SD卡

    下载内核到SD卡中有两种方法:从电脑中直接拷贝到SD卡和通过dnw命令来下载

3.2.1 从电脑中直接拷贝内核到SD卡

    因为对SD卡进行分区时,内核分区被格式化为fat分区,所以可以直接从电脑中把kernel的镜像的zImage拷贝到SD卡中。

    设置开发板从SD卡启动,在u-boot命令行模式下执行以下命令可以下载并启动内核:

fatload mmc 0:1 0x40008000  zImage 
bootm 0x40008000
3.2.2 通过dnw命令来下载内核

    设置开发板从SD卡启动,在u-boot命令行下执行下面这条命令来下载内核到内存中:

dnw 0x40008000

    此时在pc机上执行如下命令来发送内核到开发板内存中(要想在linux主机上使用dnw,需要先安装secbulk.ko驱动):

sudo dnw arch/arm/boot/zImage

    通过u-boot命令行下的movi命令把内存中内核数据写到SD开的kernel分区中:

movi write kernel 0 0x40008000

    可以在u-boot下执行如下命令来启动内核:

movi read kernel 0 0x40008000
bootm 0x40008000

四、把根文件系统加载到SD卡中

    为了把根文件系统写入SD卡的指定分区,需要先通过NFS来挂载网络文件系统,然后通过网络文件系统来挂载根文件系统分区,把根文件系统数据写入这个分区,这样就实现了吧根文件系统加载到SD卡中了,然后重新启动开发板并设置u-boot参数来从SD卡中挂载根文件系统。

4.1 通过NFS来挂载网络文件系统

    参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751

4.2 挂载SD卡的根文件系统分区,复制根文件系统数据

    执行命令如下:

开发板:mount /dev/mmcblk0p4  /mnt
PC机:sudo tar -cf francis_linux_fs.tar francis_linux_fs
      sudo tar -xvf francis_linux_fs.tar -C  francis_linux_fs/
开发板:
cp francis_linux_fs/* mnt/ -rfd
rm -rf francis_linux_fs/
umount mnt/

    执行完上面这些命令就可以把根文件系统写到SD卡的第四个分区当中了,然后重新启动系统并设置u-boot参数,这样就实现了从SD卡挂接根文件系统的操作。u-boot参数设置如下:

set bootargs "root=/dev/mmcblk0p4 rootfstype=ext4 console=ttySAC0,115200 init=/linuxrc ctp=2 lcd=S70"
set bootcmd "movi read kernel 0 0x40008000; bootm 0x40008000"		
或者
set bootcmd  "fatload mmc 0:1 0x40008000 zImage; bootm 0x40008000"
save
boot 或者 reset

你可能感兴趣的:(嵌入式系统移植,嵌入式系统搭建,配置和安装)