久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1592|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

迅為i.MX6ULL開發(fā)板啟動方式和鏡像文件格式

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:245207 發(fā)表于 2020-6-10 11:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
i.MX6ULL 啟動方式 啟動方式
I.MX6ULL 支持多種啟動方式,可以從 EMMC、SD 卡、NAND FLASHUSB、QSPI 等設(shè)備啟動。通過查看《IMX6ULL 參考手冊.pdf》手冊的第 8 System Boot,可我們可以了解到 i.MX6ULL 在上電以后,芯片 ROM里面固化的程序會根據(jù) BOOT_MODE[1:0]寄存器的值來選擇啟動方式。
BOOT_MODE[1:0]寄存器的值有兩種方式可以修改:一種是采用 eFuses(熔絲)的方式;另一種是是通過設(shè)置 BOOT_MODE[1:0]對應(yīng)的 GPIO 的狀態(tài)。我們在平常使用的時候基本都是采用設(shè)置 BOOT_MODE[1:0]對應(yīng)的 GPIO 狀態(tài)來選擇啟動方式的。
BOOT_MODE[1:0]對應(yīng)的 GPIO 引腳是 BOOT_MODE1 BOOT_MODE0,如下圖所示:
BOOT_MODE1 BOOT_MODE0 這兩個引腳在芯片內(nèi)部默認有 100K 的下拉,所以這兩個引腳在懸空狀態(tài)下默認是低電平(0)。我們把這兩個引腳引到了底板上,并連接到了撥碼開關(guān)上,撥碼開關(guān)對應(yīng)的另一端通過 10K 電阻接到了 3.3V 電源上,這樣我們可以通過撥碼開關(guān)來設(shè)置這兩個 IO 的狀態(tài)了(高電平或低電平)。如下圖所示:
從上面的截圖我們,可以看到如果我們要設(shè)置 BOOT1 BOOT0 為高電平我們需要將對應(yīng)的撥碼開關(guān)設(shè)置到“ON”位置,這樣就通過 10K 電阻上拉到 3.3V,芯片內(nèi)部有 100K 的下拉,所以此時這兩個 IO 的電平是:100/(10+100)*3.3V=3V,屬于高電平。
從參考手冊我們看到 BOOT_MODE[1:0]兩個 IO 可以設(shè)置四種狀態(tài),對應(yīng)著四種啟動方式,如下圖所示:
從上圖可以看到 BOOT_MODE[1:0]:設(shè)置為 00 的時候從 Fuses 啟動,設(shè)置為 01 的時候串行下載,設(shè)置為 10 的時候內(nèi)部 Boot 模式,設(shè)置為 11 作為保留使用。我們用到的是“串行下載”和“內(nèi)部 Boot”模式這兩種。
首先我們來看下“串行下載”,它是指可以通過 USB 接口(板子的 OTG1 接口)將代碼下載到板子上然后運行。通過此方式我們可以實現(xiàn)開發(fā)板鏡像的燒寫(我們將在后面章節(jié)介紹具體的燒寫方法)。
然后我們看下“內(nèi)部 Boot 模式”,它是指在此種模式下,芯片會執(zhí)行內(nèi)部 ROM 里面固化的 boot 程序。這段程序會進行硬件的初始化,然后從 Boot 設(shè)備(EMMC、SD 卡、NAND FLASH)中讀取出鏡像到內(nèi)存中。如果在“內(nèi)部 Boot 模式”運行過程中發(fā)生錯誤,則會進入“串行下載模式”。
BOOT_MODE 設(shè)置為“內(nèi)部 Boot 模式”后,i.MX6ULL 可以從 SPI,EIM,NOR,SD,MMC,QSPI 等設(shè)備啟動,同時也可以配置相應(yīng)的參數(shù)(例如 SD 總線寬度,速度等等)。啟動設(shè)備和對應(yīng)的參數(shù)我們可以使用 eFUSEs 的方式設(shè)置,也可以通過 GPIO 來配置(我們主要使用 GPIO 的方式)。下面我們來看一下如何通過 GPIO 設(shè)置啟動設(shè)備。
從參考手冊我們可以看到啟動設(shè)備主要通過三組 IO 來設(shè)置,他們分別是 BOOT_CFG1[7:0],
BOOT_CFG2[7:0]BOOT_CFG4[7:0]這三組 IO。如下圖所示:
從上圖我們可以看到這三組決定啟動設(shè)備的 IO 正好用到的 RGB 24 根數(shù)據(jù) IO,在 i.MX6ULL 芯片剛開始上電的時候這 24 IO 先作為“選擇啟動設(shè)備”的功能來使用,在 ROM 中的固化程序把啟動鏡像從啟動設(shè)備加載到內(nèi)存,并開始從啟動鏡像(Uboot)開始運行的時候,這 24 IO 就可以當做 RGB 來使用了。
現(xiàn)在我們來總結(jié)一下,i.MX6ULL 啟動流程:首先根據(jù) BOOT_MODE 的兩個 IOBOOT_MODE1,BOOT_MODE0)先確定啟動方式,如果是串行下載模式,就會進入 USB 啟動模式。如果是“內(nèi)部 Boot”啟動方式,然后就根據(jù) BOOT_CFG1,BOOT_CFG2BOOT_CFG4 這三組 IO 的配置來決定從哪種設(shè)備啟動(讀取啟動鏡像到內(nèi)存,并開始啟動)。
接下來我們看下 BOOT_CFG1,BOOT_CFG2BOOT_CFG4 這三組 IO 是怎么配置啟動方式的,在我們的底板原理圖上有如下圖表:
上圖中最左側(cè)一列是支持的啟動設(shè)備,后面的每一列分別對應(yīng) BOOT_CFG IO,我們可以看到?jīng)Q定啟動方式的是由 BOOT_CFG1 BOOT_CFG2 這兩組 IO 決定。打擊愛也許覺得這么多 IO 需要配置,操作起來太麻煩了,實際上這些 IO 中大部分都是默認下拉的,需要配置的只有 6 個,從我們的原理圖可以看到(因為我們用了一個 8 位的撥碼開關(guān),其中有兩位是 BOOT_MOD 的),如下圖所示:
從上面的原理圖我們可以看到 8 位的撥碼開關(guān)一端上拉到 3.3V,另一端分別接到了 BOOT_MODE1,BOOT_MODE0,BOOTCFG2[3],BOOTCFG1[3]BOOTCFG1[4]BOOTCFG1[5],BOOTCFG1[6],BOOTCFG1[7]。所以我們設(shè)置啟動方式,只需要修改這 8 位(有兩位是 BOOT_MODEIO 的狀態(tài),我們看下負責啟動方式的這 6 IO 的含義,如下表所示:
根據(jù)上面的表格,我們設(shè)置開發(fā)板分別從串行下載,EMMC,SD 卡,NAND FLASH 啟動的時候,可以按照下面的表格設(shè)置,如下表:
下面是 i.MX6ULL 終結(jié)者底板上的撥碼開關(guān)書屋圖片,如下圖所示:
上圖中的 8 位撥碼,撥到上面“ON”位置就是 1,撥到下面就是“0”,8 位撥碼按照表 2.1 中的設(shè)置就可以按照對應(yīng)的方式啟動
5.2 鏡像格式 鏡像格式
I.MX6ULL 的鏡像文件由下面幾部分組成:
1.Image vector table 簡稱 IVT。
2.Boot data,啟動數(shù)據(jù)。
3.Device configuration data,簡稱 DCD,主要是芯片的配置信息
4.用戶代碼生成的執(zhí)行文件。比如 uboot 等。
所以 i.MX6ULL 的鏡像組成為:IVT+Boot Data+DCD+用戶程序。
我們首先看下 IVT 部分:它里面包含了程序的入口點,一個指向設(shè)備配置數(shù)據(jù)(DCD)的指針,以及其他在啟動過征中程被 ROM 固化程序用到的指針。IVT 被存儲在啟動設(shè)備固定的位置(但是不同的啟動設(shè)備保存的位置可能會不一樣)。IVT 在鏡像文件的最前面,下圖是不同啟動設(shè)備,IVT 所在的位置偏移(相對于設(shè)備首地址):
這里我們以 EMMC 為例,從上表可以看出他的偏移是 1Kbyte1024 字節(jié)),假設(shè) EMMC 的每個扇區(qū)是 512字節(jié),那么我們的 IVT 要從第三個扇區(qū)開始保存。我們從《IMX6ULL 參考手冊.pdf》的 8.7.1.1 章節(jié)可以看到IVT 的數(shù)據(jù)格式如下圖所示:
其中的 Tag 是一個字節(jié)設(shè)置為 0xD1length 2 個字節(jié),按照大端模式存儲,表示 IVT 的長度,對后一個Version 是版本信息,占用一個字節(jié),通常為 0x40 0x41。由于《IMX6ULL 參考手冊.pdf》文檔只有 header的描述其它幾個字節(jié)的描述沒有涉及。我們可以打開編譯生成的Uboot鏡像uboot.imx查看下它里面的內(nèi)容。
接下來是 Boot data,它的數(shù)據(jù)格式如下所示:
從上圖可以看出 Boot data 一共是三個字段,每個字段 32 位。
然后是 DCDDCD 緊跟在 Boot Data 后面,IVT 里面也定義了 DCD 的位置。DCD 主要是初始化片內(nèi)的寄存器。
DCD 的數(shù)據(jù)格式如下圖所示:
第一個是 Header 包頭信息,他是一個 32 位的包頭,具體定義如下所示:
Tag 占一個字節(jié),被設(shè)置為 0xD2;Length 占兩個字節(jié),按照大端模式存儲,表示 DCD 的區(qū)域大。ò^的長度),Version 占一個字節(jié),設(shè)置為 0x40 0x41。
Header 后面的是 CMD 配置寄存器的字節(jié),每個 CMD 的結(jié)構(gòu)如下圖所示:
CMD 域的第一個是 Tag,占一個字節(jié),設(shè)置為 0xcc;然后是 Lehgth 占兩個字節(jié),按照大端模式存儲,表示該 CMD 的長度(包含 CMD 的包頭),Parameter 占一個字節(jié),這個字的每個為含義如下圖所示:
上圖中的 bytes 表示目標位置寬度,單位為 byte,可以設(shè)置為 1,2,4 字節(jié)。Flags 是命令控制標志位。
然后 CMD 域后面的是 Address Value/Mask。這兩個分別是要初始化的寄存器地址,設(shè)置的值。
緊接著 DCD 的就是我們的程序生成的.bin 文件。至此關(guān)于 i.MX6ULL 鏡像的組成格式我們就分析完成了。只是看上面的介紹大家也許感覺到會很枯燥,接下來我們結(jié)合 uboot.imx 鏡像,來一起看看這些數(shù)據(jù)的組織格式。我們使用 winhex 軟件(在光盤資料的“i.MX6UL 終結(jié)者光盤資料\02_開發(fā)所需軟件”目錄下面)打開光盤資料的“i.MX6UL 終結(jié)者光盤資料\06_開發(fā)板系統(tǒng)鏡像\uboot\emmc\u-boot.imx”文件,如下圖所示:
從上圖可以看出是按照小端方式顯示的,我們首先把前面 44 個字節(jié)按照 4 個字節(jié)一組的方式組合在一起就
是:0x402000D10x87800000,0x00000000,0x877FF42C,0x877FF4200x877FF400,0x00000000,0x00000000。
這 8 組數(shù)據(jù)是 IVT 的數(shù)據(jù),我們整理成下表:
然后是 Boot Data 域,我們把接下來的 12 個字節(jié)按照 4 個字節(jié)一組的方式組合在一起就是 0x877FF000,
0x0007E000,0x00000000。我們整理成下表所示:

從上面的表格我們可以看到 DCD 主要做了下面的配置:
1. 使能所有外設(shè)的時鐘。
2. 配置 DDR3 所用的所有 IO
3. 配置 MMDC 控制器,初始化 DDR3
關(guān)于 i.MX6ULL 的啟動流程和啟動鏡像文件格式我們就介紹到這里。通過本章的講解我們可以掌握 i.MX6ULL的啟動設(shè)置了。我們編譯出的二進制.bin 文件,不能直接燒寫到 EMMC 中,需要在它前面加上 IVTBoot DataDCD 這三部分的數(shù)據(jù)域。我們之中燒寫到 EMMC 的鏡像文件時:IVT+Boot Data+CDC+用戶的.bin 文件。
更多內(nèi)容關(guān)注:迅為電子


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99精品在线免费观看 | 欧美精品一区二区三区四区 | 99久久精品国产一区二区三区 | 超碰伊人久久 | 在线超碰 | 粉嫩一区二区三区国产精品 | 性高湖久久久久久久久3小时 | 欧美综合一区二区三区 | 免费观看黄a一级视频 | 欧美a在线 | 国产日产精品一区二区三区四区 | 日本高清中文字幕 | 午夜精品福利视频 | 农夫在线精品视频免费观看 | 91视频国产一区 | 亚洲一区国产 | 国产精品18久久久久久白浆动漫 | av影片在线 | 国产福利资源 | 蜜桃黄网 | 日韩av在线一区 | 亚洲精品一 | 成人做爰www免费看视频网站 | 国产精品中文字幕在线观看 | 久久影音先锋 | 精品久久国产老人久久综合 | 神马久久香蕉 | 欧美另类视频 | 蜜桃av鲁一鲁一鲁一鲁 | 成人黄色电影在线观看 | 在线免费观看视频黄 | 国产精品日韩欧美 | 欧美老少妇一级特黄一片 | 欧美精品一区二区三区在线播放 | 亚洲成人av一区二区 | 亚洲精品乱码久久久久久按摩观 | 青青草久久| 亚洲人成人一区二区在线观看 | 一二区成人影院电影网 | 国产91一区二区三区 | 欧美精品一区二区免费 |