<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Freescale 9S12 系列單片機(jī)應(yīng)用筆記(libmaker)

          Freescale 9S12 系列單片機(jī)應(yīng)用筆記(libmaker)

          作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò) 收藏
          飛思卡爾提供的9S12系列單片機(jī)開(kāi)發(fā)工具包 CodeWarrior Development Studio中包含一個(gè)非常有用的工具 libmaker, 可以將編譯后的 obj 文件打包為庫(kù)文件。還可以對(duì)現(xiàn)有的庫(kù)文件進(jìn)行一些基本的修改。這東東有什么用呢,首先,將一系列的 obj 文件打包為庫(kù)文件后會(huì)提高最后的 Link 階段的速度。還可以將自己一些不愿公開(kāi)的代碼打包為庫(kù)文件,有助于知識(shí)產(chǎn)權(quán)的保護(hù)。


          不說(shuō)廢話了,還是以一系列的例子來(lái)說(shuō)明問(wèn)題。首先假設(shè)我們的項(xiàng)目中有三個(gè)源文件。分別如下:

          本文引用地址:http://www.ex-cimer.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個(gè)文件真是沒(méi)個(gè)性,不過(guò)對(duì)于說(shuō)明問(wèn)題已經(jīng)夠用了。

          編譯后會(huì)形成三個(gè) Object 文件:add1.c.o add2.c.o add3.c.o

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

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

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


          如果你的CWS12安裝在不同的目錄,請(qǐng)做相應(yīng)的修改。然后雙擊 a.bat 文件,會(huì)打開(kāi)一個(gè)命令行窗口,并且設(shè)置好環(huán)境變量。

          執(zhí)行下面的命令:

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

          上面命令的 + 號(hào)可以省略,寫(xiě)為:

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

          執(zhí)行的結(jié)果是相同的,都是產(chǎn)生 add.lib 文件。好了,庫(kù)文件已經(jīng)生成了。可以測(cè)試了。在 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. }



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

          Libmaker 還有些其他的功能,下面給一些簡(jiǎn)單的例子。

          將一個(gè)obj 文件添加到現(xiàn)有庫(kù)文件中,語(yǔ)法如下:

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

          將一個(gè) obj 文件移出 庫(kù)文件:

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

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



          評(píng)論


          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();