https://blog.csdn.net/tech_pro/article/details/80269751这篇文章讲了一下如何从emmc中启动系统,本文来说一下如何从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
本部分内容可以参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751
参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751
下载内核到SD卡中有两种方法:从电脑中直接拷贝到SD卡和通过dnw命令来下载
因为对SD卡进行分区时,内核分区被格式化为fat分区,所以可以直接从电脑中把kernel的镜像的zImage拷贝到SD卡中。
设置开发板从SD卡启动,在u-boot命令行模式下执行以下命令可以下载并启动内核:
fatload mmc 0:1 0x40008000 zImage
bootm 0x40008000
设置开发板从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卡的指定分区,需要先通过NFS来挂载网络文件系统,然后通过网络文件系统来挂载根文件系统分区,把根文件系统数据写入这个分区,这样就实现了吧根文件系统加载到SD卡中了,然后重新启动开发板并设置u-boot参数来从SD卡中挂载根文件系统。
参考这篇文章:https://blog.csdn.net/tech_pro/article/details/80269751
执行命令如下:
开发板: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