DSP bootloader

admin @ 2014-03-25 , reply:0

概述
  bootloader    在c5402採用boottable的并行根模式模式時,ti的資料上是說時,是將code從數據空間轉移到程序空……
    bootloader        

在c5402採用boot table的并行根模式模式時,ti的資料上是說時,是將code從數據空間轉移到程序空間,而我們一般把寫在eprom上,那是不是eprom在與dsp介面時,是要經過/ds來片選?

   

沒錯。

       

c5402載入根程序時,有四種方法。其中hpi,并行口,i/o口,eprom是通過讀i/o埠地址ffffh的數判斷出來的。
1)在什麼情況下用這些方法呢?
2)i/o埠ffffh地址為什麼就能判斷出是用這些方法呢?
3)c5402的bootloader是固化在片內rom的f800-fbff的。是否能進行改動?ff80出放的是轉移指令,轉移到f800加在程序(程序燒在外部eprom)嗎?f800-fbff出究竟固化的是什麼程序呢?

   

1) 啟動模式由用戶根據具體情況確定。
2)在RESET時,若MC/MP=0,則執行5402片內ROM程序,完成BOOTLOADER功能。若MC/MP=1,則從外部程序存儲器的FF80開始執行 !

       

TMS320VC5402的BOOTLOADER程序需要自己寫嗎?

   

bootload 程序不需要自己寫,已經固化好了。vc5402晶元的4kROM中有BOOTLODDER 程序,每片都一樣,可以適應多種bootloader 方式。TI的application note有詳細介紹哦。

       

最近我在使用HEX500時碰到幾個問題:我創建BOOT TABLE命令是:

hex500 port.out -i -boot -bootorg 0x0000 -memwidth 8 -romwidth 8 -o a.hex

跟據資料,在生成的HEX文件中應有08aa關鍵字,但我的hex文件中卻沒有這個關鍵字,這是為什麼哪?

   

在ASM500中加-V548開關。還有,版本必須是1。2以上。

       

c32的存儲器中1000h對應的是boot1,810000h對應的是boot2,請問否是用址線解碼將boot1或boot2的一個地址接到外部EPROM的片選信號端,運行時PROM內的程序由此地址載入到RAM中去。

   

對的。BOOT ROM使用INT0或INT1腳來判斷使用的是boot1還是boot2。EPROM的數據寬度可以是8位,16位或32位。

       

1。將32k的27256映射在外部8000h~~ffffh數據空間,但在內部的 f000h~~feffh處卻有另一部分rom,並由pmst中的drom位控制,那麼,在bootloader階段,pmst未設置,如果cpu讀取該段地址,則會讀到 27256還是內部rom?

2。啟動時,bootloader需要讀取存放在數據空間0ffffh的一個指針, 此指針指向bootloader表,但此指針是在何處設置的?

3。是否bootloader表被cpu讀入后要存放在某個位置,運行時還有另一個運行位置?

   

1)ROM是對PMST中的DROM置1時才會映射為數據空間的,Reset后默認是0,即on-chip ROM並不會映射數據空間。

2)bootloader是on-chip rom中的啟動引導程序,是固化在ROM中的。 0ffffh處的指針是指向boot tabler。 這個指針是自己燒錄在EPROM中。

   

我有一個簡單的CMD文件共HEX500使用:

-memwidth 8
-i
-boot
-map boot.map

產生8位EPROM,INTEL格式。這個CMD很簡單,而且只有.text段,如果在數據段有 常量,只能在開始時用初始化程序將該常數從.text中複製到數據區。不妨試試?

       

如何生成BOOT TABLE?

   

BOOT TABLE可以用hex500.exe自動生成,但不同系列的DSP參數略有不同。請參考相關資料。最後應該在燒EPROM時手工修改BOOT TABLE指針,即BOOT TABLE的起始位置。我有一個簡單的CMD文件共HEX500使用:(FOR C542)

-memwidth 8
-i
-boot
-map boot.map

產生8位EPROM,INTEL格式。




[admin via 研發互助社區 ] DSP bootloader已經有2487次圍觀

http://cocdig.com/docs/show-post-42940.html