最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

萬事開頭難 - 介紹IMX6ULL啟動方式

2020-09-10 15:49 作者:韋東山  | 我要投稿

不同開發(fā)板,啟動方式不一樣,今天我們來介紹imx6ull開發(fā)板的啟動方式,這非常重要。若不了解清楚啟動方式,后面的所有開發(fā)工作便無從談起。

本文摘自100ask_imx6ull 開發(fā)板 配套學(xué)習(xí)手冊-《嵌入式Linux應(yīng)用開發(fā)完全手冊_韋東山全系列視頻文檔全集V2.5》.pdf


1.1 IMX6ULL 啟動方式

參考資料:

開發(fā)板資料網(wǎng)盤?

路徑:

06_Datasheet(數(shù)據(jù)手冊)

-> Core_board->CPU->IMX6ULLRM.pdf”

中《Chapter 8: System Boot》。


網(wǎng)盤地址:

100ASK_IMX6ULL


鏈接:

https://eyun.baidu.com/s/3smDzFAH密碼:LDCn


1.1.1芯片手冊講解

IMX6ULL芯片內(nèi)部有一個boot ROM,上電后boot ROM上的程序就會運行。它會根據(jù)BOOT_MODE[1:0]的值,以及eFUSE或GPIO的值決定后續(xù)的啟動流程。

注:eFUSE即熔絲,只能燒寫一次,一般正式發(fā)布產(chǎn)品時燒寫最終值;平時調(diào)試時通過GPIO來設(shè)置開發(fā)板的啟動方式。

boot ROM上的程序功能強(qiáng)大,可以從USB口或串口下載程序并把它燒寫到Flash等設(shè)備上,也可以從SD卡或EMMC、Flash等設(shè)備上讀出程序、運行程序。

問題來了:

① boot ROM是從USB口下載、運行程序,還是從SD卡等設(shè)備上讀出、運行程序,這由誰決定?

由BOOT_MODE[1:0]的值來決定啟動方式,它們來自于2個引腳BOOT_MODE1、BOOT_MODE0。這2個引腳在上電時是輸入引腳,芯片啟動后采集這2個引腳的值,存入BOOT_MODE寄存器。以后這2個引腳就可以用于其他功能,不會影響到BOOT_MODE寄存器。

BOOT_MODE[1:0]的值確定了4種啟動模式,如下圖:

原理圖

00模式,

在我們的開發(fā)過程中很少用到,簡單介紹一下:在這種模式下,GPIO的值被忽略。Boot ROM會根據(jù)eFUSE的值來選擇啟動設(shè)備、設(shè)置啟動設(shè)備。但是,對于剛出廠的芯片eFUSE值可能是錯亂的、不適合你的設(shè)備的,怎么辦?eFUSE中有一個值BT_FUSE_SEL,它的出廠值是0,表示eFUSE未被燒寫。

boot ROM程序發(fā)現(xiàn)BT_FUSE_SEL為0時,它會通過USB或串口來下載程序;發(fā)現(xiàn)BT_FUSE_SEL為1時,才會根據(jù)eFUSE的值選擇啟動設(shè)備,讀出、運行該設(shè)備上的程序。


01模式,

boot ROM程序通過USB或串口下載、運行程序,這個模式可以用來燒寫EMMC等設(shè)備。我們的開發(fā)板出廠時,就是通過這個模式下載、燒寫出廠程序的。


10模式,

稱之為內(nèi)部模式,簡單地說就是從SD卡、EMMC等設(shè)備啟動程序。這就引入下面第2個問題。


② 如何選擇啟動設(shè)備?

00模式下是通過eFUSE的值選擇啟動設(shè)備,我們不關(guān)心。

10模式下既可以通過eFUSE的值也可以通過GPIO的值來選擇啟動設(shè)備,但是到底通過誰來決定?eFUSE中有一個值BT_FUSE_SEL,對,又是它。它的初始值為0,表示eFUSE未被燒寫。

在10模式下,當(dāng)BT_FUSE_SEL為0時就會通過GPIO來選擇啟動設(shè)備;當(dāng)BT_FUSE_SEL為1時就會通過eFUSE來選擇啟動設(shè)備。

