新聞中心

        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 文件。好了,庫文件已經生成了??梢詼y試了。在 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。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 澄迈县| 理塘县| 古蔺县| 凤凰县| 灵石县| 安平县| 安宁市| 绩溪县| 蕲春县| 漳平市| 长武县| 乐陵市| 桑日县| 西城区| 安达市| 胶南市| 横峰县| 布拖县| 凤冈县| 靖边县| 新龙县| 剑川县| 封开县| 虹口区| 辽宁省| 文登市| 鄂伦春自治旗| 永州市| 沂南县| 永清县| 德格县| 榆社县| 保靖县| 奇台县| 灵石县| 邵阳市| 谢通门县| 蒙阴县| 安陆市| 措美县| 二手房|