TI Davinci DM6446開發攻略——UBL移植

UBL的程序設計,相對UBOOT、KERNEL、ROOTFS、設備驅動、DSP開發來講,仍是比較簡單。咱們先從DAVINCI的啓動提及,瞭解UBL在DAVIN系統中的位置和做用。對於固件程序燒寫在NAND FLASH Davinci dm644x嵌入式系統, 上電啓動的過程以下:
 
 
RBL ARM ROM Boot Loader )在芯片出廠的時候就已經燒寫到ROM裏了,這不須要你們關心,上電後,RBL會自動從 EMIFA EM_CS2 memory space (0x0200 0000). 執行指令,這個地址就是NAND FLASH NOR FLASH的片選起始地址。當你的系統設置爲NAND BOOT的時候,UBL User Boot Loader )是必不可少的,不然RBL不能直接把UBOOTBOOT起來,由於RBL只支持14K NAND FLASH BOOT程序,而UBOOT編譯出來後的bin文件通常都大於80K,特別是版本越高,UBOOT的代碼越大,因此這時候就須要寫一個UBLUBL NAND FLASH 讀取UBOOT,而後把UBOOT COPY DDR2(RAM)的相關地址上,而後把UBOOT BOOT 起來。根據TI DAVIN RBL的規定,不一樣型號的NAND FLASHUBL保存的地址是不一樣的,512字節PAGE NAND(即SMALL PAGE),保存的地址是:0x000040002048字節PAGENAND (即LARGE PAGE)保存的地址是:0x20000。至於如何經過XDS560仿真器燒寫UBL或經過UART BOOT燒寫UBL,本人放在DAVINCI UBOOT移植的文章介紹。(提示:RBLUBL不要混淆!多看看BOOT的順序圖。)
UBL的移植,比較簡單,固然,前提條件你已經搭好交叉編譯環境。進入UBL文件包最上層的文件夾,使用make 就能夠編譯出:ubl_davinci_nand.binUBL主要有:
ubl.c
dm644x.c
util.c
nand.c
nandboot.c
nor.c
norboot.c
uart.c
uartboot.c
ubl_davinci.lds
相關的*.h 文件和兩個makefile文件。若是最上層的makefile選擇$(MAKE) -C src FLASH=nand,表示使用ARM nand flash boot模式,這時NOR,UART BOOT模式相關的c文件不會編譯。
介紹一下:
ubl_davinci.lds 指定UBLSECTIONSUBL自己的入口地址;
ubl.c:從selfcopy函數開始運行,COPY本身到RAM,而後跳到正常入口地址,執行boot(),main()等函數,調用DM644xInit()COPY UBOOTRAM相關地址,最後執行UBOOT的入口地址(EntryPoint),這時UBOOT就能夠運行了。
dm644x.c:主要配置最小系統,好比關中斷、PLL1PLL2設置、DDR2 時序設置、UART設置,等等。
util.c:是一些相關的malloc等公共函數。
nand.c:主要是NAND FLASH的驅動;
nandboot.c:主要是實現NAND_Copy,把UBOOTNAND COPY到相應的DDR2(RAM)裏。
UBL要移植的東西不是不少,主要是在dm644x.c裏要定義好:
Uint32 PLL1_Mult = 22;  // DSP=594 MHz for DM6446DM6441通常使用Uint32 PLL1_Mult = 19;  // DSP=513 MHz。在PLL2Init()函數裏,使用不一樣型號的DDR,要設置不一樣的參數,即時序參數等,這是關鍵的地方。
Nand.cnand.h主要移植就是定義好UBOOTNAND的存儲地址,不一樣型號的NAND FLASH ,好比SMALL PAGE512字節)和LARGE PAGE2048字節)這些都要修改除非你的NAND的類型和TI EVM 兼容。
nandboot.c主要任務就是如何把u-boot.bin或帶有頭的u-boot.img正確COPYDDR裏,這裏最容易出問題,編譯出來的U-BOOT文件通常帶有Valid magic numberMAGIC_NUMBER_VALID),入口地址entrypaoit,這些信息不對都使UBOOT 運行不起來,建議看一下或COPY UBOOTp_w_picpath.h
本人在本身設計的開發板上實現UBL的移植。UBLUBOOT運行起來,不少事情均可以作了,LINUX KERNELROOTFSNFSDSP,設備驅動,應用等等,均可開始循序漸進開發。
本文出自 「 集成系統-人生觀」 博客,請務必保留此出處 http://zjbintsystem.blog.51cto.com/964211/279709
相關文章
相關標籤/搜索