電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 1577|回復(fù): 2
收起左側(cè)

Linux系統(tǒng)啟動(dòng)卡制作及系統(tǒng)固化

[復(fù)制鏈接]

678

主題

902

帖子

8293

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
8293
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-9-17 16:07:34 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
前言本指導(dǎo)文檔適用開(kāi)發(fā)環(huán)境:
Windows開(kāi)發(fā)環(huán)境:Windows 7 64bit、Windows 10 64bit
Linux開(kāi)發(fā)環(huán)境:Ubuntu 14.04.3 64bit
虛擬機(jī):VMware14.1.1
Kernel:Linux-4.9.65、Linux-RT-4.9.65
Linux Processor SDK:ti-processor-sdk-linux-rt-am335x-evm-04.03.00.05
評(píng)估板支持通過(guò)Linux系統(tǒng)啟動(dòng)卡、eMMC、NAND FLASH三種方式啟動(dòng)。本文檔主要演示Linux系統(tǒng)啟動(dòng)卡制作,以及將Linux系統(tǒng)固化到eMMC的方法。將Linux系統(tǒng)固化到NAND FLASH的方法,另見(jiàn)文檔。


1.Linux系統(tǒng)啟動(dòng)卡制卡工具包說(shuō)明1.1制卡工具包版本說(shuō)明
產(chǎn)品資料“4-軟件資料\Linux\Makesdboot\”目錄下的mksdboot_AA_BB_CC_DD.tar.gz壓縮文件是Linux系統(tǒng)啟動(dòng)卡制卡工具包,主要包含U-Boot、Linux內(nèi)核、設(shè)備樹(shù)鏡像文件,以及文件系統(tǒng)壓縮包等內(nèi)容。AA_BB_CC_DD為制卡工具包的版本號(hào),具體版本說(shuō)明如下:
  • AA: U-Boot發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料\Linux\U-Boot\”目錄下的特性支持說(shuō)明文件。
  • BB:Linux內(nèi)核發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料\Linux\Kernel\”目錄下的特性支持說(shuō)明文件。
  • CC:文件系統(tǒng)發(fā)布版本。詳細(xì)信息請(qǐng)查看“4-軟件資料\Linux\Filesystem\”目錄下的特性支持說(shuō)明文件。
  • DD:產(chǎn)品測(cè)試程序發(fā)布版本。在文件系統(tǒng)下執(zhí)行“cat /opt/product-test/version.txt”命令可查看具體版本信息。
1.2制卡工具包目錄說(shuō)明
打開(kāi)Ubuntu,將制卡工具包復(fù)制到“/home/tronlong/AM335x”工作目錄下,進(jìn)入制卡工具包所在路徑將其解壓到當(dāng)前目錄。工具包名稱需根據(jù)實(shí)際情況修改。
Host# cd /home/tronlong/AM335x/
Host# tar -xvf mksdboot_21_21_21_14.tar.gz -C .

圖 1

執(zhí)行以下命令,查看解壓后的制卡工具包具體內(nèi)容。
Host# tree -L 5 mksdboot_21_21_21_14

圖 2

boot目錄
  • MLO文件:U-Boot一級(jí)啟動(dòng)鏡像。
  • u-boot.img文件:U-Boot二級(jí)啟動(dòng)鏡像。
  • README.md文件:制卡工具包、U-Boot、Linux內(nèi)核、文件系統(tǒng)等版本信息說(shuō)明文件。logo.bmp文件:LOGO圖片。
filesystem目錄
  • boot目錄:主要包含Linux內(nèi)核鏡像zImage、Linux-RT內(nèi)核鏡像zImage-rt、基礎(chǔ)設(shè)備樹(shù)dtb文件、Linux-RT內(nèi)核模塊壓縮包等。
  • firmware目錄:主要包含動(dòng)態(tài)設(shè)備樹(shù)dtbo文件。
  • modules目錄:主要存放Linux內(nèi)核模塊壓縮包。
  • rootfs目錄:主要存放文件系統(tǒng)壓縮包。
  • tests目錄:主要存放產(chǎn)品測(cè)試文件壓縮包。
  • tools目錄:主要存放Shell腳本壓縮包。
