本文以飛凌嵌入式 OKMX6ULL-S 開(kāi)發(fā)板為基礎(chǔ)講解,本文分為三個(gè)部分,主要講解了 iMX6ULL SD 卡燒寫(xiě)系統(tǒng)及 OTG 燒寫(xiě)系統(tǒng)的以及單步更新內(nèi)核的步驟。通過(guò)本文您可以快速實(shí)現(xiàn)飛凌 iMX6ULL 開(kāi)發(fā)板系統(tǒng)燒寫(xiě)。
1、SD 卡燒寫(xiě)系統(tǒng)
以 nand- sdburn 為例,燒寫(xiě) NAND 進(jìn)行操作說(shuō)明,飛凌 iMX6ULL 撥碼開(kāi)關(guān)設(shè)置參考如下。G 設(shè)置撥碼開(kāi)關(guān):
燒寫(xiě) / 啟動(dòng) | 序號(hào) 1 | 序號(hào) 2 | 序號(hào) 3 | 序號(hào) 4 | 序號(hào) 5 | 序號(hào) 6 | 序號(hào) 7 |
---|---|---|---|---|---|---|---|
SD 卡燒寫(xiě) | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
SD 卡燒寫(xiě) | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
SD 卡燒寫(xiě) | 0 | 0 | 0 | 1 | 1 | 0 | 0 |
SD 卡燒寫(xiě) | 1 | 1 | X | X | X | X | X |
注意:上表中“1”代表 ON,“0”代表 OFF,“X”代表無(wú)關(guān)。
1、制作 SD 卡
將文件 nand-burnsd 拷貝到 Ubuntu 系統(tǒng)的任一目錄,假設(shè)為 /home/neo/work。
用戶(hù)資料 Linux 燒錄工具 nand-sdburn.zip 為 256M NAND 文件系統(tǒng)。
用戶(hù)資料 Linux 燒錄工具 emmc-sdburn.zip 為 4G EMMC 文件系統(tǒng)。
步驟 1:nand-burnsd.zip 解壓后拷貝到 /home/neo/work。
步驟 2:使用 USB 讀卡器把 SD 卡插入到電腦的 USB 端口(VMware 虛擬機(jī)用戶(hù)如果 U 盤(pán)沒(méi)有被虛擬
步驟 3:待虛擬機(jī)識(shí)別到 SD 卡后彈出目錄再進(jìn)行下邊燒寫(xiě)操作。進(jìn)入 /home/neo/work/nand-burnsd 目錄,執(zhí)行腳本:
neo@ubuntu:~/work/nand-burnsd$ sudo ./6ullsdburn.sh
執(zhí)行上述命令后,終端會(huì)列出電腦的硬盤(pán)或 U 盤(pán),對(duì)應(yīng)選擇自己的 SD 卡,回車(chē)。
注意:判定自己的 U 盤(pán)是 sda/sdb/sdc 可以根據(jù)容量進(jìn)行判斷,比如自己的優(yōu)盤(pán)容量為 4G,則其 size 為 3872256 KB≈ 4G,建議用戶(hù)執(zhí)行此操作時(shí)不要同時(shí)插入多個(gè)優(yōu)盤(pán),以免混淆。
這里以我們的操作為例:
選擇 1 ,回車(chē)
選擇 y,回車(chē),等待至制卡完成。
若打印信息中沒(méi)有下圖紅框中標(biāo)識(shí)的信息,則 SD 卡掛載失敗,則需要使用 Ubuntu 重新卸載并掛載。
卡制作完成后可以看到 boot 分區(qū)包含 sdrun 和 target 兩個(gè)目錄。sdrun 文件夾內(nèi)容用于引導(dǎo)系統(tǒng)燒寫(xiě),無(wú)需修改;target 目錄內(nèi)容會(huì)燒寫(xiě)到 flash 芯片。如果需要替換鏡像文件,只需將 target 目錄中的對(duì)應(yīng)文件替換掉,并保持同樣的命名,之后再重新進(jìn)行系統(tǒng)燒寫(xiě)。
2、SD 卡燒寫(xiě)系統(tǒng)
將上一節(jié)中制作好的 SD 卡插入,同時(shí)將撥碼開(kāi)關(guān)置于下圖所示。3、5、8 均為 ON,1、2、4、6、7 均為 OFF,如下圖。此時(shí)將 SD 卡中 target 的內(nèi)容燒寫(xiě)到 NAND 中。
lib/modules/4.1.15-00026-g407ada6-dirty/modules.softdep
lib/modules/4.1.15-00026-g407ada6-dirty/source
lib/modules/4.1.15-00026-g407ada6-dirty/modules.dep.bin
lib/modules/4.1.15-00026-g407ada6-dirty/modules.symbols
Update Complete!!!!!!!
同時(shí) iMX6ULL 底板上的 LED 閃爍。燒寫(xiě)時(shí)間較長(zhǎng),等待系統(tǒng)燒寫(xiě)完成之后,串口打印信息:
燒寫(xiě)完成之后,斷電,將撥碼開(kāi)關(guān)撥到 4、5、8 均為 ON,1、2、3、6、7 均為 OFF,重新上電 iMX6ULL 開(kāi)發(fā)板,NAND 啟動(dòng)。
3、OTG 燒寫(xiě)系統(tǒng)
注意:使用 OTG 燒寫(xiě)時(shí),iMX6ULL 開(kāi)發(fā)板不能插入 SD 卡。
mx6ull-4gemmc-512mddr-qt5.6.vbs
燒寫(xiě) 4GeMMC+512MDDR 的系統(tǒng)
mx6ull-256mnand-256mddr-cmd.vbs
燒寫(xiě) 256MNAND+256MDDR 系統(tǒng)
① 首先將燒寫(xiě)工具 Mfg 工具拷貝到 windows 下解壓,燒寫(xiě)工具路徑如下所示:用戶(hù)資料 Linux 燒錄工具 mfgtools.zip
② 5V 電源供電如圖,開(kāi)關(guān)撥到供電口端:
③ 撥碼開(kāi)關(guān)設(shè)置為 1、2 為 ON,其他狀態(tài)任意。如圖:
④ 雙擊“ mx6ull-256mnand-256mddr-cmd.vbs ”(已寫(xiě)好腳本,直接燒寫(xiě)),如下圖:
⑤ 插入 USB OTG,如下圖:
自動(dòng)識(shí)別為 HID,如圖:
⑥ 點(diǎn)擊 start,開(kāi)始燒寫(xiě)系統(tǒng),中間彈出格式化對(duì)話(huà)框,點(diǎn)擊“取消”格式化選項(xiàng),或者不管它,直到燒寫(xiě)完成。如圖:
⑦ 系統(tǒng)燒寫(xiě)完成之后,出現(xiàn)“Done”,之后點(diǎn)擊“stop”,停止。再點(diǎn)擊“Exit”,關(guān)閉燒寫(xiě)燒寫(xiě)工具。斷電,將撥碼開(kāi)關(guān)撥到 4、5、8 均為 ON,1、2、3、6、7 均為 OFF,重新上電 iMX6ULL 開(kāi)發(fā)板,NAND 啟動(dòng)。
2、單步更新內(nèi)核 1 eMMC 單步更新內(nèi)核
系統(tǒng)啟動(dòng)后,將待替換設(shè)備樹(shù)放于 u 盤(pán)中,插入到開(kāi)發(fā)板上,在超級(jí)終端輸入命令:
root@fl-imx6ull:~# cp /run/media/sda1/imx6ull-S-gpmi-1024x600c7.dtb /run/media/mmcblk1p1/imx6ull-S-gpmi-1024x600c7.dtb
root@fl-imx6ull:~# cp /run/media/sda1/zImage /run/media/mmcblk1p1/zImage
root@fl-imx6ull:~# sync
root@fl-imx6ull:~# reboot
重啟后,到 uboot 階段選擇對(duì)應(yīng) dtb 即可。
2、 Nand 單步更新內(nèi)核
更新 dtb 以及內(nèi)核,logo,可以使用 nandwrite 命令,該命令也已經(jīng)打包在文件系統(tǒng)中。使用時(shí),要將待燒寫(xiě)的 dtb、logo、 zImage 文件復(fù)制到文件系統(tǒng)的某個(gè)目錄下(本文示例為 /root),然后擦除掉對(duì)應(yīng)分區(qū)中的舊固件,再分別使用 nandwrite 命令將新的固件寫(xiě)到對(duì)應(yīng)的分區(qū)中。參考命令如下所示:
root@fl-imx6ull:~# flash_erase /dev/mtd4 0 0
Erasing 128 Kibyte @ 7e0000 -- 100 % complete
root@fl-imx6ull:~# nandwrite -p /dev/mtd4 /run/media/sda1/target/zImage
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x20000
Writing data to block 2 at offset 0x40000
更新內(nèi)核:
root@fl-imx6ull:~# flash_erase /dev/mtd4 0 0
Erasing 128 Kibyte @ 7e0000 -- 100 % complete
root@fl-imx6ull:~# nandwrite -p /dev/mtd4 /run/media/sda1/target/zImage
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x20000
Writing data to block 2 at offset 0x40000
更新 dtb:
root@fl-imx6ull:~# flash_erase /dev/mtd3 0 0
Erasing 128 Kibyte @ 2e0000 -- 100 % complete
root@fl-imx6ull:~# nandwrite -p /dev/mtd3 /run/media/sda1/target/imx6ull-S-gpmi-800x480c7.dtb
Writing data to block 0 at offset 0x0
更新 logo:
root@fl-imx6ull:~# flash_erase /dev/mtd1 0 0
Erasing 128 Kibyte @ 1e0000 -- 100 % complete
root@fl-imx6ull:~# nandwrite -p /dev/mtd1 /run/media/sda1/target/logo.bmp
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x20000
Writing data to block 2 at offset 0x40000