on chip ROM boot的原理分析

2021-08-10 22:06:51 字數 909 閱讀 1073

arm處理器如何去boot引導外部儲存器的程式?nand/nor flash/i2c flash/sd/usb這些flash cpu是怎麼選擇和驅動引導的?

本文以freescale的imx28系列晶元介紹on-chip rom boot的原理。

imx28晶元的片內內建了128kb的rom和ram。片內rom出廠內建了boot**,簡單來說包含了硬體初始化和boot初始化和模式選擇,還有廠商測試**。具體來說包含了對所有外部可支援的boot 裝置驅動,解密boot image,解析image內的裝置配置資料dcd,數字簽名,支援從nand/sd/mmc裝置的第二boot。boot mode 配置負責選擇從片外什麼裝置匯入外部可執行程式到片內ram。boot mode支援5種裝置:

1. nand flash

2. sd/mmc

3. spi /nor flash

4. usb

5. i2c

cpu一上電,首先從片內rom中執行指令,即執行片內boot程式。它會初始化硬體,判斷boot mode和讀取外部韌體到片內ram。最後去跳轉到片內ram去執行新的使用者boot程式,把控制權交給使用者程式。 另外為了安全性考慮,boot會檢查和加密解密外部匯入的韌體,這裡不做過多介紹。

內建boot會分配60kb 片內ram空間給新匯入的應用程式存放。片內rom boot 128k位址空間和片內ram128k位址空間分配如下:

這裡寫描述

片內boot只能載入使用者自己的boot的前一部分**到片內ram分配的60kb記憶體中,使用者的boot的第一階段**首先就會去初始化外部儲存器sdram。然後將剩下的引導映像繼續載入到sdram。最後才會跳轉到sdram中去執行完整的image。

memset,memcpy,memcmp的原型函式

void memset void s,int c,size t count int memcmp const void cs,const void ct,size t count void memcpy void dest,const void src,size t count memset是以位元...

display inline block的原理分析

在使用 css 實現表現的時候,會經常接觸到 display inline block 這一屬性,無論是初接觸 web 標準還是接觸標準已久的朋友,大都會對這一屬 覺很迷惑和模糊。複製 如下 display inline block 將物件呈遞為內聯物件,但是物件的內容作為塊物件呈遞。旁邊的內聯物件...

原環套原環

今天在除錯兄弟的程式的時候發現了乙個問題,就是在組合資料的時候,有些時候可以成功,有些時候失敗,感覺十分奇怪。功能大概是這樣的,就是在一棵樹上掛資料,所有的節點都可以有資料,不只是葉子的,在組合資料的時候,可以從任意節點取資料,但是不能是重複的資料。資料可能出現的情況如圖a b c所示,圖a是沒有干...