mksdboot.sh文件:Linux系統(tǒng)啟動(dòng)卡制作腳本文件。


1.3Linux-RT內(nèi)核版本Linux系統(tǒng)啟動(dòng)卡制作說(shuō)明
​​​​​​​制卡工具包包含Linux內(nèi)核鏡像、Linux內(nèi)核模塊,以及Linux-RT內(nèi)核鏡像、Linux-RT內(nèi)核模塊。默認(rèn)情況下,制作的是Linux內(nèi)核版本的Linux系統(tǒng)啟動(dòng)卡。如需制作Linux-RT內(nèi)核版本的Linux系統(tǒng)啟動(dòng)卡,請(qǐng)按照本小節(jié)方法替換內(nèi)核鏡像和內(nèi)核模塊,否則請(qǐng)?zhí)^(guò)此小節(jié)內(nèi)容。
進(jìn)入制卡工具包“filesystem/boot/”目錄,備份Linux內(nèi)核鏡像zImage,并使用Linux-RT內(nèi)核鏡像zImage-rt替換原來(lái)的zImage文件。
Host# cd filesystem/boot/
Host# cp zImage zImage-linux
Host# mv zImage-rt zImage
​

圖 3

將制卡工具包“filesystem/modules/”文件夾備份,并使用“filesystem/boot/modules-rt/”文件夾將其替換,命令如下。
Host# mv ../modules ../modules-linux
Host# mv modules-rt ../modules

圖 4

替換完成后,即可繼續(xù)參照后續(xù)章節(jié)方法制作Linux-RT內(nèi)核版本的Linux系統(tǒng)啟動(dòng)卡。
​​​​​​​
2.Linux系統(tǒng)啟動(dòng)卡制作評(píng)估板出廠時(shí),默認(rèn)提供一張配套的Micro SD卡,此卡為可正常使用的Linux系統(tǒng)啟動(dòng)卡。本章節(jié)主要說(shuō)明Linux系統(tǒng)啟動(dòng)卡的制作方法,可使用配套的Linux系統(tǒng)啟動(dòng)卡,或者使用新的空白Micro SD卡。如下步驟使用配套的Linux系統(tǒng)啟動(dòng)卡進(jìn)行操作,如使用空白Micro SD卡,步驟類似。
2.1 Micro SD卡掛載
將Micro SD卡通過(guò)讀卡器連接到PC機(jī),Ubuntu系統(tǒng)識(shí)別后,一般會(huì)自動(dòng)掛載Micro SD卡分區(qū),如下圖所示。

圖 5

如果Ubuntu系統(tǒng)沒(méi)有自動(dòng)識(shí)別,請(qǐng)右擊右下角的USB大容量存儲(chǔ)設(shè)備圖標(biāo),再點(diǎn)擊“Connect (Disconnect from Host)”進(jìn)行識(shí)別。

圖 6

如果沒(méi)有以上圖標(biāo)或者連接不成功,請(qǐng)嘗試如下方法:
  • 請(qǐng)將Micro SD卡通過(guò)讀卡器插到PC機(jī)USB 2.0接口,而不是USB 3.0接口,部分版本VMware可能不兼容USB 3.0。
  • 請(qǐng)將Micro SD卡插在PC機(jī)上,然后重啟Ubuntu,在Ubuntu重啟過(guò)程中不要取出。Ubuntu系統(tǒng)重啟后,存儲(chǔ)設(shè)備圖標(biāo)會(huì)重新出現(xiàn)。​​​​​​​

2.2Micro SD卡設(shè)備節(jié)點(diǎn)名確認(rèn)
執(zhí)行如下命令,確認(rèn)Micro SD卡在Ubuntu系統(tǒng)的設(shè)備節(jié)點(diǎn)名。
Host#sudo fdisk -l

