|
_JUDGEBEGIN?: PSHM AR1 LD pdr,B ;獲取寫入的數(shù)據(jù) AND #00FFh,B ;取被寫入數(shù)據(jù)的DQ7~DQ0 LD par,A ;讀被燒寫地址的數(shù)據(jù) AND #00FFh,A ;取DQ7~DQ0 STL A ,TEMP ;保存 LD A,-7,A ;讀DQ7狀態(tài) XOR B,-7,A ;是否是反碼? BC _JUDGESUCCESS?,AEQ ; DQ7不是反碼而是寫入數(shù)據(jù)表示操作成功 BITF TEMP,#20h BC _JUDGEBEGIN?,ntc ;DQ5=1表示操作超時(shí) LD par,A ;再讀被燒寫地址的數(shù)據(jù) AND #00FFh,A LD A,-7,A XOR B,-7,A BC _JUDGESUCCESS?,AEQ ; DQ7不是寫入數(shù)據(jù),表示操作失敗 _JUDGEERRO? _RESETFlash ;復(fù)位Flash _JUDGESUCCESS? POPM AR1 .endm
2 C5410 的自舉引導(dǎo)
脫離仿真器獨(dú)立運(yùn)行程序一般有兩種方式:一種是上電后用戶程序直接在Flash存儲(chǔ)器中運(yùn)行,這種運(yùn)行速度比較慢;另一種是上電或復(fù)位后將用戶程序從Flash存儲(chǔ)器引導(dǎo)到高速數(shù)據(jù)存儲(chǔ)器中運(yùn)行,此方法最常用,可以較低的成本實(shí)現(xiàn)高速的運(yùn)行。為了實(shí)現(xiàn)這個(gè)過程就必須運(yùn)用DSP自舉引導(dǎo)功能。
(1)自舉引導(dǎo)
C5410上電復(fù)位后,首先檢查MP/MC狀態(tài):如果為高電平,說明DSP處于微處理器工作方式,即從外部程序存儲(chǔ)器0FF80H地址開始執(zhí)行用戶程序;若為低電平,說明DSP被設(shè)置為微計(jì)算機(jī)工作方式,從片內(nèi)ROM的0FF80H地址開始執(zhí)行程序。0FF80H地址存放的是中斷向量表,它實(shí)為一條分支轉(zhuǎn)移指令(BD 0F800H),使程序跳轉(zhuǎn)至0F800H執(zhí)行自舉引導(dǎo)程序(Bootloader)。Bootloader是固化在DSP芯片內(nèi)ROM中的一段程序代碼,其功能是將用戶程序從外部加載至片內(nèi)RAM或擴(kuò)展的RAM中,使其高速運(yùn)行。在搬運(yùn)程序之前,Bootloader首先完成初始化工作:使中斷無效,內(nèi)部RAM映射到程序/數(shù)據(jù)區(qū)(OVLY=1),對(duì)程序和數(shù)據(jù)區(qū)均設(shè)置7個(gè)等待狀態(tài)等。C5410有以下幾種自舉引導(dǎo)方式:主機(jī)接口HPI、并行口(8/16位)、標(biāo)準(zhǔn)串行口(MCBSP0是16位引導(dǎo)模式,MCBSP2是8位引導(dǎo)模式)以及I/O口(8/16位)自舉引導(dǎo)方式。
|