DSP上電自舉調(diào)試實(shí)驗(yàn)
以下DSP上電自舉調(diào)試經(jīng)驗(yàn)的前提:
采用的是MP/MC=0的模式,采用ROM中固化的bootloader,flash映射在數(shù)據(jù)空間,曾經(jīng)燒寫(xiě)過(guò)兩類flash:Am29DL400B和SST39LF/VF200A/400A/800A。
1、燒寫(xiě)flash:
關(guān)于flash的燒寫(xiě)程序,很容易出錯(cuò)的是兩點(diǎn):無(wú)法正常擦寫(xiě),不知道是否正確寫(xiě)入。
燒寫(xiě)flash要嚴(yán)格按照f(shuō)lash芯片的命令順序:以Am29DL400B的寫(xiě)單元為例:555(地址) AA(發(fā)數(shù)據(jù))——2AA 55—— 555 A0——PA PD
其實(shí)555 AA都是命令,并不是真的在flash芯片的555地址寫(xiě)入數(shù)據(jù)AA,只是flash的命令,只有到PA PD時(shí)候,才是真在PA的地址寫(xiě)數(shù)據(jù)PD。而且對(duì)于這款flash,命令的最高位是忽略的。
如果flash無(wú)法擦除和寫(xiě)入,可以考慮:降低DSP工作頻率,使得讀寫(xiě)時(shí)序滿足flash的 datasheet的要求;檢查是否按照datasheet的發(fā)命令順序,一般是先reset再Chip Erase再Program;再就是用示波器測(cè)試一下,看看寫(xiě)信號(hào)和片選信號(hào)和數(shù)據(jù)是否都到達(dá)Flash芯片,測(cè)試時(shí),可以用一個(gè)循環(huán)一直寫(xiě)flash,如果這些都正常,就是你的寫(xiě)時(shí)序出問(wèn)題了。
看看寫(xiě)時(shí)序是否滿足Flash的寫(xiě)周期時(shí)間要求,等待周期是多少,寫(xiě)周期后的等待時(shí)間是多少,也要看讀寫(xiě)該芯片應(yīng)該插入多少等待(SWWSR寄存器)。實(shí)在不成的話,寫(xiě)Flash時(shí)把時(shí)鐘降下來(lái)。
不知道是否正確寫(xiě)入flash,可以直接用仿真器,上電后先不打開(kāi)project,添加GEL文件后就可以在ccs中看到data空間的數(shù)據(jù)了。如果是亂七八糟的數(shù)據(jù),有可能是GEL文件中寄存器的設(shè)置不對(duì),但是建議不要修改GEL文件中寄存器的默認(rèn)值。此時(shí)可以打開(kāi)燒寫(xiě)flash的project,運(yùn)行到reset flash命令后就可以看到
data空間的數(shù)據(jù)了。
2、上電自舉:
程序正確燒寫(xiě)進(jìn)flash后一般上電是能夠正常自舉的,如果有問(wèn)題的話首先應(yīng)該查詢寫(xiě)入的自舉表是否正確。10AA ,SWWSR(推薦值7FFFH), BSCR(推薦值F800H)這三個(gè)標(biāo)志寫(xiě)對(duì)了的話就繼續(xù)檢查程序入口XPC,程序入口地址,程序塊長(zhǎng)度、存放目標(biāo)XPC、存放目標(biāo)地址,這5個(gè)值任何一個(gè)有問(wèn)題都無(wú)法正常自舉。還有就是數(shù)據(jù)空間FFFFH地址的8000(自舉表存放首地址)是否正確寫(xiě)入。
建議燒寫(xiě)一個(gè)小的程序,比如說(shuō)讓XF腳產(chǎn)生方波的程序,在XF腳上加一個(gè)LED燈閃爍則表示自舉成功。
評(píng)論