在開發(fā)階段,我們使用GPIO來選擇設(shè)備,這就引入下面第3個問題。


③ 如何通過eFUSE或GPIO選擇、設(shè)置啟動設(shè)備?

通過eFUSE或GPIO不僅能選擇啟動設(shè)備,還可以設(shè)置啟動設(shè)備。為什么還需要設(shè)置?比如Nand Flash參數(shù)各有不同,有些的頁大小是2048,有些是4096。這些參數(shù)不同,boot ROM程序讀Nand Flash的方法就不同,我們必須把這些參數(shù)告訴boot ROM:通過eFUSE或GPIO來標(biāo)明這些參數(shù)。

首先看看要設(shè)置哪些eFUSE或GPIO來選擇不同的啟動設(shè)備。

BOOT_CFG1設(shè)置

從上圖可知,既可以使用eFUSE也可以使用GPIO來選擇啟動設(shè)備,換句話說GPIO可以覆蓋eFUSE的值。

哪些GPIO覆蓋哪些eFUSE?

這可以查看IMX6ULL芯片手冊《Chapter 8: System Boot》里的《GPIO boot overrides》,我們把它摘出來放在1.1.3小節(jié)里。

選擇啟動設(shè)備后,還需要標(biāo)明一些參數(shù)。比如選擇EMMC啟動時,EMMC接在哪一個接口,eSDHC1還是eSDHC2?它的速度如何?比如選擇TF卡啟動時,TF卡接在哪一個接口,eSDHC1還是eSDHC2?它的速度如何?

假設(shè)使用EMMC啟動,或是TF卡啟動,怎么設(shè)置eFUSE或GPIO?這些信息可以查詢IMX6ULL芯片手冊《Chapter 5: ?Fusemap》,摘錄如下。

Fusemap

當(dāng)BOOT_MODE設(shè)置為0b00時,通過eFUSE選擇啟動設(shè)備,通過eFUSE獲得設(shè)備的參數(shù)。

當(dāng)BOOT_MODE設(shè)置為0b10時,通過eFUSE或GPIO來選擇啟動設(shè)備,獲得設(shè)備的參數(shù);使用eFUSE還是GPIO由eFUSE中的BT_FUSE_SEL決定,它默認(rèn)是0,表示使用GPIO。

以BOOT_MODE為0b10為例,解析一下上圖。要設(shè)置為SD卡、TF卡啟動,有2個設(shè)置方法:

a. 設(shè)置eFUSE的BOOT_CFG1[7:5]為0b010,

或 b. 查看《3.1.3 GPIO boot overrides》確定BOOT_CFG1[7:5]對應(yīng)的GPIO為LCD1_DATA07~05,把這3個引腳設(shè)置為0b010。

根據(jù)SD卡、TF卡的性能,可以設(shè)置eFUSE或GPIO來表示它能否提供更高的速度:

a. 設(shè)置eFUSE的BOOT_CFG1[4:0],

或 b. 查看《3.1.3 GPIO boot overrides》確定BOOT_CFG1[4:0]對應(yīng)的GPIO為LCD1_DATA04~00,設(shè)置這些引腳。

IMX6ULL有兩個SD卡、TF卡接口,使用哪一個接口?請看下表:

a. 設(shè)置eFUSE的BOOT_CFG2[4:3]可以確定使用eSDHC1或eSDHC2,

或 b. 查看《3.1.3 GPIO boot overrides》確定BOOT_CFG2[4:3]對應(yīng)的GPIO為LCD1_DATA12~11,設(shè)置這些引腳

BOOT_CFG

通過eFUSE或GPIO,還可以標(biāo)明啟動設(shè)備的更多參數(shù),具體細(xì)節(jié)可以參考芯片手冊《Chapter 5: ?Fusemap》,作為硬件開發(fā)人員需要去細(xì)細(xì)研究;作為軟件開發(fā)人員,實際上只需要看開發(fā)板手冊知道怎么設(shè)置啟動開關(guān)即可。



1.1.2 IMX6ULL啟動方式選擇

