當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]HI-TECH C編譯器的PICC18命令行驅(qū)動

PICl8F系列產(chǎn)品是美國微芯科技公司的高檔產(chǎn)品,用戶多采用C語言進行編程設(shè)計,HI-TECH SoftwarePty.Ltd.公司的PICC18編譯器得到了廣泛應(yīng)用。大部分應(yīng)用者使用MPLAB集成環(huán)境進行編程(見參考文獻),在一些重要或大型應(yīng)用的開發(fā)中有一些問題。例如,如何編寫C語言的庫文件,如何對有代碼限制的程序進行編譯等,若只是采用傳統(tǒng)方式編程,則達不到應(yīng)有的效果。本文所闡述的HI-TECH C編譯器的PICC18命令行驅(qū)動,正是要解決這些問題。

1 HI-TECH C編譯器

HI-TECH C編譯器提供了C語言的標準特性,同時還加上許多為了適應(yīng)PIC系列單片機的特定硬件特性而設(shè)計的擴展功能,并與匯編器集成在一起提供共享鏈接器和庫管理工具,因而應(yīng)用較為廣泛。

當(dāng)編譯一個程序時,就有許多操作既可由命令行驅(qū)動程序CLD(command-line driver),也可由HPD集成環(huán)境驅(qū)動程序(覡在為HI-TIDE)獨立完成。在任一情況下,HPD或CLD(HPD下的菜單選項,或CLD的命令行)采用編程者指定的選項來決定哪一個內(nèi)部應(yīng)用需要執(zhí)行,以
及什么選項需要發(fā)送給每個應(yīng)用。

用戶提供的適合于目標系統(tǒng)的C語言源程序、匯編語言程序,都可以用CLD或HPD進行操作。當(dāng)用CLD時,用命令行的任何命令來選擇操作方式;當(dāng)使用HPD時,在源文件列表對話框中鍵入需要的文件。

通常使用的源程序可以被編譯到一個庫文件中,這樣文件可被編譯器更方便地處理、更快速地訪問。編譯器可以像其他源文件一樣直接接收庫文件,并用.lib擴展名指定文件的類型,因而庫文件必須按這種方式命名。庫文件在使用CLD時,用命令行的任何命令來選擇操作方式;或使用HPD時,在“源文件列表…”對話框中鍵入需要的庫文件。

實際上,在使用MPLAB IDE集成環(huán)境進行開發(fā)時,是使用了CLD的,只是在平常的應(yīng)用中沒有注意到而已。下面是在MPLAB IDE中對C源文件進行編譯的結(jié)果:



從上面的結(jié)果可以看出,編譯器使用了CLD命令,二者是可以統(tǒng)一。只有了解了CLD后,才能對HI-TECHC編譯器有更深入的理解和掌握。

2 PICC18命令行驅(qū)動器

PICC18是調(diào)用DOS命令行的驅(qū)動器,用來編譯和/或鏈接C語言程序的。PICC18的基本命令格式為:

PICC18[選項]files[文件庫]

通常在文件名之前用破折號“——”來識別,實際上這不是必須的。文件可以是源文件(C或匯編程序)和目標文件的混合。文件庫是庫名字的一個列表,或一L選項源文件。目標文件和庫文件通過文件類型或擴展名被PICC18區(qū)分,類型如表1所列。



PICC18將檢查每個文件并完成適當(dāng)?shù)牟僮?。C文件將被編譯,匯編文件將被匯編。最后,所有通過編譯或匯編得到的目標文件或者在命令行中明確列出的目標文件,都將與標準運行代碼庫和任何用戶指定庫鏈接,除非它們被某種選項禁止。僅當(dāng)引用源代碼時,庫中函數(shù)才能被鏈接成結(jié)果輸出文件。僅用目標文件(如沒有源文件)作為凋用PICC18,意味著僅執(zhí)行鏈接階段,這是一種典型的用法。用PICC18的C選項編譯幾個自己編寫的源文件作為目標文件,然后僅用生成的目標文件和適當(dāng)?shù)膸?及適當(dāng)選項)調(diào)用PICC18來創(chuàng)建最終程序。 [!--empirenews.page--]

