imx6ull - 制作烧录SD卡

万有斥力  金牌会员 | 2024-6-22 05:49:06 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 547|帖子 547|积分 1641

1、参考NXP官方的手册《i.MX_Linux_Users_Guide.pdf》的这一章节:

1、SD卡分区

   提示:我们常用的SD卡一个扇区的巨细是512字节。
  先说一下i.MX6ULL使用SD卡启动时的分区情况,NXP官方给的镜像布局布局如下所示:

可以看到,上图将一张SD卡分成了三部分:
第一部分:扇区起始地址ox400bytes(2),巨细为20478个扇区,分区格式为原始格式,用于存放uboot;(0x400 bytes转为10进制是1024 bytes, 刚好等于2个扇区巨细;这两个扇区是为了生存分区表的信息。所以从0x400地址开始存放U-boot,括号中的2可以明白为从第2个扇区的起始地址开始,扇区编号从0开始数起)
第二部分:扇区起始地址oxa0000 bytes(20480个扇区),巨细为500M(1024000个扇区),分区格式为FAT,用于存放内核和设备树;
第三部分:扇区起始地址ox25800000(1228800个扇区),巨细为SD卡剩余的空间,分区格式为Ext3或Ext4,用于存放rootfs,也就是文件系统。
由于第一部分用于存放UBOOT,无文件系统格式的要求,所以我们对分区的创建从第二部分(第20480扇区地点的地址)开始就可以。
拿到一张SD卡,首先将SD卡在windows下格式化成FAT32格式:

插入ubuntu系统之前,先使用以下命令检察一下全部的磁盘:
  1. fdisk -l
复制代码
将SD卡插入ubuntu,再次输入以上命令检察一下全部磁盘,会发现多出来一个/dev/sdb设备:

其中,/dev/sdb代表的就是SD卡本身,/dev/sdb1代表的是SD卡上的分区一,且格式为FAT32。
注意:SD卡插入ubuntu后,会出现/dev/sdX,详细是/dev/sdb还是/dev/sdc又或者是/dev/sdd要视个人插入ubuntu的USB口设备情况而定。
接下来对SD卡重新分区:
  1. fdisk /dev/sdb
复制代码
d         ---> 删除分区
n         ---> 创建分区 
p         ---> 选择为主分区
1         ---> 分区编号为1
20480     ---> 分区1起始扇区
+500M     ---> 分区巨细:500MB
p         ---> 表现当前分区
n         ---> 创建分区
p         ---> 选择为主分区
2         ---> 分区编号为2
1228800   ---> 分区起始地址
<enter>   ---> 敲回车,表示将剩下的全部空间都分给分区2
p         ---> 表现当前分区
w         ---> 生存

设置sdb1分区格式为FAT:
  1. sudo mkfs.vfat /dev/sdb1
复制代码
设置sdb2分区格式为Ext3或Ext4都可以
  1. sudo mkfs.ext3 /dev/sdb2
  2. 或者
  3. sudo mkfs.ext4 /dev/sdb2
复制代码

此时SD卡的分布如下图所示:


2、拷贝uboot到SD卡

拷贝uboot到SD卡,输入以下命令:
  1. sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync
复制代码
从上面我们对SD卡分区的时间知道,uboot需要从第0分区的扇区地址2开始的,SD卡中一个扇区占512字节,SD卡偏移1K字节处开始生存uboot。上面这条命令中,bs设置dd命令的读写块为1K巨细(这个数据可以任意设置,设置大一点读写就快),并且设置seek=1(单位为KB),表示从SD卡/dev/sdb开头偏移1K字节处开始写u-boot.imx,恰好就是写到了u-boot在SD卡中0区地点位置处,前面预留1K字节刚好2个扇区巨细生存分区表信息。
问:为什么从SD卡1K位置处存放uboot而不是从SD卡头部开始?
答:这是NXP官方手册上写前面1K字节是生存分区表的信息。

3、拷贝kernel和dtbs到SD卡
创建挂载点:
  1. mkdir /mountpoint
复制代码
挂载分区一:
  1. mount /dev/sdb1 /mountpoint  (注意根据上面的分区这是sdb1,存放kernal image和dtbs)
复制代码
使用cp命令将zImage和*.dtb文件拷贝进/mountpoint目录,然后取消挂载:
  1. umount mountpoint
复制代码

4、拷贝文件系统到SD卡
挂载分区二:
  1. mount /dev/sdb2 /mountpoint (注意根据上面的分区这是sdb2,存放根文件系统)
复制代码
解包你的文件系统,假设文件系统包为:rootfs.tar.bz2
  1. mkdir rootfs
  2. tar -jxvf rootfs.tar.bz2 -C rootfs/
复制代码
进入文件系统目录:
  1. cd rootfs
复制代码
拷贝全部文件到/mountpoint目录:
  1. cp -a * /mountpoint
复制代码
然后取消挂载:
  1. umount mountpoint
  2. sync
复制代码
到此,SD启动卡就已经制作完成!
1. 官方资料和工具获取

1.1 官方源码资料

Embedded Linux for i.MX Applications Processors是NXP专门针对i.MX系列维护的uboot和linux等源码,有不同的版本和分支。截至文章发布官方最新版本Linux 5.15.52_2.1.0,为了和之前的iMX6ULL维护一份代码我这里选择Linux 5.15.32_2.0.0​这个版本。下载文档资料和官方demo板的镜像包,可以参考使用。

更加详细资料获取方法请参考:iMX8MM uboot2021.04 linux5.15.32移植_arm_Sonboy(^_^)-华为云开发者联盟
参考:i.MXU6LL - 制作烧录SD卡详细步调_imx6ullsd卡烧录程序-CSDN博客

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

万有斥力

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表