專利名稱:運用于dsp的動態(tài)加載方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種運用于數(shù)字信號處理器的動態(tài)加載方法,特別涉及一種運用于DSP的動態(tài)加載程序的方法。
背景技術(shù):
ANALOG公司的ADSP21065處理器是一款經(jīng)濟型的DSP處理器,也稱數(shù)字信號處理器。ANALOG公司在提供ADSP21065處理器時,提供了一種彌補其內(nèi)存空間小的基于RAM的辦法,但所用辦法需要擴展有足夠的RAM空間,同時掉電存放程序的ROM也需要足夠大的空間;同時該辦法加載需要按一定的規(guī)則使用其寄存器,給開發(fā)者帶來一定的麻煩,不利于大量的程序放入DSP內(nèi)運行。
發(fā)明內(nèi)容
本發(fā)明的目的是實現(xiàn)在不需要額外的RAM開銷情況下程序的動態(tài)加載,可最大限度的利用DSP的內(nèi)存空間,有利于大量的程序放入DSP內(nèi)運行。本發(fā)明的技術(shù)關(guān)鍵在于修改編寫DSP的加載程序;在運行代碼中添加必要的復(fù)位加載條件;ROM存儲器按設(shè)計地址放置相應(yīng)的程序代碼;設(shè)計動態(tài)復(fù)位電路等。
為實現(xiàn)所述目的本發(fā)明的操作步驟為(1)DSP外接的ROM存放的程序按功能模塊化,模塊化程序分為代碼段,A、B、C段等,在代碼段中必須有加載其它代碼段程序的條件;(2)定義與DSP連接RAM的一個RAM空間X作為加載程序中的加載起始碼地址和加載條件的RAM空間,其余為程序運行空間;(3)修改加載程序中的加載起始碼地址,并確定模塊化的代碼段的加載條件。
使用本發(fā)明方法后1)設(shè)備在初次加電時,RAM空間X的數(shù)為隨機數(shù),不滿足加載B和C代碼段,滿足加載A代碼段的條件;加載A代碼段的起始碼地址,A代碼段的程序進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼B時,DSP運行程序?qū)AM單元X的數(shù)據(jù)改寫為滿足加載B代碼段條件的數(shù)據(jù),且讓DSP運行程序重新復(fù)位。
2)由于RAM單元X數(shù)據(jù)滿足加載B代碼段的條件,故DSP復(fù)位后在運行加載程序時將加載B代碼段的起始碼地址,B代碼段的程序進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼C段時,DSP運行程序?qū)AM單元X的數(shù)據(jù)改寫為滿足加載C代碼段條件的數(shù)據(jù),且DSP程序重新復(fù)位。
3)由于RAM單元X數(shù)據(jù)滿足加載C代碼段的條件,故DSP復(fù)位后在運行加載程序時將加載C代碼段的起始碼地址,C代碼段的程序進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼A時,DSP運行程序?qū)AM單元X的數(shù)據(jù)改寫為滿足加載A代碼段條件的數(shù)據(jù),且DSP運行程序重新復(fù)位。由于RAM單元X數(shù)據(jù)滿足加載A代碼段的條件,故DSP復(fù)位后在運行加載程序時將加載A代碼段的起始碼地址,A代碼段的程序進入DSP運行環(huán)境運行。
如此反復(fù),便實現(xiàn)了程序的動態(tài)加載。
ADSP21065 DSP處理器復(fù)位的實現(xiàn),根據(jù)實時性要求的高低,可利用硬件系統(tǒng)的看門狗超時實現(xiàn),加載時間較長,一般為500ms左右;也可利用DSP的片上IO口,用上拉電阻上拉,管腳通過外部延時邏輯實現(xiàn),加載時間可控制的非常短,達到小于50ms。
在生成ROM中,代碼A、B、C的起始地址一定要和其軟件本身設(shè)置的條件復(fù)位地址一致。即應(yīng)注意加載程序ROM中A、B、C的位置和A、B、C中軟件設(shè)置的條件復(fù)位地址保持一致性,否則程序?qū)⒉荒苷_\行。
這樣實現(xiàn)在不需要額外的RAM開銷情況下程序的動態(tài)加載,最大限度地利用DSP的內(nèi)存空間,有利于大量的程序放入DSP內(nèi)運行。
具體實施例方式
本發(fā)明是利用ADSP21065本身的加載程序和軟件復(fù)位程序,修改其加載起始地址而實現(xiàn)。
實施例1(1)將DSP外接的ROM存放的程序按功能模塊化,模塊化程序分為代碼A、B、C段。
ROM存儲器代碼放置加載程序代碼段、A代碼段、B代碼段、C代碼段。
(2)將DSP連接RAM的一個空間X定義為加載程序中的加載起始碼地址和加載條件的空間,其余為程序運行空間;(3)修改加載程序中的加載起始碼地址,并確定模塊化的代碼段的加載條件;定義單元X為十六進制0X12345678時,加載程序代碼運行后跳至代碼B加載程序;單元X十六進制0X87654321時,加載程序代碼運行后跳至代碼B加載程序;如單元X是不為上述兩數(shù),即加載代碼A。
1)設(shè)備在初次加電時,RAM單元X的數(shù)為隨機數(shù),不滿足加載B和C代碼段,加載代碼A,進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼B時,DSP運行程序?qū)AM單元X數(shù)改寫為0X12345678,且讓DSP重新復(fù)位。
2)由于RAM單元X數(shù)據(jù)為0X12345678,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼B,即代碼B進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼C時,DSP運行程序?qū)AM單元X數(shù)改寫為0X87654321,且讓DSP重新復(fù)位。
3)由于RAM單元X數(shù)據(jù)為0X87654321,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼C,即代碼C進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼A時,DSP運行程序?qū)AM單元X數(shù)改寫為不是0X12345678和0X87654321的以外的數(shù),且程序重新復(fù)位,則DSP將加載代碼A,并運行。
如此反復(fù),便實現(xiàn)了程序的動態(tài)加載。
在生成ROM中,代碼A、B、C的起始地址一定要和其軟件本身設(shè)置的條件復(fù)位地址一致。即應(yīng)注意加載程序ROM中A、B、C的位置應(yīng)和A、B、C中軟件設(shè)置的條件復(fù)位地址保持一致性,否則程序?qū)⒉荒苷_\行。
這樣實現(xiàn)在不需要額外的RAM開銷情況下程序的動態(tài)加載,最大限度地利用DSP的內(nèi)存空間,有利于大量的程序放入DSP內(nèi)運行。
實施例2(1)將DSP外接的ROM存放的程序按功能模塊化,模塊化程序分為代碼A、B段。
ROM存儲器代碼放置加載程序代碼段、A代碼段、B代碼段。
(2)將DSP連接RAM的一個空間X定義為加載程序中的加載起始碼地址和加載條件的空間,其余為程序運行空間;(3)修改加載程序中的加載A代碼段、B代碼段起始碼地址,并確定模塊化的代碼段A代碼段、B代碼段的加載條件;實施例3(1)將DSP外接的ROM存放的程序按功能模塊化,模塊化程序分為代碼A、B、C段、D段、E段。
ROM存儲器代碼放置加載程序代碼段、A代碼段、B代碼段、C代碼段。D代碼段、E代碼段。
(2)將DSP連接RAM的一個空間Y設(shè)置為存儲加載程序中的加載起始碼地址和加載條件的空間;其余為程序運行空間;(3)修改加載程序中的加載起始碼地址,并確定模塊化的代碼段的加載條件;定義單元Y為十六進制0X00ABCDEF時,加載程序代碼運行后跳轉(zhuǎn)至代碼B加載程序;單元Y為十六進制0X00FEDCBA時,加載程序代碼運行后跳轉(zhuǎn)至代碼C加載程序;單元Y為十六進制0XABCDEF00時,加載程序代碼運行后跳轉(zhuǎn)至代碼D加載程序;單元Y為十六進制0XFEDCBA00時,加載程序代碼運行后跳轉(zhuǎn)至代碼E加載程序;單元Y為非十六進制0X00ABCDEF、0X00FEDCBA、0XABCDEF00、0XFEDCBA00時,加載程序代碼運行后跳轉(zhuǎn)至代碼A加載程序。
1)設(shè)備在初次加電時,RAM單元Y的數(shù)為隨機數(shù),不滿足加載B、C、D和E代碼段,加載代碼A,進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼B時,DSP運行程序?qū)AM單元Y數(shù)改寫為0X00ABCDEF,且DSP重新復(fù)位。
2)由于RAM單元Y數(shù)據(jù)為0X00ABCDEF,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼B,即代碼B進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼C時,DSP運行程序?qū)AM單元Y數(shù)改寫為0X00FEDCBA,且DSP重新復(fù)位。
3)由于RAM單元Y數(shù)據(jù)為0X00FEDCBA,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼C,即代碼C進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼E時,DSP運行程序?qū)AM單元Y數(shù)改寫為0XFEDCBA00,且DSP重新復(fù)位。
4)由于RAM單元Y數(shù)據(jù)為0XABCDEF00,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼D,即代碼D進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼B時,DSP運行程序?qū)AM單元Y數(shù)改寫為0X00ABCDEF,且DSP重新復(fù)位。
5)由于RAM單元Y數(shù)據(jù)為0X00ABCDEF,故DSP復(fù)位后在運行加載程序時根據(jù)判斷的條件將加載代碼B,即代碼B進入DSP運行環(huán)境運行。當外部選擇信號要求DSP運行代碼A時,DSP運行程序?qū)AM單元Y數(shù)改寫為不是0X00ABCDEF、0X00FEDCBA、0XABCDEF00、0XFEDCBA00的以外的數(shù),且DSP重新復(fù)位,則DSP將加載代碼A,并運行。
如此反復(fù),任何一段代碼運行時均可通過改寫RAM單元Y的數(shù)據(jù)實現(xiàn)對其他代碼段的加載,實現(xiàn)了程序的動態(tài)加載。
在生成ROM中,代碼A、B、C、D、E的起始地址一定要和其軟件本身設(shè)置的條件復(fù)位地址一致。即應(yīng)注意加載程序ROM中A、B、C、D、E的位置和A、B、C、D、E中軟件設(shè)置的條件復(fù)位地址保持一致性,否則程序?qū)⒉荒苷_\行。
這樣實現(xiàn)在不需要額外的RAM開銷情況下程序的動態(tài)加載,最大限度地利用DSP的內(nèi)存空間,有利于大量的程序放入DSP內(nèi)運行。
權(quán)利要求
1.一種運用于DSP的動態(tài)加載方法,其操作步驟為(1)DSP外接的ROM存放的程序按功能模塊化,模塊化程序分為代碼段,在代碼段中必須有加載其它代碼段程序的條件;(2)定義與DSP連接RAM的一個RAM空間X作為加載程序中的加載起始碼地址和加載條件的RAM空間,其余為程序運行空間;(3)修改加載程序中的加載起始碼地址,并確定模塊化的代碼段的加載條件。
2.如權(quán)利要求1所述的運用于DSP的動態(tài)加載方法,其特征在于所述的代碼段為至少為二段。
全文摘要
本發(fā)明一種運用于DSP的動態(tài)加載方法涉及一種運用于數(shù)字信號處理器的動態(tài)加載方法,特別涉及一種運用于DSP的動態(tài)加載程序的方法,本發(fā)明是利用ADSP21065本身的加載程序和軟件復(fù)位程序,修改其加載起始地址而實現(xiàn),使用本發(fā)明方法后在不需要額外的RAM開銷情況下程序的動態(tài)加載,可最大限度的利用DSP的內(nèi)存空間,有利于大量的程序放入DSP內(nèi)運行。
文檔編號G06F9/445GK1629805SQ20031010405
公開日2005年6月22日 申請日期2003年12月18日 優(yōu)先權(quán)日2003年12月18日
發(fā)明者饒志宏, 謝瑞云, 彭勃 申請人:中國電子科技集團公司第三十研究所