圖 7

可以看到Micro SD卡設(shè)備節(jié)點(diǎn)是“/dev/sdb”,并且有三個(gè)分區(qū),分別為sdb1、sdb2和sdb3分區(qū)。設(shè)備節(jié)點(diǎn)名字是可變的,一般插拔多次或者使用不同的卡插拔后,可能會(huì)顯示sdc或者sdd。

2.3PV工具安裝
PV(Pipe Viewer)是一種基于終端的工具,用于通過(guò)管道監(jiān)測(cè)數(shù)據(jù)的進(jìn)度。
為了更直觀地顯示系統(tǒng)啟動(dòng)卡的制作進(jìn)度,Linux系統(tǒng)啟動(dòng)卡制作過(guò)程中會(huì)使用到PV工具。請(qǐng)執(zhí)行如下命令通過(guò)網(wǎng)絡(luò)安裝PV工具,如未安裝PV工具將會(huì)導(dǎo)致系統(tǒng)啟動(dòng)卡制作失敗。
Host#sudo apt-get install pv

圖 8

2.4Linux系統(tǒng)啟動(dòng)卡制作
如下為L(zhǎng)inux系統(tǒng)啟動(dòng)卡制作命令。命令中“/dev/sdb”為Micro SD卡設(shè)備節(jié)點(diǎn),如錯(cuò)誤輸入其他存儲(chǔ)介質(zhì)設(shè)備節(jié)點(diǎn),將會(huì)造成存儲(chǔ)介質(zhì)數(shù)據(jù)損壞,請(qǐng)確認(rèn)命令中設(shè)備節(jié)點(diǎn)無(wú)誤后,再執(zhí)行命令。
Host#sudo ./mksdboot.sh -d /dev/sdb

圖 9

根據(jù)提示按回車鍵,進(jìn)行Linux系統(tǒng)啟動(dòng)卡制作。

圖 10

耗時(shí)約5~10min,Linux系統(tǒng)啟動(dòng)卡制作完成。同時(shí),系統(tǒng)會(huì)打印提示信息,如下圖所示。制作時(shí)間與Linux系統(tǒng)大小、Micro SD卡容量和接口性能有關(guān)。

圖 11

執(zhí)行如下命令,可看到新制作的Linux系統(tǒng)啟動(dòng)卡共有BOOT、rootfs和rootfs-backup三個(gè)分區(qū)。其中BOOT分區(qū)為FAT32格式,rootfs分區(qū)和rootfs-backup分區(qū)為EXT4格式。FAT32格式分區(qū)在Windows系統(tǒng)下可見(jiàn),EXT4格式分區(qū)在Windows系統(tǒng)下不可見(jiàn),三個(gè)分區(qū)在Linux系統(tǒng)下均可見(jiàn)。

圖 12

BOOT分區(qū):主要存放U-Boot鏡像MLO、u-boot.img、LOGO等文件,從制卡工具包boot目錄復(fù)制而來(lái)。使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)時(shí),將使用此目錄的MLO、u-boot.img文件啟動(dòng)U-Boot。
rootfs分區(qū):存放文件系統(tǒng)。rootfs分區(qū)boot目錄主要存放內(nèi)核鏡像、基礎(chǔ)設(shè)備樹(shù)文件等文件,從制卡工具包“filesystem/boot/”目錄復(fù)制而來(lái)。使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)時(shí),將使用此目錄的zImage、tl335x-evm.dtb文件啟動(dòng)內(nèi)核。
rootfs-backup分區(qū):存放文件系統(tǒng)備份文件。系統(tǒng)固化時(shí),將其內(nèi)容固化到eMMC或NAND FLASH。
點(diǎn)擊右下角的大容量存儲(chǔ)設(shè)備圖標(biāo),選擇“Disconnect(Connect to host)”選項(xiàng)(如下圖),斷開(kāi)Micro SD卡和Ubuntu的連接,完成Linux系統(tǒng)啟動(dòng)卡制作。

