日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

S3C6410的Bootloader的两个阶段BL1和BL2编译相关学习

發布時間:2025/4/16 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 S3C6410的Bootloader的两个阶段BL1和BL2编译相关学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

********************************LoongEmbedded********************************

作者:LoongEmbedded(kandi)

時間:2011.7.20

類別:WINCE bootloader開發

********************************LoongEmbedded********************************

?

備注:此開發支持IROM啟動方式,包括支持SD和NAND Flash這兩種啟動介質的啟動,在學習中主要是針對NAND Flash的啟動方式來展開學習的。

?

本文基于Real6410開發板來學習的,此開發板把我們通常的stepldr分成nbl1和nbl2這兩部分,這里的nbl我的理解是nboot的boot bootloader,而1是stepldr的第一階段,2表示第二階段,下面就來學習如何編譯生成nbl1和nbl2的內容,以及它們的bib和makefile.inc的學習。

?

1.????? nbl1

1.1?? nbl1的bib文件

圖1

下面就來學習這兩部分的內容:

1)????? NBL1的RAMIMAGE這一項的內容

首先因為我們是采用IROM的啟動方式,在SMDK6410的SMDK6410.bat中對此環境變量定義如下:

set BSP_IROMBOOT=1

?

從圖1可知NBL1????? 0C000000? 00002000? RAMIMAGE

我們知道RAMIMAGE指定這塊內存用于加載NBL1的鏡像,在系統上電后,NBL1的鏡像會被IROM的boot code拷貝到這塊區域上面運行。那為什這塊區域的起始地址是0x0C000000?大小是0x00002000(8KB)呢?因為我們采用的是IROM啟動方式,啟動介質是NAND Flash,見下圖:

圖2

圖2是在啟動的時候設備操作模式的選擇

圖3

圖3是設備的內存映射圖,開發板是用Xm0CSn2作為NAND Flash的片選引號的,這種情況下,Stepping Stone映射到0x020000000~0x27FFFFFF這塊區域,圖3中的內部存儲區的internal RAM部分,此區域的范圍是0x0C000000~0x0BFFFFFF(64MB),但實際上可用的internal RAM部分只有8KB,這8KB的RAM也稱為Stepping? Stone。

?

由此可知0x0C000000是NBL1鏡像被IROM的boot code加載到Stepping? Stone中的地址,也就是Stepping? Stone的起始地址。8KB的大小限制是S3C6410的Stepping? Stone只有8KB。

?

2)????? 生成NBL1.nbx的配置

nb0文件就是可執行映像的原始Flash映像,它不包括頭,一般情況下將鏡像下載到設備的RAM中運行都采用nb0格式,nb0文件的尺寸比bin大,但是可以直接運行,要生產nb0文件,就需要在NBL1.bib中加入下面的內容

ROMSTART = 0C000000

ROMWIDTH = 32

ROMSIZE = 00001000

ROMSTART:表示NBL1的nbx文件在內存(這里是Stepping? Stone)中的起始地址。

ROMWIDTH:指數據總線的寬度。

ROMSIZE:NBL1的nbx文件的大小,這里是0x00001000(4KB),在上面不是指定了NBL1.bin文件大小最大值可以是0x000020000(8KB)嗎?這里為什么指定的是4KB呢?我們結合IROM啟動方式的流程圖來理解:

圖4

根據圖4可知,BL1(這里就是NBL1)這個bootloader的大小不能大于8KB,這是強制要求的,可見下圖

圖5

根據上面的描述我們可以理解了為什么ROMSIZE要求大小是4KB了。可因為實際生成的nbl1.bin(6KB)的大小大于4KB,這樣就會生成nbl1.nb0、nbl1.nb1、nbl1.nb2和nbl1.nb3,不知道為什么會生成4個?見下圖:

圖6

我試著用比較工具比較了這4個nbx文件,雖然是亂碼,但比較可知nbl1.nb0和nbl1.nb1內容一樣,nbl1.nb2、nbl1.nb3內容依次減少,而且不一樣。

\WINCE600\PUBLIC\COMMON\OAK\MISC

?

1.2?? NBL1的makefile.inc文件

內容如下:

圖7

1)????? Romimage工具打包生成nbl1.bin

Romimage.exe是WINCE用于創建.bin(binary image)文件,此工具只接受一個bib文件作為輸入參數,Romimage會根據此bib中的內容來為要生成的bin文件來分配物理內存地址。

?

2)????? Copy命令的應用

/y:不使用確認是否要改寫現有目標文件的提示。

/b:表示一個二進制文件。

上面的意思是把$(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)目錄下的nbl1.nb1文件復制到此目錄下,并且命名為nbl1.nb0,這也就是為什么用比較工具比較nbl1.nb1和nbl1.nb0內容是一樣的原因。但不是很清楚為什么要這樣做?

?

3)????? Copy指定的文件到指定的目錄

復制$(_PLATFORMROOT)\$(_TGTPLAT)\target\$(_TGTCPU)\$(WINCEDEBUG)下的nbl.*文件到$(_FLATRELEASEDIR)目錄下,這時候要復制的文件見下圖:

圖8

這樣我們就可以在release目錄下看到這些文件了。

1.3?? ?

?

2.????? nbl2

結合圖4,我們知道BL1(nbl1)會裝載BL2(nbl2)到SDRAM中執行,而本設計中SDRAM空間對應于圖3的范圍為0x50000000~0x5FFFFFFF的地址空間,這也就是nbl2鏡像文件在SDRAM的轉載地址,這樣我們就可以較好理解下面的內容了。

2.1?? nbl2.bib文件

圖9

2.2?? nbl2的makefile.inc文件

2.3?? ?

3.????? ?

?

總結

以上是生活随笔為你收集整理的S3C6410的Bootloader的两个阶段BL1和BL2编译相关学习的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。