新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > μC/OS-II在DSP Flash存儲器中的問題

        μC/OS-II在DSP Flash存儲器中的問題

        作者: 時間:2016-10-08 來源:網絡 收藏

        2.2方法3:修改數據段的定位方式和庫函數

        本文引用地址:http://www.104case.com/article/201610/305919.htm

        這種方式除了要修改.const段的裝載地址和運行地址外,還要對CCS自帶的初始化函數進行修改。但是這種方法是一勞永逸的。

        對.const段的修改如下:

        程序

        即采用了裝載地址與運行地址分離的方式,將.const載入ROM段,而運行時在RAM區。為了使程序正常運行,在初始化時,需要將.const段的內容從裝載地址拷貝到運行地址內。這段程序可以在編譯時由編譯器自動生成。這還需要對軟件所使用的庫文件作簡單的修改。該庫名稱即是rts.lib(表示不同類型的DSP,有2xx、25、50等)。修改該庫的方法是將源文件從庫中提取出來進行修改,編譯后再替代原有的文件。具體操作如下:

        a)將庫函數rts2xx.lib、源文件rts.src、兩個工具函數dspar.exe和dspa.exe找到,放在同意個目錄下,打開ms_dos命令窗。

        b)執行DOS命令:

        程序

        這句的功能是從rts.src文件中提取出boot.asm文件。這個rts.src即是rts.lib的源文件。在boot.asm文件中能找到CONST_COPY這個標志量,為了實現所需要的功能,它應被賦值為1。對boot.asm文件的編輯完成之后,就可以將其編譯生成目標文件,執行語句:

        程序

        其中對于不同的DSP需要使用不同的參數,對于240xA來說,應該使用2xx來代替“”。語句執行完后會生成boot.obj文件。再執行語句:

        程序

        這時它就替換了庫里的同名文件。在編譯時編譯器就會自動增加拷貝.const段到數據空間的語句。這種方法不必修改程序,代價是犧牲了一定的數據存儲空間,時間開銷主要出現在初始化中。這應該是最經濟實用的方法。

        3結束語

        對常量處理的3種方法中,第方法1和方法3相對較容易實現。其中方法1對于自己編寫的少量代碼修改起來比較方便,但是如果碰到庫函數中用到.const的情況,就需要像第方法3一樣提取庫函數中的代碼,來修改這個庫函數,在挖掘機軌跡控制程序中用到atan函數就是這種情況。這種做法對每個這樣的函數都要執行同樣的操作,顯然不是最佳解決辦法。

        方法3雖然必須修改cmd文件和庫文件,但是它是一勞永逸的。生成相應的庫函數和cmd文件以后,對任何帶有const的代碼都不再需要做任何修改。所以這種方法也是TI推薦的方法,在TI的數據手冊TMS320C2x/C2xx/C5x Optimizing C Compiler User’sGuide(SPRU024E)中有對它的說明。

        本課題已經通過國家863計劃專家組的驗收,該智能化挖掘機軌跡控制系統已經交付柳工使用。


        上一頁 1 2 下一頁

        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 桐城市| 三明市| 鞍山市| 牙克石市| 珠海市| 东山县| 青铜峡市| 眉山市| 山西省| 乳山市| 上蔡县| 张掖市| 抚顺县| 丽水市| 浙江省| 德安县| 田东县| 将乐县| 兰溪市| 乌审旗| 佳木斯市| 奉化市| 丰镇市| 同仁县| 呈贡县| 万宁市| 团风县| 清流县| 卢湾区| 长治县| 平塘县| 阳曲县| 昌邑市| 弥勒县| 大兴区| 苏尼特右旗| 乃东县| 依兰县| 无为县| 富源县| 南华县|