圖 13

2.5從Linux系統(tǒng)啟動(dòng)卡啟動(dòng)系統(tǒng)
評(píng)估板斷電,將Linux系統(tǒng)啟動(dòng)卡插入評(píng)估板Micro SD卡槽,根據(jù)評(píng)估底板絲印將撥碼開(kāi)關(guān)撥為00010(1~5),此檔位為SD卡啟動(dòng)模式。使用Micro USB線連接評(píng)估板的USB TO UART3調(diào)試串口到PC機(jī),然后將評(píng)估板上電啟動(dòng),串口調(diào)試終端會(huì)打印以下類似啟動(dòng)信息。

圖 14


圖 15

系統(tǒng)啟動(dòng)后會(huì)自動(dòng)登陸root用戶,說(shuō)明使用Linux系統(tǒng)啟動(dòng)卡啟動(dòng)評(píng)估板成功。

圖 16

可執(zhí)行如下命令查看當(dāng)前Linux內(nèi)核版本信息。
Host#cat /proc/version

圖 17 Linux內(nèi)核


圖 18 Linux-RT內(nèi)核

3.固化Linux系統(tǒng)(SPI FLASH+eMMC)本小節(jié)介紹Linux系統(tǒng)固化過(guò)程,固化過(guò)程包含固化U-Boot到SPI FLASH和固化文件系統(tǒng)到eMMC。固化成功后,評(píng)估板從SPI FLASH啟動(dòng)U-Boot,然后從eMMC加載內(nèi)核、設(shè)備樹(shù)和文件系統(tǒng)。

3.1掛載信息和SPI FLASH分區(qū)說(shuō)明
進(jìn)入評(píng)估板系統(tǒng)后執(zhí)行如下命令,分別查看系統(tǒng)啟動(dòng)卡和eMMC掛載詳細(xì)信息,以及SPI FLASH分區(qū)信息。
Target#df -h
Target#cat /proc/mtd

圖 19

表 1
Linux系統(tǒng)啟動(dòng)卡
BOOT分區(qū)
設(shè)備節(jié)點(diǎn):/dev/mmcblk0p1
掛載路徑:/run/media/mmcblk0p1
rootfs-backup分區(qū)
設(shè)備節(jié)點(diǎn):/dev/mmcblk0p3
掛載路徑:/run/media/mmcblk0p3
eMMC設(shè)備
BOOT分區(qū)
設(shè)備節(jié)點(diǎn):/dev/mmcblk1p1
掛載路徑:/run/media/mmcblk1p1
rootfs分區(qū)
設(shè)備節(jié)點(diǎn):/dev/mmcblk1p2
掛載路徑:/run/media/mmcblk1p2
data分區(qū)(用戶分區(qū))
設(shè)備節(jié)點(diǎn):/dev/mmcblk1p3
掛載路徑:/run/media/mmcblk1p3
SPI FLASH
MTD0
spi.spl:存放U-Boot第一階段啟動(dòng)文件MLO
MTD1
spi.u-boot:存放U-Boot第二階段啟動(dòng)文件u-boot.img
MTD2
spi.env:存放環(huán)境變量
MTD3
spi.devicetree:存放基礎(chǔ)設(shè)備樹(shù)文件(暫未使用)
MTD4
spi.kernel:存放內(nèi)核鏡像(暫未使用)


3.2固化Linux系統(tǒng)
Linux系統(tǒng)啟動(dòng)卡制作時(shí),已將系統(tǒng)固化的腳本文件mkemmcboot.sh復(fù)制到了Linux系統(tǒng)啟動(dòng)卡文件系統(tǒng)的“/opt/tools/make-system”目錄下。

圖 20

執(zhí)行如下命令進(jìn)行一鍵固化。
Target#/opt/tools/make-system/mkemmcboot.sh

圖 21

