Marvell 88f8040 从emmc引导进入 内核

宿主机:Ubuntu真机18.04 LTS /X64
目标板:Marvell 88f8040(SAM7)

简介:SAM7开发板已经可以从NFS引导进入内核,此次记录从emmc引导进内核的步骤:首先要对emmc进行分区;这里请注意:只有进入Linux系统才能够分区,所以要先通过网络引导或者SD卡引导内核进入Linux系统。

需要准备的源文件:
Image 设备树文件(.dtb文件),还有文件系统;

mmc进行分区的方法


1592792678(1).jpg

执行fdisk /dev/mmcblk1 命令。 选择m 帮助。查看具体的参数帮助信息。

emmc分区设置好后,进行挂载:
root@localhost:~# mount /dev/mmcblk1p1 /mnt/ (无信息输出表明挂载成功)
我在挂载过程中出现这个错误:mount: wrong fs type, bad option, bad superblock on /dev/mmcblk1
检查了一下是文件系统类型不支持,执行 sudo mkfs -t ext4 /dev/mmcblk1 后再进行挂载,这次成功。
此处进入mnt目录下,将文件系统的压缩包拷贝到当前目录(mnt),并解压。然后在拷贝Image文件和设备树文件到解压后的boot 目录下

root@localhost:~# cd /mnt
root@localhost:/mnt# ls
bin   core  etc   lib         media  opt   root  sbin  sys  usr
boot  dev   home  lost+found  mnt    proc  run   srv   tmp  var
root@localhost:/mnt# cp /opt/
Image                  fdt.dtb                uImage
armada-8040-mcbin.dtb  rootfs_18.10.tar.bz2
root@localhost:/mnt# cp /opt/

挂载完成后 卸载磁盘。 umount /mnt/

重启进入uboot命令行界面:
设置bootcmd 为mmc启动: 此处我的bootcmd参数为:

Marvell>> echo $bootcmd
mmc dev 1; ext4load mmc 1:1 0x7000000 boot/uImage; ext4load mmc 1:1 0x6f00000 boot/fdt.dtb; setenv bootargs console root=/dev/mmcblk1p1 1 p1 rw rootwait cpuidle.off=1; booti 0x7000000 - 0x6f00000

注意:root=/dev/mmcblkp1 为你的文件系统的所在位置

设置好环境变量后,saveenv 进行保存一下。然后reset 重启后。 会自动从mmc加载进去内核:
如下所示:

MMC:   sdhci@6e0000: 0, sdhci@780000: 1
Loading Environment from SPI Flash... Bus spi@700680 CS0 configured for direct access 00000000f9000000:0x1000000
SF: Detected w25q128bv with page size 256 Bytes, erase size 4 KiB, total 16 MiB
OK
Model: Marvell Armada 8040 MACCHIATOBin
Net:   eth0: mvpp2-0, eth1: mvpp2-1, eth2: mvpp2-2, eth3: mvpp2-3, eth4: mvpp2-4, eth5: mvpp2-5
Hit any key to stop autoboot:  0
switch to partitions #0, OK
mmc1(part 0) is current device
20134400 bytes read in 19363 ms (1014.6 KiB/s)
37925 bytes read in 9 ms (4 MiB/s)
## Flattened Device Tree blob at 06f00000
   Booting using the fdt blob at 0x6f00000
   Using Device Tree in place at 0000000006f00000, end 0000000006f0c424

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.14.76-6.1.0-g474b5ece7 (ljc@ljc-SEU6) (gcc version 7.3.1 20180425 [linaro-7.3-2018.05 revision d29120a424ecfbc167ef90065c0eeb7f91977701] (Linaro GCC 7.3-2018.05)) #1 SMP PREEMPT Thu May 28 13:47:16 CST 2020
[    0.000000] Boot CPU: AArch64 Processor [410fd081]
[    0.000000] Machine model: Marvell 8040 MACCHIATOBin
[    0.000000] efi: Getting EFI parameters from FDT:
[    0.000000] efi: UEFI not found.

启动完成,进入Linux系统。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容