OMPL138及U Boot的啟動過程分析(一)

2021-07-08 09:51:17 字數 4452 閱讀 9011

一直閱讀**以及實驗了一段時間

,這次就趁著這個時間將過往的一些東西整理一下。

omapl138是

ti的一款

dsp+arm

的雙核工業處理器。

ti的晶元上都有

rom(

read onlymemroy)記憶體,這塊rom記憶體只能在晶元出廠時以掩膜的方式固化,一般使用者是沒有辦法進行更改的。

rom裡面的**,也分許多版本,我所使用這款的

rom的

romid

是d800k008。

先說一下

omapl138

的啟動過程吧。 1、

omapl138

啟動流程:

上電後,

dsp核先啟動,

arm在這個時候是禁用狀態的。

dsp的

rom裡面的**將會:

- 讀某些暫存器,確認

arm核存在(不然將只有

dsp做引導)

- 程式

pdsp0

準備arm

復位向量

- 將arm復位,並讓

arm從它自己的

rom執行(這就是與

omapl137

主要的不同,

arm有它自己的

rom,並且將會主導之後的引導程序)

- dsp進入空閒迴圈狀態。 2、

arm開始從

rom執行後,它將會:

-  把

dsp置為禁用狀態

-  初始化硬體,例如,

psc,

pll,外部儲存裝置等

- 讀bootcfg

暫存器決定引導模式,它將會從適當的引導**去載入和執行

arm ubl

,例如spi flash

,nand

,nor等

3、arm ubl

開始執行。它的行為是軟體定義的。例如:

- ti提供的

arm ubl

將會載入並執行

uboot

,也將進一步執行

linux

。linux

應用能通過

dsplink

去載入和執行

dsp。這個模式與達文西模式一樣

- 工業客戶能在某些引導**選擇載入並執行

dsp ais

映象。同時,

arm ubl

也能開始引導

uboot

和linux

。以這種方式的話,

dsp能在

linux

引導結束前處理資料。

omapl138的

rombootloader支援多種啟動模式,而啟動模式是有硬體上的配置決定的,由晶元管腳bootmode[7:0]

通過外部上、下拉電阻設定。

arm啟動前的這一部分是看不到,只有到了

arm開始讀取啟動模式的時候才是可見的(實際上是我找不到相關的細節可以觀察的了)。

這裡所使用的啟動方式是

nor flash

的模式,而

nor flash

的boot

模式包括三種:

1. legacynor boot(傳統的nor引導)

2. directnor boot(直接引導)

3. aisnor boot(ais檔案的引導)

根據官方的文件

using thetms320c6748/c6746/c6742 bootloader

所說的,所有的引導模式,除了

hpi和

2/3的

nor boot

方式之外,其它所有的引導模式都使用

ais作為引導目標。這裡這個

ais就很關鍵了,我在工作中所使用的這個模式就是這樣第三種,使用

ais nor boot

的方式,

ais檔案後面說,先說一下

nor啟動方式:

nor flash的啟動方式需要

nor flash

已經連線在了外部儲存器介面(

emifa

)上的ema_cs[2]

介面上,對於這種啟動模式,

bootloader

會將emifa

配置成8-bit

的訪問模式去從

nor flash

的上讀取第乙個字。這第乙個字表明

nor flash

應該被8

位或16

位的訪問方式訪問,以及使用什麼樣的引導方法。

下面解釋這個配置字:

reserved為保留位,這裡不做解釋;

copy:從

nor flash

的基位址拷貝到數字訊號處理器(

dsp)的

l2 ram

的資料長度。這個值只在

legacy boot

模式被使用,單位是kb。

範圍:0x01    1kb

0x02    2kb

...0x0e   14kb

0x0f   15kb

method:這個字段表明使用的是哪種

nor boot

0x0 :

legacy norboot

0x1 :

direct norboot

0x2 :

ais nor boot

access :

emifa

的訪問模式

0x0 :

8-bit

的訪問方式

0x1 :

16-bit

的訪問方式 如果

access

欄位為0x01

,那麼bootloader

在使用method

特定的引導方式之前將

emifa

重新配置為

16-bit

的訪問方式。

bootloader

的預設配置是

8-bit

的訪問方式。

legacy nor boot

對於這種引導方式,

bootloader

從norflash

的開始(

0x60000000

)拷貝一塊

copy

字段大小的資料到

dsp的

l2 ram

的開始位址上(

0x11800000

)。這塊資料應該被設定成為第二段

bootloader

。如下所示的:

對於這種引導方式,

bootloader

通過分支位址

0x60000004

將控制權轉移給存在於

norflash

中的第二段

bootloader

。第二段

bootloader

直接從這裡執行。

ais nor boot

對於這種引導方式,

bootloader

要求ais

映象從0x6000004

開始,然後被對映到

在我所使用的系統上使用的方式是

aisnorboot,

所以介紹下

ais的檔案:

ais是一種儲存引導映象的格式。除了上述提到的

hpi和兩種

nor-boot

模式之外,所有的模式都是支援

c6748/c6746/c6742

的bootloader

使用ai

作為引導目標的。

ais是一種二進位制語言,使用

32位欄位小端格式訪問。

ais開始由乙個魔術字(

magic word0x41504954)和某些ais命令

bootloader

會按照順序去執行這些命令。

jump &close(j&c)命令標識了結尾。

每個ais

命令由乙個

opcode

,之後跟著乙個或多個引數,再一些設定的資料組成。

opcode

和引數是以乙個字的(

4個位元組)寬度。如果資料長度不足

4個位元組,那麼將會用

0去填充。

後續將對手頭上的ais檔案進行例項分析。

OMPL138及U Boot的啟動過程分析(四)

本篇對之前的分析做乙個總結 1.開機上電,使用者在boot 管腳上配置的啟動方式被鎖定取樣到syscfg模組的bootcfg暫存器,從而確定處理器的啟動方式。2.psc模組中的啟動預設值是 arm核休眠,dsp核使能。所以這時候dsp啟動,dsp從片內dsp l2 rom處讀取指令執行。這裡有ti已...

word的作用及uboot中 start的引用

gnu彙編中.word偽指令的理解 分類 linux 在u boot中遇到 armboot start bss start等這些變數,這些偽指令的用法涉及以下知識 1.彙編是 絕對引用 即引用的就是位址 在start.s中 text base word text base uboot映像在sdram...

ARM學習筆記 uboot的作用及主要工作 1

pc啟動 上電 bios 引導作業系統windows 識別c d盤 執行應用程式 嵌入式 上電 bootloader linux核心 掛接根檔案系統 執行應用程式 u boot打補丁 編譯 燒寫 1.解壓縮 2.打補丁patch命令 3.配置 4.編譯 uboot作用 主要作用 1.讀flash 2...