本發(fā)明涉及一種運用于DSP的功能模塊動態(tài)加載方法。
背景技術(shù):
DSP芯片是一個通用模塊,作為資源管理的核心功能模塊,解決諸多項目的資源管理需求,并為項目設(shè)備提供個性功能服務(wù)(個性服務(wù)的功能數(shù)量不統(tǒng)一,運行參數(shù)不統(tǒng)一)。DSP需對諸多項目的需求進行分解,將通用功能固化在主控程序中,將各項目個性化的資源管理需求、功能需求以功能模塊的形式“動態(tài)加載”,實現(xiàn)DSP芯片對項目的支撐。
當(dāng)前DSP功能模塊動態(tài)加載時,其功能模塊的大小、運行空間往往是事先固定的,當(dāng)功能模塊因變化需調(diào)整運行空間或大小時,DSP主控程序也需要做相應(yīng)調(diào)整才能適應(yīng)功能模塊的變化。原有的功能模塊執(zhí)行碼的產(chǎn)生方式也存在缺陷,無法在功能模塊中增加變量或固化數(shù)據(jù)。上述缺點,給功能模塊的管理和功能擴展帶來不便。
技術(shù)實現(xiàn)要素:
為了克服現(xiàn)有技術(shù)的上述缺點,本發(fā)明提供了一種運用于DSP的功能模塊動態(tài)加載方法。
本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是:一種運用于DSP的功能模塊動態(tài)加載方法,包括如下步驟:
第一步、為主控邏輯和功能模塊劃分運行空間;
第二步、明確功能模塊的對外接口,確保具有相似功能的模塊的接口或彼此可替換的功能模塊的接口,都是一致的;
第三步、分別形成主控邏輯的工程和功能模塊的工程:
1)主控邏輯的代碼單獨形成一個獨立工程;
2)每個功能模塊的代碼單獨形成一個獨立工程;
3)形成獨立的主控邏輯目標(biāo)碼;
4)形成功能模塊的執(zhí)行碼;
第四步、完成功能模塊的描述信息;
第五步、形成功能模塊的目標(biāo)碼;
第六步、主控邏輯根據(jù)功能模塊的目標(biāo)碼對功能模塊進行加載、卸載、更新、刪除操作。
與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果是:
(1)功能模塊目標(biāo)碼與主控邏輯目標(biāo)碼可分別產(chǎn)生,單獨更換;
(2)功能模塊與主控邏輯基于接口進行交互,耦合性低;
(3)功能模塊可存儲變量或固化數(shù)據(jù);
(4)主控邏輯可按需動態(tài)加載功能模塊。
附圖說明
本發(fā)明將通過例子并參照附圖的方式說明,其中:
圖1為本發(fā)明的工作原理示意圖。
具體實施方式
DSP芯片屬于嵌入式芯片,該芯片在無操作系統(tǒng)的情況下,其內(nèi)存資源是全局一致的。在產(chǎn)生DSP的主控邏輯和功能模塊時,只要預(yù)先規(guī)劃好主控邏輯和功能模塊的運行空間(內(nèi)存范圍),使兩部分內(nèi)存不存在交集,則主控邏輯和功能模塊在運行時均可正常運行。其空間分配示意圖如圖1所示:
(1)主控邏輯
主控邏輯負(fù)責(zé)DSP的主要功能和共性功能,負(fù)責(zé)所有功能的調(diào)度,并維護DSP運行的狀態(tài)。
(2)功能模塊
獨立分割出來的功能或多個功能的集合。
首先需針對DSP做整體規(guī)劃,劃分出主控邏輯與功能模塊的運行空間。
其次,制定標(biāo)準(zhǔn)的功能模塊目標(biāo)碼描述信息。該信息記錄了具體功能模塊的運行空間、模塊特征等信息,并且該信息可被主控邏輯正確識別。主控邏輯根據(jù)此信息可正確加載功能模塊,提取功能模塊接口使用。
第一步,為主控邏輯和功能模塊劃分運行空間。主控邏輯與功能模塊的運行空間不要出現(xiàn)重疊,功能模塊的運行空間盡量大,以便容納足夠的功能模塊。
第二步,明確功能模塊的對外接口,需確保具有相似功能的模塊的接口或彼此可替換的功能模塊的接口,都是一致的。
第三步,分別形成主控邏輯的工程和功能模塊的工程。
1)主控邏輯的代碼單獨形成一個獨立工程。主控邏輯的獨立工程,必須與第一步中規(guī)劃的主控邏輯運行空間一致。
2)功能模塊的代碼單獨形成獨立工程(如果需要多個功能模塊,就每個功能模塊形成一個獨立工程)。每個功能模塊的獨立工程,都必須與第一步中規(guī)劃的功能模塊運行空間一致。如果有多個功能模塊,需確保所有功能模塊的運行空間,彼此不重疊,且均在第一步規(guī)劃的功能模塊運行空間中。
DSP的工程編譯完成后,常見的section包括.text、.const、.cinit、.far、.bss、.stack、switch和.sysmem。其中,.text、.const、.far、.bss、.switch是必須放置在規(guī)劃的功能模塊運行空間,且不與其它功能模塊的運行空間重疊。而.cinit、.stack最終不會作為功能模塊的目標(biāo)碼,可配置到任何空間。.sysmem根據(jù)功能模塊實際情況選擇,如無需使用,則可配置到任何空間。該功能模塊的各函數(shù)接口,需使用自定義section定位到該功能模塊運行空間的起始地址。
3)形成獨立的主控邏輯目標(biāo)碼。
4)用本專利方法形成功能模塊的執(zhí)行碼。
功能模塊的執(zhí)行文件.out形成后,使用DSP的模擬器加載此執(zhí)行文件,并運行到main函數(shù)入口。此時,使用DSP的內(nèi)存存儲功能,將該功能模塊的內(nèi)存空間中的有效數(shù)據(jù)(該數(shù)據(jù)大小,可根據(jù).map文件獲得),存儲成二進制文件。此二進制文件就是功能模塊的執(zhí)行碼。
第四步,完成功能模塊的描述信息。使用XML文件,對該功能模塊進行描述,如:運行空間的起始地址,名稱等,并可針對功能模塊的特點,調(diào)整或添加描述信息。該描述信息,可使主控程序知悉功能模塊的特點,并便于功能模塊的擴展和管理。
第五步,形成功能模塊的目標(biāo)碼。將功能模塊的描述信息和功能模塊的執(zhí)行碼,用自定義結(jié)構(gòu)“打包”,形成一個具有自描述信息的整體。該整體是功能模塊的目標(biāo)碼。
執(zhí)行上述步驟后,主控邏輯可根據(jù)功能模塊的目標(biāo)碼,得到功能模塊的信息,便于根據(jù)具體的工作需求,隨時對功能模塊進行加載、卸載、更新、刪除等操作。對于N選1方式使用功能模塊,同一時間主控邏輯僅加載一個功能模塊,降低了對芯片內(nèi)存空間的需求。