2.1 長命令行

PICC18驅(qū)動器是32位的視窗軟什,可以處理超過128字符長的命令行。驅(qū)動器可以通過DOS的批文件調(diào)用,或通過命令文件傳遞選項。當(dāng)使用批文件時,送入PICC18的命令行必須列成一行。在命令文件中,驅(qū)動器選項可以被傳送至多行,這是通過一個空格鍵緊接一個反斜線“\”再接一個回車鍵來分開各行實現(xiàn)的。例如,一個命令文件可以包含:



因為沒有提供命令行指令,因此PICC18將讀xyz.cmd得到它的命令行指令。命令文件也可以通過@符號讀出。

例如:PICC18@xyz.cmd

2.2 PICC18編譯器選項

編譯器的設(shè)定主要基于ROM代碼的生成。表2列出了PICC18編譯器的幾個常用的重要選項。


①定義處理器類型:-processor。

這一選項決定了哪個處理器被使用。例如,用命令行-18c452來編澤PICl8C452。用戶也可以增加自己的處理器到編譯器。

②指定ROM偏移量:-Aaddress。

-A選項是用來為ROM映像區(qū)指定基地址的。若該選項要求引導(dǎo)輸入這樣的調(diào)試工具,則該詞試工具期望ROM映射地址始于非零地址。該選項影響所有基于ROM的部分,包括復(fù)位和中斷向量,以及放置代碼和常量數(shù)據(jù)的鏈接器分類。如果基地址指定到外部存儲器,則必須用-ROM選項指定外部存儲器的可用地址范圍。

③優(yōu)化器及優(yōu)化優(yōu)先級選項:-O和-Zg。

-O表示調(diào)用PICC18的優(yōu)化器,-Zg選項在代碼生成路徑調(diào)用全局優(yōu)先級。這對于代碼長度的縮減及內(nèi)部RAM的使用有著重要意義。該優(yōu)先級沒有傳遞優(yōu)先級苛刻,但對代碼長度的縮減很有意義。在一個執(zhí)行函數(shù)的基礎(chǔ)上,全局優(yōu)先級可以最優(yōu)化寄存器的使用。它也利用代碼中常最的傳遞來避免不必要的存儲器訪問。

該選項默認的級為1(最低優(yōu)先級)。優(yōu)先級可以設(shè)置為l~9的任意一級(9為最高優(yōu)先級)。數(shù)字表明優(yōu)先級試圖縮減代碼的程度。對于PICC18,高于3的優(yōu)先級通常沒有什么用處。

了解了命令行驅(qū)動后,對第1節(jié)中在MPLAB IDE中對C源文件進行編譯的例子就有了更深入的理解。

3 命令行驅(qū)動應(yīng)用

下面介紹命令行驅(qū)動在實際應(yīng)用中的一些例子。通過這些例子,可以對命令行驅(qū)動的應(yīng)用有一個初步的認識,并可以此為基礎(chǔ),對PICC18編譯器進行深入的學(xué)習(xí)和應(yīng)用。

3.1 命令行驅(qū)動編譯源文件

在Win2000下進行如下操作:執(zhí)行“開始”→“運行”命令,然后輸入“CMD”;或執(zhí)行“開始”→“程序”→“附件”→“命令提示符”命令,彈出cmd.exe的界面,如圖1所示。若cmd.exe中出現(xiàn)的當(dāng)前目錄不是在C盤根目錄下,則需要通過輸入命令“cd c:\”進入C盤根目錄。輸入“cd htsoft\picl8\bin”命令,進入PICC18.exe軟件所在目錄 (默認安裝時的目錄),如圖2所示。

[!--empirenews.page--]

