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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

dm365启动分析以及RBL、UBL、Uboot的简单介绍

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dm365启动分析以及RBL、UBL、Uboot的简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

dm365啟動方式有許多種,我們的板子上面有一個撥碼開關,EM_A[13:11]用來選擇啟動方式,參照tm320dm365的原理圖,啟動方式有:

EM_A[13:11]

BOOT from

000

ROM(NAND):從NAND flash啟動

001

AEMIF:外部存儲器接口啟動

010

ROM(MMC/SD):SD卡啟動

011

ROM(UART):串口UART啟動

100

ROM(USB):USB啟動

101

ROM(SPI);SPI啟動

110

ROM(EMAC):網口啟動

111

ROM(HPI):HPI啟動

注:EMIF是指外部存儲器接口,Externel Memory Interface,EMIF可實現DSP與不同類型存儲器的連接。參考:http://baike.baidu.com/view/1924708.htm

HPI:是一個與主機通信的并行接口,HostPort Interface。主要用于DSP與其他總線或CPU進行通信。參考:http://baike.baidu.com/view/1049410.htm

?

在datasheet中有:

?

這里OneNAND/NOR Boot就是AEMIF啟動。

?

啟動的話我們主要是使用NAND啟動和串口啟動。我們在燒寫UBL和U-Boot的時候是通過串口燒寫的,所以需要將這個撥碼開關設置為011,此時通過串口將UBL和U-Boot燒寫到Flash中。而燒寫完成后下載內核時,我們需要將撥碼開關設置為NAND啟動模式000,此時,下載內核就是從Flash啟動了。

?

RBL:ARM ROM Boot Loader,UBL:UserBootloader

RBL是TI固化在芯片ROM中的bootloader。DM365上電啟動后會先運行RBL,然后通過RBL加載UBL,再通過UBL加載uboot,而uboot是用來加載linux內核的。UBL是一級Bootloader,Uboot是二級Bootloader。

UBL是TI自己寫的一小段程序,這段程序用于初始化PLL、DDR以及其他的一些外設,然后進行將代碼從flash拷貝到DDR的功能。UBL大小是有限制的,因此才有二級Bootloader。

參考:http://bbs.ednchina.com/BLOG_ARTICLE_3009260.HTM

http://blog.csdn.net/jaylondon/article/details/6579169

?

參考這個鏈接:http://www.eefocus.com/bbs/article_1087_380415.html

前面已經寫過了RBL、UBL、Uboot的簡單介紹。

這個鏈接中寫:RBL只支持14K NAND FLASH的BOOT程序。

但是實際上我看UBL_DM36x_NAND.bin文件已經有20KB了,Uboot編譯的bin文件已經是302KB。

但是不管怎么樣,RBL應該是不能boot這么大的uboot的,所以需要UBL。UBL從NAND flash讀取uboot(需要我們先燒寫到nand中),然后將uboot復制到DDR的相關地址上,然后把uboot給boot起來。

根據TI davinci RBL的規定,不同型號的NAND Flash,UBL保存的地址是不同的,512字節PAGE的NAND,保存的地址是:0x000040000;2048字節page的NAND,保存的地址是:0x00020000.

?

我們使用的NAND Flash是:MT29F16G08FAAWC:A,查閱datasheet可知,

page size:2112 bytes(2048+64 bytes)

block size:64 pages(128K +4K bytes)

plane size:2048 blocks

devices size:16Gb:16384 blocks

因此,我們使用的是16G:16384*128K*8b=16G bits

?

?

因此按照上面的說明,RBL已經固化在芯片中了,我們只需要燒寫UBL和Uboot就行了。下面說明如何燒寫:

參看強哥給的:dm365操作系統下載說明.txt

這里我按照我自己搭建的環境寫:

在/home/下建立一個davinci的文件夾,方便以后好找。

先將/home/dm365/dm365/dvsdk_4_02_00_06/psp/board_utilities/serial_flash/dm365/下的文件sfh_DM36x.exe、UBL_DM36x_NAND.bin拷貝到/home/davinci文件夾下。

?

注:sfh_DM36x.exe是TI提供的flash串行燒寫程序,位于TI安裝目錄/home/lvfly/dm365/dvsdk_dm365_4_02_00_06/psp/board_utilities/serial_flash/dm365下

UBL_DM36x_NAND.bin是TI提供的UBL二進制文件(也提供了源碼),我們不需要修改就可以使用。

?

同時將u-boot.bin拷貝到/home/davinci/文件夾下。這里有一點疑問:在../psp/prebuilt_images/文件夾下有一個u-boot-dm365-evm.bin文件,而在../psp/u-boot-2010.12/文件夾中有一個u-boot.bin文件,按照強哥所說:這兩個文件是一樣的,我查看了下properties,大小是一樣的,都是302.6KB(309880 bytes).

?

強哥說uboot需要修改,但是現在我還不知道怎么改。2013.5.13

?

下載UBL和Uboot:

1.首先需要擦寫flalsh(在terminal下執行)

命令:/home/davinci/sfh_DM36x.exe -nanderase -v -p /dev/ttyUSB0

?/dev/ttyUSB0代表USB轉串口設備,名稱和具體插入的串口設備相關(也可能是/dev/ttyUSB1),可通過dmesg | grep ttyUSB* 查看

?

注意:由于TI軟件的bug,該命令需要執行兩次

?

2.燒寫flash

命令:/home/davinci/sfh_DM36x.exe -nandflash/home/davinci/UBL_DM36x_NAND_backup.bin /home/davinci/u-boot.bin -v -p/dev/ttyUSB0

?

注意:由于TI軟件的bug,該命令需要執行兩次

?

然后就可以下載內核了。

Linux內核的下載:

內核的下載此時需要將撥碼開關調至NAND啟動000,然后在docklight工程中操作。

執行的命令如下:

setenv nfshost192.168.0.120? ???????? //這個是你的主機的ip

setenv serverip 192.168.0.120???? //這個也是主機ip

setenv ipaddr 192.168.0.248?????? //這個是板子的ip

setenv bootargs mem=60M console=ttyS0,115200n8 root=/dev/nfs rwnfsroot=192.168.0.120:/home/dm365/dm365/dvsdk_dm365_4_02_00_06/filesystem/dm365rootfsip=dhcp dm365_imp.oper_mode=0 davinci_capture.device_type=1davinci_enc_mngr.ch0_mode=pal

setenv rootpath /home/dm365/dm365/dvsdk_dm365_4_02_00_06/filesystem/dm365rootfs

setenv bootfile uImage-dm365-evm.bin

setenv bootcmd 'dhcp;bootm'

setenv ethaddr 12:34:56:78:9a:bc

tftp 0x80700000 uImage

bootm

?

如果能正常啟動的話內核就下載成功了。

總結

以上是生活随笔為你收集整理的dm365启动分析以及RBL、UBL、Uboot的简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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