哪個網(wǎng)站能學(xué)做微商網(wǎng)站生成器
1、參考NXP官方的手冊《i.MX_Linux_Users_Guide.pdf》的這一章節(jié):
1、SD卡分區(qū)
提示:我們常用的SD卡一個扇區(qū)的大小是512字節(jié)。
先說一下i.MX6ULL使用SD卡啟動時的分區(qū)情況,NXP官方給的鏡像布局結(jié)構(gòu)如下所示:
可以看到,上圖將一張SD卡分成了三部分:
第一部分:扇區(qū)起始地址ox400bytes(2),大小為20478個扇區(qū),分區(qū)格式為原始格式,用于存放uboot;(0x400 bytes轉(zhuǎn)為10進(jìn)制是1024 bytes, 剛好等于2個扇區(qū)大小;這兩個扇區(qū)是為了保存分區(qū)表的信息。所以從0x400地址開始存放U-boot,括號中的2可以理解為從第2個扇區(qū)的起始地址開始,扇區(qū)編號從0開始數(shù)起)
第二部分:扇區(qū)起始地址oxa0000 bytes(20480個扇區(qū)),大小為500M(1024000個扇區(qū)),分區(qū)格式為FAT,用于存放內(nèi)核和設(shè)備樹;
第三部分:扇區(qū)起始地址ox25800000(1228800個扇區(qū)),大小為SD卡剩余的空間,分區(qū)格式為Ext3或Ext4,用于存放rootfs,也就是文件系統(tǒng)。
由于第一部分用于存放UBOOT,無文件系統(tǒng)格式的要求,所以我們對分區(qū)的創(chuàng)建從第二部分(第20480扇區(qū)所在的地址)開始就可以。
拿到一張SD卡,首先將SD卡在windows下格式化成FAT32格式:
插入ubuntu系統(tǒng)之前,先使用以下命令查看一下所有的磁盤:
fdisk -l
將SD卡插入ubuntu,再次輸入以上命令查看一下所有磁盤,會發(fā)現(xiàn)多出來一個/dev/sdb設(shè)備:
其中,/dev/sdb代表的就是SD卡本身,/dev/sdb1代表的是SD卡上的分區(qū)一,且格式為FAT32。
注意:SD卡插入ubuntu后,會出現(xiàn)/dev/sdX,具體是/dev/sdb還是/dev/sdc又或者是/dev/sdd要視個人插入ubuntu的USB口設(shè)備情況而定。
接下來對SD卡重新分區(qū):
fdisk /dev/sdb
d ? ? ? ? ---> 刪除分區(qū)
n ? ? ? ? ---> 創(chuàng)建分區(qū)?
p ? ? ? ? ---> 選擇為主分區(qū)
1 ? ? ? ? ---> 分區(qū)編號為1
20480 ? ? ---> 分區(qū)1起始扇區(qū)
+500M ? ? ---> 分區(qū)大小:500MB
p ? ? ? ? ---> 顯示當(dāng)前分區(qū)
n ? ? ? ? ---> 創(chuàng)建分區(qū)
p ? ? ? ? ---> 選擇為主分區(qū)
2 ? ? ? ? ---> 分區(qū)編號為2
1228800 ? ---> 分區(qū)起始地址
<enter> ? ---> 敲回車,表示將剩下的所有空間都分給分區(qū)2
p ? ? ? ? ---> 顯示當(dāng)前分區(qū)
w ? ? ? ? ---> 保存
設(shè)置sdb1分區(qū)格式為FAT:
sudo mkfs.vfat /dev/sdb1
設(shè)置sdb2分區(qū)格式為Ext3或Ext4都可以
sudo mkfs.ext3 /dev/sdb2
或者
sudo mkfs.ext4 /dev/sdb2
此時SD卡的分布如下圖所示:
2、拷貝uboot到SD卡
拷貝uboot到SD卡,輸入以下命令:
sudo dd if=u-boot.imx of=/dev/sdb bs=1k seek=1 conv=fsync
從上面我們對SD卡分區(qū)的時候知道,uboot需要從第0分區(qū)的扇區(qū)地址2開始的,SD卡中一個扇區(qū)占512字節(jié),SD卡偏移1K字節(jié)處開始保存uboot。上面這條命令中,bs設(shè)置dd命令的讀寫塊為1K大小(這個數(shù)據(jù)可以任意設(shè)置,設(shè)置大一點讀寫就快),并且設(shè)置seek=1(單位為KB),表示從SD卡/dev/sdb開頭偏移1K字節(jié)處開始寫u-boot.imx,正好就是寫到了u-boot在SD卡中0區(qū)所在位置處,前面預(yù)留1K字節(jié)剛好2個扇區(qū)大小保存分區(qū)表信息。
問:為什么從SD卡1K位置處存放uboot而不是從SD卡頭部開始?
答:這是NXP官方手冊上寫前面1K字節(jié)是保存分區(qū)表的信息。
3、拷貝kernel和dtbs到SD卡
創(chuàng)建掛載點:
mkdir /mountpoint
掛載分區(qū)一:
mount /dev/sdb1 /mountpoint (注意根據(jù)上面的分區(qū)這是sdb1,存放kernal image和dtbs)
使用cp命令將zImage和*.dtb文件拷貝進(jìn)/mountpoint目錄,然后取消掛載:
umount mountpoint
4、拷貝文件系統(tǒng)到SD卡
掛載分區(qū)二:
mount /dev/sdb2 /mountpoint (注意根據(jù)上面的分區(qū)這是sdb2,存放根文件系統(tǒng))
解包你的文件系統(tǒng),假設(shè)文件系統(tǒng)包為:rootfs.tar.bz2
mkdir rootfs
tar -jxvf rootfs.tar.bz2 -C rootfs/
進(jìn)入文件系統(tǒng)目錄:
cd rootfs
拷貝所有文件到/mountpoint目錄:
cp -a * /mountpoint
然后取消掛載:
umount mountpoint
sync
到此,SD啟動卡就已經(jīng)制作完成!
1. 官方資料和工具獲取
1.1 官方源碼資料
Embedded Linux for i.MX Applications Processors是NXP專門針對i.MX系列維護(hù)的uboot和linux等源碼,有不同的版本和分支。截至文章發(fā)布官方最新版本Linux 5.15.52_2.1.0,為了和之前的iMX6ULL維護(hù)一份代碼我這里選擇Linux 5.15.32_2.0.0?這個版本。下載文檔資料和官方demo板的鏡像包,可以參考使用。
更加詳細(xì)資料獲取方法請參考:iMX8MM uboot2021.04 linux5.15.32移植_arm_Sonboy(^_^)-華為云開發(fā)者聯(lián)盟
參考:i.MXU6LL - 制作燒錄SD卡詳細(xì)步驟_imx6ullsd卡燒錄程序-CSDN博客