(1)編譯Izqmwyz.c

輸入“PICC18-18f458 lzqmwyz.c”,含義是使用PICC18.exe編譯器對lzqmwyz.c源文件進行編譯,單片機型號為
18f458(即PIC18F458單片機)。這時會輸出所需要的編譯結(jié)果,生成的文件中,以hex為擴展名的lzqmwyz.hex較為重要。若源程序有語法錯誤,還會顯示出錯信息及所在的行。

注意:在cmd.exe界面中進行操作時,所有的源文件均存放在PICC18.exe同一目錄下(PICC18.exe默認安裝目錄是c:\HTSOFT\PIC18\Bin)。在本文中,PICC18均采用此默認安裝目錄。這里lzqmwyz.c存放在c:\HTSOFT\PICl8\Bin下。

(2)-noerrata選項

“-noerrata”選項不使能輸出代碼的錯誤修改,而缺省時,會對編譯器的輸出代碼有所修改。有些芯片沒有正誤表,不會用編譯器對此修改。這個選項可以用編譯器來禁止任何正誤表方位。當(dāng)正誤表變化時,會安全禁止。對有些芯片(如PIC18F458等),PICC18對程序的代碼長度進行了限制(一般限制在0x4000之內(nèi),即16KB之內(nèi))。這就是同上的PICl8應(yīng)用論壇中。有些網(wǎng)友提出代碼有限制的原因。有些編程者則在程序中編寫了下面的提示程序:




若編譯的程序代碼超出了這個范圍,將會列出出錯信息。

圖3是對solar050408.c源文件編譯時,代碼超過了Ox4000長度時出現(xiàn)的提示信息。

使用-noerrata選項時,solar050408.c源文件編譯就會得到正確的編譯結(jié)果,命令為“PICC18-18f458solar050408.c-o-zgl-noerrata”。命令中“-o”表示調(diào)用PICC18的優(yōu)化器,“-zg1”表示調(diào)用優(yōu)化器時采用的優(yōu)先級為1級。



3.2 庫文件生成及應(yīng)用

3.2.1 C源文件

(1)包含main函數(shù)的lzqmwyzl.c源文件


[!--empirenews.page--]
(2)包含function_X3函數(shù)的funcx3.c源文件



3.2.2 生成庫文件

用3.2.1中的兩個文件直接創(chuàng)建一個應(yīng)用程序,這在平時的應(yīng)用中是經(jīng)常用到的。這里介紹將funcx3.c源文件生成庫文件,再由lzqmwyz.c調(diào)用的方法,也就是自己制作庫文件進行使用。

(1)生成obj文件

將funcx3.c源文件存放在PICC18.exe同一目錄下,然后在cmd.exe中輸入“PICC18-18f458-C funcx3.c”。-C選項是將幾個源文件編譯成目標文件(.obj文件)。這里是將funcx3.c的源文件編譯成funcx3.obj文件,然后就可以在c:\HTSOFT\PICl8\Bin目錄下找到funcx3.obj文件。

(2)生成lib庫文件

在cmd.exe中輸入“libr r fun.lib runcx3.obj”。其中r選項為替換模塊。fun.lib是由函數(shù)funcx3.c制作的庫文件的文件名,如圖4所示。



3.2.3 庫文件應(yīng)用

圖5是使用3.2.1的lzqmwyzl.c源文件和調(diào)用3.2.2制作的庫文件fun.1ib的工程。這時使用到的就只有l(wèi)zqmwyzl.c源文件和fun.1ib文件,而不必再應(yīng)用包含runetton_X3函數(shù)的funcx3.c源文件。



結(jié)語

PICC18編譯器命令行驅(qū)動在實踐中有許多應(yīng)用,只有了解了它,才能對C編譯器有更多、更深入的認識。限于篇幅,本文只起拋磚引玉的作用,提供一種思路供廣大編程者參考;同時,對于PICC也有相應(yīng)的參考價值。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