腳本會(huì)進(jìn)行如下操作:
  • 擦除SPI FLASH。
  • 將eMMC格式化為BOOT、rootfs和data分區(qū)。
  • 將Linux系統(tǒng)啟動(dòng)卡BOOT分區(qū)中的U-Boot固化到SPI FLASH對(duì)應(yīng)分區(qū)。
  • 將Linux系統(tǒng)啟動(dòng)卡BOOT分區(qū)中的LOGO文件固化到eMMC的BOOT分區(qū)。
  • 將Linux系統(tǒng)啟動(dòng)卡rootfs-backup分區(qū)中的文件系統(tǒng)固化到eMMC的rootfs分區(qū),[url=]包括內(nèi)核鏡像和基礎(chǔ)設(shè)備樹(shù)文件。[/url]
用時(shí)約3 min, Linux系統(tǒng)固化成功,同時(shí)串口調(diào)試終端打印提示信息。
備注:腳本會(huì)將內(nèi)核鏡像、基礎(chǔ)設(shè)備樹(shù)文件固化到SPI FLASH中,實(shí)際啟動(dòng)并不會(huì)從SPI FLASH中加載內(nèi)核鏡像和基礎(chǔ)設(shè)備樹(shù)文件。

3.3從SPI+eMMC啟動(dòng)系統(tǒng)
評(píng)估板斷電,將Linux系統(tǒng)啟動(dòng)卡從評(píng)估板Micro SD卡槽中取出,根據(jù)評(píng)估底板絲印將撥碼開(kāi)關(guān)撥為10010(1~5),此檔位為SPI FLASH啟動(dòng)模式。評(píng)估板上電,串口調(diào)試終端將會(huì)打印如下類似啟動(dòng)信息。

圖 22


圖 23


3.4動(dòng)態(tài)設(shè)備樹(shù)dtbo文件加載方法
評(píng)估板設(shè)備樹(shù)文件包含基礎(chǔ)設(shè)備樹(shù)dtb文件和動(dòng)態(tài)設(shè)備樹(shù)dtbo文件,Linux系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)加載dtb文件,dtbo文件需要在文件系統(tǒng)下進(jìn)行加載。本章節(jié)以tl335x-evm-lcd-overlay.dtbo動(dòng)態(tài)設(shè)備樹(shù)為例,演示動(dòng)態(tài)設(shè)備樹(shù)文件的方法。
Linux系統(tǒng)啟動(dòng)卡制作時(shí),已將動(dòng)態(tài)設(shè)備樹(shù)dtbo文件拷貝到文件系統(tǒng)的“/lib/firmware/”目錄下。將需要加載其他dtbo文件,請(qǐng)將其拷貝到文件系統(tǒng)“/lib/firmware/”目錄下。

圖 24

文件系統(tǒng)下依次執(zhí)行如下命令,加載tl335x-evm-lcd-overlay.dtbo動(dòng)態(tài)設(shè)備樹(shù)文件。
Target#mkdir /configfs //創(chuàng)建configfs文件夾,如已存在,則無(wú)需重復(fù)創(chuàng)建
Target#mount -t configfs configfs /configfs
Target#mkdir /configfs/device-tree/overlays/full //創(chuàng)建full目錄,根據(jù)實(shí)際需要修改
Target#echo -n "tl335x-evm-lcd-overlay.dtbo" > /configfs/device-tree/overlays/full/path

圖 25

正常加載動(dòng)態(tài)設(shè)備樹(shù)文件后,系統(tǒng)會(huì)打印驅(qū)動(dòng)加載的相關(guān)信息,部分驅(qū)動(dòng)也有可能不打印任何信息?蓤(zhí)行如下命令查看動(dòng)態(tài)設(shè)備樹(shù)文件的加載狀態(tài)。
Target#cat /configfs/device-tree/overlays/full/status
Target#cat /configfs/device-tree/overlays/full/path

圖 26

嵌入式DSP、ARM、FPGA多核技術(shù)開(kāi)發(fā),學(xué)習(xí)資料下載:http://site.tronlong.com/pfdownload

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表