新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Freescale 9S12 系列單片機應用筆記(libmaker)

        Freescale 9S12 系列單片機應用筆記(libmaker)

        作者: 時間:2016-11-20 來源:網絡 收藏
        飛思卡爾提供的9S12系列單片機開發工具包 CodeWarrior Development Studio中包含一個非常有用的工具 libmaker, 可以將編譯后的 obj 文件打包為庫文件。還可以對現有的庫文件進行一些基本的修改。這東東有什么用呢,首先,將一系列的 obj 文件打包為庫文件后會提高最后的 Link 階段的速度。還可以將自己一些不愿公開的代碼打包為庫文件,有助于知識產權的保護。


        不說廢話了,還是以一系列的例子來說明問題。首先假設我們的項目中有三個源文件。分別如下:

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


        1. /*add1.c*/
        2. charadd1(chara){returna+1;}
        3. /*add2.c*/
        4. charadd2(chara){returna+2;}
        5. /*add3.c*/
        6. charadd1(chara){returna+3;}


        這3個文件真是沒個性,不過對于說明問題已經夠用了。

        編譯后會形成三個 Object 文件:add1.c.o add2.c.o add3.c.o

        然后可以利用 libmaker 將這三個 object 文件打包為庫文件了。這里需要些命令行操作,不熟悉的可以找些 win 批處理文件的教程看看。

        首先,在 .o 文件所在目錄建個 a.bat 的批處理文件。里面加入兩行代碼:

        set PATH="D:Program FilesFreescaleCWS12v5.1Prog";%PATH%cmd /k


        如果你的CWS12安裝在不同的目錄,請做相應的修改。然后雙擊 a.bat 文件,會打開一個命令行窗口,并且設置好環境變量。

        執行下面的命令:

        Libmaker -Cmd( add1.c.o + add2.c.o + add3.c.o = add.lib)

        上面命令的 + 號可以省略,寫為:

        Libmaker -Cmd( add1.c.o add2.c.o add3.c.o = add.lib)

        執行的結果是相同的,都是產生 add.lib 文件。好了,庫文件已經生成了。可以測試了。在 main.c 中加幾行:


        1. add1(chara);
        2. charadd2(chara);
        3. charadd3(chara);
        4. voidmain(void)
        5. {
        6. unsignedintdata;
        7. SCIInit();
        8. SCISetBaudRate(SCI0,9600,8192000L);
        9. EnableInterrupts;
        10. data=1;
        11. data=add1(data);SCIPutChar(SCI0,data);
        12. data=add2(data);SCIPutChar(SCI0,data);
        13. data=add3(data);SCIPutChar(SCI0,data);
        14. for(;;)
        15. {
        16. _FEED_COP();/*feedsthedog*/
        17. }/*loopforever*/
        18. }



        上面代碼中加了些串口操作是為了防止編譯器自作聰明的把我的代碼優化掉。然后將 add.lib 加入到項目中,編譯。一切OK!

        Libmaker 還有些其他的功能,下面給一些簡單的例子。

        將一個obj 文件添加到現有庫文件中,語法如下:

        Libmaker -Cmd(add.lib + add4.c.o = add.lib)

        將一個 obj 文件移出 庫文件:

        Libmaker -Cmd(add.lib - add1.c.o = add.lib)

        知道這些就夠一般的應用了。如果還需要了解更多,請參看 Build Tools Utilities Manual。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 民勤县| 潜江市| 星座| 久治县| 鸡东县| 天峨县| 龙川县| 马山县| 天长市| 突泉县| 昔阳县| 策勒县| 吉安县| 富裕县| 宝兴县| 宝应县| 探索| 扬州市| 彝良县| 朔州市| 广饶县| 大渡口区| 金湖县| 柳江县| 青川县| 杂多县| 井陉县| 正镶白旗| 栖霞市| 荣昌县| 永登县| 洛浦县| 剑川县| 蓬溪县| 沈丘县| 梁山县| 阿拉善左旗| 武夷山市| 武清区| 青神县| 本溪市|