IMX7 通过Linux使用SDCard烧录UBOOT、kernel、dtb、rootfs详解
开发板使用的是NXP官网的开发板,芯片信号是:MCIMX7D7DVM10SCLinux版本:Ubuntu14.04SDCard大小:2G(最小使用2G,因为根文件系统比较大)通过VM虚拟机进行的操作uboot、kernel、rootfs、dtb的镜像文件是通过在NXP官网提供的MFGTools工具里面找到的,该工具里面有很多镜像,对应的镜像通ucl2.xml和cfg.ini去分析找到的...
开发板使用的是NXP官网的开发板,芯片信号是:MCIMX7D7DVM10SC
Linux版本:Ubuntu14.04
SDCard大小:2G(最小使用2G,因为根文件系统比较大)
通过VM虚拟机进行的操作
uboot、kernel、rootfs、dtb的镜像文件是通过在NXP官网提供的MFGTools工具里面找到的,该工具里面有很多镜像,对应的镜像通ucl2.xml和cfg.ini去分析找到的
在插入SDCard前,在Linux上运行命令:
sudo fdisk /dev/sd //一直按tab键,系统会自动补全,通过补全的信息,记住系统现在有那些设备
lqd@ubuntu:~/imx7-image$ fdisk /dev/sd
sda sda1 sda2 sda5
然后插入SDCard,将SDCard连接到Linux系统上。
再运行:
sudo fdisk /dev/sd //一直按tab键,系统会自动补全,通过查看补全的信息,多出来的设备就是我们的SDCard
lqd@ubuntu:~/imx7-image$ fdisk /dev/sd
sda sda1 sda2 sda5 Sdb sdb1 sdb2
再运行命令:(将所有的sdb卸载)
sudo umount /dev/sdb1
sudo umount /dev/sdb2
再对SDCard进行分区:
$ sudo fdisk /dev/sdb 确定卡ID
键入以下参数(每个参数后跟<ENTER>):
p [列出当前分区]
d [删除现有分区。 重复此操作,直到“p”命令没有报告不必要的分区才能重新启动。
n [创建一个新分区]
p [创建主分区 - 用于两个分区]
1 [第一个分区]
20480 [从偏移部门开始]
1024000 [用于启动映像的第一个分区的大小]
p [检查分区]
n
p
2
1228800 [从偏移扇区开始,为内核,引导加载程序及其配置数据留出足够的空间]
<enter> [使用默认值将创建一个扩展到媒体最后一个扇区的分区]
p [检查分区]
w [这将分区表写入介质并且fdisk退出]
接下来就是烧写uboot,使用命令:
$ sudo dd if=<U-Boot image> of=/dev/sdb bs=1k seek=<offset> conv=fsync
Where offset is:
• 1 - for i.MX 6 or i.MX 7
• 33 - for i.MX 8
<U-Boot image>:从MFGTools提取的uboot镜像
对SDCard分好的两个区设置格式:
sudo mkfs.fat /dev/sdb1 //第一个分区一定要是fat格式
sudo mkfs.ext3 /dev/sdb2 //第二个分区可以是ext3格式,也可以是ext4格式
挂载第一个分区:
创建一个文件夹,用作挂载点。
sudo mkdir -p /mnt/nxp
sudo mount /dev/sdb1 /mnt/nxp
复制dtb和kernel镜像到第一个分区:
sudo cp <dtb name> <kernel name> /mnt/nxp
注意:因为我使用的全是官方的资料,dtb的全名是:zImage-imx7d-sdb.dtb 但是在启动的时候,需要的却是:imx7d-sdb.dtb,所以我们要将zImage-imx7d-sdb.dtb改imx7d-sdb.dtb。命令如下:
sudo mv zImage-imx7d-sdb.dtb imx7d-sdb.dtb
卸载第一个分区:
sudo umount /mnt/nxp
挂载第二个分区:
sudo mount /dev/sdb2 /mnt/nxp
解压文件系统到第二个分区:
sudo tar -jxvf <rootfs name> -C /mnt/nxp //解压过程需要几分钟,看PC的性能和SDCard的速度
卸载第二个分区:
sudo umount /mnt/nxp
然后将SDCard取下,插入开发板,将开发板设置为SDCard启动,就可以看见系统开始跑了!
更多推荐
所有评论(0)