菜鳥的cubieboard之旅(一) 啟動流程

2021-06-20 10:37:23 字數 1132 閱讀 9742

到手一塊cubieboard2,一直沒怎麼玩過。之前做過一些linux的驅動,但是感覺整體把握不是很好,想借cubieboard這個學習機會,讓自己知識面全面點。

cubieboard的資料比較雜,而且資料沒有樹莓派這麼多,所以找資料這個過程還是比較痛苦的。廢話不多說,開始吧

先從總體上了解下cb2的啟動過程,對整體有個了解,參考

a20的啟動過程大概可分為5步:boot rom,spl,uboot,kernel,rootfilesystem。系統上電後,arm處理器在復位時從位址0x000000開始執行指令,把板上rom或flash對映到這一位址。a20將啟動裝置選擇程式固化在cpu內部的乙個32kb rom中,預設的啟動時序為sd card0,nand flash,sd card2,spi nor flash。另外通過外部的乙個啟動選擇引腳可以使其跳轉到usb啟動模式。通常情況下,啟動選擇引腳狀態連線50k內部上拉電阻。在上電後,執行儲存在boot rom中的啟動**,將自動檢測啟動選擇引腳狀態。只有當該引腳狀態為低電平時才選擇usb啟動模式。

在選擇啟動裝置後將載入並執行bootloader程式,cpu通過拷貝或對映bootloader程式到記憶體,然後執行bootloader的第一條指令。通過閱讀官方的uboot燒寫方法,發現a20通過uboot引導系統之前先載入了uboot spl。什麼是spl?通過查閱uboot的官網資料得知,spl是乙個迷你版的uboot,全拼為second program loader。適用於soc的內部sram<64k的情況,用它來載入完整的uboot程式到sdram,並通過完整uboot載入核心來啟動系統。其中sram一般指cpu內部的l1/l2或外部的l2快取記憶體,這裡即為boot rom,而sdram一般指記憶體。

spl程式流程如下:

初始化arm處理器

初始化串列埠控制台

配置時鐘和最基礎的分頻

初始化sdram

配置引腳多路復用功能

啟動裝置初始化(即上面選擇的啟動裝置)

載入完整的uboot程式並轉交控制權

啟動裝置選擇程式的流程圖:

搞清楚了上面的概念,可以知道cubieboard出廠已經燒寫了nandflash中的程式,即在啟動時使用的是nandflash。現在根據全志a20上述步驟,我們嘗試用sd card0(即cubieboard上卡槽中的tf卡)來啟動系統。

菜鳥之旅 開啟

近幾年,著實是荒廢了不少時日,渾渾噩噩的混日子,陷入安逸的圈子裡安心的當一頭豬妖。得過且過的狀態,外加盲目樂觀的心態,愈發討厭起自己來了。想著,歲月還長,不能一直這樣討厭自己下去,畢竟還沒有看過自己努力的樣子吧。荒廢了近十年的大腦,早已鏽跡斑斑,但身側空無一物,既無退路,還是試試吧。在一家小公司,混...

菜鳥的PAT訓練之旅 9

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue 給定一句英語,要求你編寫程式,將句中所有單詞的順序顛倒輸出。輸入格式 測試輸入包含乙個測試用例,在一行內給出總長度不超過80的字串。字串由若干單詞和若干空格組成,其中單詞...

菜鳥的PAT B訓練之旅 15

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,li 宋代史學家司馬光在 資治通鑑 中有一段著名的 德才論 是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,苟不得聖人,君子而與之,與其得小人...