100ASK_IMX6ULL開發(fā)板上的紅色撥碼開關(guān)用來設(shè)置啟動方式、選擇啟動設(shè)備,支持這3種方式:EMMC啟動、SD卡啟動、USB燒寫。

板子背后畫有一個表格,表示這3種方式如何設(shè)置。

表格如下:

表格

拔碼開關(guān)中的SW3、SW4用來設(shè)置BOOT_MODE,ON表示0,OFF表示1。

所以當(dāng)SW3、SW4設(shè)置為ON、OFF時,BOOT_MODE為0b10,將會使用SD卡、TF卡、EMMC等設(shè)備啟動。

剛出廠的開發(fā)板中BT_FUSE_SEL默認(rèn)為0,表示使用GPIO來設(shè)置參數(shù)。即使用LCD1_DATA07~05來選擇啟動設(shè)備。

100ASK_IMX6ULL開發(fā)板只支持SD/TF卡、EMMC啟動,LCD1_DATA07~05為0b010時選擇SD/TF卡啟動,LCD1_DATA07~05為0b011時選擇EMMC啟動。

這兩種啟動設(shè)備對應(yīng)的LCD1_DATA07~06的值相同,都是0b01,這在核心板上已經(jīng)通過電阻設(shè)置好,我們只需要在撥碼開關(guān)上設(shè)置SW1(對應(yīng)LCD1_DATA05)就可以。

IMX6ULL上有2個EMMC Flash接口,也復(fù)用為2個SD/TF卡接口,通過LCD1_DATA12~11來選擇接口。

0b00對應(yīng)eSDHC1接口,0b01對應(yīng)eSDHC2接口。LCD1_DATA12的值在核心板上已經(jīng)通過電阻設(shè)置好。

LCD1_DATA11的值通過撥碼開關(guān)SW2來設(shè)置:ON表示0,對應(yīng)eSDHC1接口,100ASK_IMX6ULL的TF卡接口使用了eSDHC1接口;OFF表示1,對應(yīng)eSDHC2接口,100ASK_IMX6ULL的EMMC接口使用了eSDHC2接口。

這3種啟動方式的設(shè)置示意圖如下:

要注意的是,設(shè)置為USB啟動時,不能插上SD卡、TF卡。剛出廠的板子在EMMC上燒寫了系統(tǒng),你可以設(shè)置為EMMC啟動方式。



1.1.3 GPIO boot overrides

IMX6ULL中既可以通過eFUSE也可以通過GPIO來選擇、設(shè)置啟動設(shè)備,在手冊里大部分場合只列出了eFUSE,對應(yīng)的GPIO需要查表:IMX6ULL芯片手冊《Chapter 8: System Boot》里的《GPIO boot overrides》。

我們把它摘錄出來。

總結(jié)

整篇讀下來,概念有點多,你可能會感覺有點抽象,其實現(xiàn)在不理解啟動方式原理沒關(guān)系,現(xiàn)在只要記住《3種啟動方式的設(shè)置示意圖》即可,清楚怎么撥碼對應(yīng)什么啟動方式,原理留到后期再研究也行。

精品推薦

文中提到的100ask_imx6ull,是用來學(xué)習(xí)嵌入式Linux的不錯選擇,0利潤,外設(shè)豐富,一千多頁文檔,一百多講視頻,開源共享,如有興趣,可以手淘掃碼了解開發(fā)板的更多參數(shù)。


萬事開頭難 - 介紹IMX6ULL啟動方式的評論 (共 條)

分享到微博請遵守國家法律
石门县| 乌兰县| 沽源县| 德化县| 修武县| 钟山县| 阿克陶县| 故城县| 尚志市| 福贡县| 马龙县| 周至县| 黑水县| 社旗县| 永福县| 色达县| 封开县| 石台县| 邻水| 天全县| 沁源县| 阿坝| 遵化市| 牟定县| 河源市| 连云港市| 宜昌市| 年辖:市辖区| 安平县| 清丰县| 康保县| 西乌珠穆沁旗| 永清县| 曲靖市| 且末县| 定陶县| 通州市| 涟水县| 横山县| 宝山区| 贵溪市|