1.根據TI的databook描述,可以選擇從AEMIF(NOR Flash)開機,就可以直接跳到0x02000000去執行放在NOR flash中的u-boot,但旺陽電的VanHelsing並沒有實作NOR flash到EVM board上。
2.因為有NFS/TFTP server,RD在開發期間似乎不需要額外的updater,不管是kernel image/device driver或gui application都可以在u-boot執行期間透過NFS或TFTP server將update file載入target,下command或使用script file都可以輕鬆完成update的動作。
3.u-boot本身兼具bootloader與monitor的功能,將monitor予以disable之後就成為正常的bootloader,如果安排short-cut key讓系統在boot期間(甚至OS在跑的期間也可以跳)跳到它的command handle routine,它就成為一個簡單的on-line debug tool,可以read/write flash、update image、update file system,如果可以加上dump CPU register、dump OS information等功能,或許透過serial port的console就可以滿足大多數的debug需求(它本身有一個exception handler可以做這些事,不過做完就當機,很麻煩)。
Tool Chain
Tool Path Description
GCC /opt/mv_pro_4.0/monstavista/ compiler and linker.
GDB pro/devkit/arm/v5t_le/bin/ software debug tool.
bmp_logo /u-boot/tools/ u-boot logo maker.
envsrc /u-boot/tools/ verify environment for u-boot.
gen_eth_addr /u-boot/tools/ generate ethernet MAC address.
img2srec /u-boot/tools/ make u-boot format image.
mkimage /u-boot/tools/ convert u-boot format image to SREC format.
updater /u-boot/tools/ u-boot auto updater.
U-Boot Command
1.bootp [loadAddress] [bootfilename]
要求DHCP server分配IP給target,然後透過TFTP下載指定的image到memory中。
第1個參數是destination address。
第2個參數是file name,這個file必須已經存在host的tftpboot/底下。
要注意serverip必須已經設定好。
2.tftpboot [loadAddress] [bootfilename]
使用tftp以binary file格式下載file到target。
第1個參數是destination address。
第2個參數是file name,這個file必須已經存在host的tftpboot/底下。
要注意serverip與ipaddr必須已經設定好,file必須已經存在host的tftpboot/底下。
3.nfs [loadAddress] [host ip addr:bootfilename]
使用nfs下載file到target上指定的位址,若未指定host ip, path以及target的address的話,會使用預設值下載kernel image。
第1個參數是destination address。
第2個參數是host端的path與file name。
要注意serverip與ipaddr必須已經設定好,host端的path與file必須已經export。
4.bootm [addr [arg ...]]
從RAM或Flash開機,uImage必須已經load好,rootfs的mount pointer也都指定好。
第1個參數是image address,image必須是u-boot格式。
第2個參數是要pass給kernel的argument,也可以做為RAMDISK address。
5.erase all
erase [start add.] [end add.]
erase bank N
可以設定erase整個nor flash,或指定的區域,或某個bank。
6.nand
nand info - 顯示所有可用的nand flash.
nand read[.jffs2[s]] addr off size - 從」off」讀」size」大小的資料到」addr」,addr指的是memory,off指的是flash。
nand write[.jffs2] addr off size - 從」addr」寫」size」大小的資料到」off」。
nand erase [clean] [off size] - 從」off」開始,清除」size」大小的資料。
nand bad - 顯示壞掉的block。
7.flinfo
flinfo N
可以列出flash所有bank的infomation或只列印指定的bank。
8.iminfo addr [addr ...]
可以列出指定address的data的header。
9.loadb [offset] [baudrate]
透過serial port下載binary data。
10.loads [offset]
透過serial port下載S-Record的data。
11.printenv [name]
印出environment variable的value,若未指定variable則印出全部。
12.setenv name [value]
設定environment variable。
13.md address [address]
印出指定位址(區域)的hex data。
U-Boot Souce Code Architecture
Dirctory Explain
board board dependent files and u-boot.lds.
cpu CPU specific files
lib_arm
common misc architecture independent functions
disk source code for disk driver.
doc simple document for u-boot.
drivers commonly used device drivers
dtt Digital Thermometer and Thermostat drivers
fs source cdoe for file system support
include header Files
lib_generic files generic to all architectures
net networking code
post Power On Self Test
rtc Real Time Clock drivers
tools Tools to build S-Record or U-Boot images, etc.
examples Example code for standalone applications, etc.
Booting Code Trace
由於使用JTAG的reset pin開機會因為RBL所做的hardware check而導致系統停在RBL不出來,所以RBL、UBL與部份的u-boot可能都沒辦法逐行trace,不過可以在u-boot進入main_loop之後再connect CCStudio,至少可以監看network behavior、load/Uncompressing image的動作,也可以監看到kernel開始run的過程。
UBL Source Code Trace
Function Description
selfcopy()
1)Enable ITCM與DTCM。
2)將__selfcopysrc中的資料搬到__selfcopydest中。
3)呼叫boot()。
boot()
1)設定為supervisor mode,disable FIQ & IRQ。
2)將Interrupt Vector Table放到ARM RAM1(0x2000)的位置。
3)設定Stack Pointer。
4)執行main()。
5)執行main()從flash或uart端搬進DDR2的application。
main()
1)執行PSCInit(),初始化Power & Sleep Control的feature。
2)檢查BOOTCFG的第6~7個bit,若為0則表示從NAND開機,若為1則表示從NOR開機,若都不
是則進入無窮迴圈等待RBL對UART的存取結束。
3)呼叫DM644xInit(),對UARTs/PLL1/PLL2/DDR2/IVT做initial。
4)將current_mem_loc設為0,也就是RAM0開始的位置(0x0000)。
5)分別呼叫NAND_Copy()與NOR_Copy(),到flash中去尋找符合的application,並且將它搬
到DDR2中。
6)若flash中沒有符合的applcation,則使用UART下載。
7)application放進DDR2之後,return回boot(),執行application。
PSCInit()
1) PSC是Power and Sleep Control的意思。
2)Reset DSP core,Power on internal component。
3)設定EMURSTIE。
4)設定」Always on」與」DSP」兩部份的power domain。
5)清除EMURSTIE。
- Oct 09 Tue 2012 20:11
TI DM6441 Davinci-開機流程與環境
close
全站熱搜
留言列表