機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
三種常用的嵌入式操作系統(tǒng)分析與比較
三種常用的嵌入式操作系統(tǒng)分析與比較
 更新時(shí)間:2009-12-31 16:35:35  點(diǎn)擊數(shù):0
【字體: 字體顏色
摘要:提要三種常用的嵌入式操作系統(tǒng)——Palm OS、Windows CE、Linux;在此基礎(chǔ)上、分析、比較這三種嵌入式操作系統(tǒng),給出它們之間的異同點(diǎn)及各自的適用范圍。

  關(guān)鍵詞:嵌入式系統(tǒng) 嵌入式操作系統(tǒng) Palm OS Windows CE Linux

1 嵌入式系統(tǒng)與嵌入式操作系統(tǒng)

1.1 嵌入式系統(tǒng)

  嵌入式系統(tǒng)是以嵌入式計(jì)算機(jī)為技術(shù)核心,面向用戶、面向產(chǎn)品、面向應(yīng)用,軟硬件可裁減的,適用于對功能、可靠性、成本、體積、功耗等綜合性能有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。

  嵌入式系統(tǒng)應(yīng)具有的特點(diǎn)是:高可靠性;在惡劣的環(huán)境或突然斷電的情況下,系統(tǒng)仍然能夠正常工作;許多嵌入式應(yīng)用要求實(shí)時(shí)性,這就要求嵌入式操作系統(tǒng)具有實(shí)時(shí)處理能力;嵌入式系統(tǒng)和具體應(yīng)用有機(jī)地結(jié)合在一起,它的升級換代也是具體產(chǎn)品同步進(jìn)行;嵌入式系統(tǒng)中的軟件代碼要求高質(zhì)量、高可靠性,一般都固化在只讀存儲器中或閃存中,也就是說軟件要求固態(tài)化存儲,而不是存儲在磁盤等載體中。

1.2 嵌入式操作系統(tǒng)

  嵌入式操作系統(tǒng)EOS (Embedded Operating System)是一種用途廣泛的系統(tǒng)軟件,過去它主要應(yīng)用于工業(yè)控制和國防系統(tǒng)領(lǐng)域。EOS負(fù)責(zé)嵌入系統(tǒng)的全部軟、硬件資源的分配、調(diào)度作,控制、協(xié)調(diào)并發(fā)活動;它必須體現(xiàn)其所在系統(tǒng)的特征,能夠通過裝卸某些模塊來達(dá)到系統(tǒng)所要求的功能。目前,已推出一些應(yīng)用比較成功的EOS產(chǎn)品系列。隨著 Internet技術(shù)的發(fā)展、信息家電的普及應(yīng)用及EOS的微型化和專業(yè)化,EOS開始從單一的弱功能向高專業(yè)化的強(qiáng)功能方向發(fā)展。嵌入式操作系統(tǒng)在系統(tǒng)實(shí)時(shí)高效性、硬件的相關(guān)依賴性、軟件固化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。EOS是相對于一般操作系統(tǒng)而方的,它除具備了一般操作系統(tǒng)最基本的功能,如任務(wù)調(diào)度、同步機(jī)制、中斷處理、文件處理等外,還有以下特點(diǎn):

①可裝卸性。開放性、可伸縮性的體系結(jié)構(gòu)。

②強(qiáng)實(shí)時(shí)性。EOS實(shí)時(shí)性一般較強(qiáng),可用于各種設(shè)備控制當(dāng)中。

③統(tǒng)一的接口。提供各種設(shè)備驅(qū)動接口。

④操作方便、簡單、提供友好的圖形GUI,圖形界面,追求易學(xué)易用。

⑤提供強(qiáng)大的網(wǎng)絡(luò)功能,支持TCP/IP協(xié)議及其它協(xié)議,提供TCP/UDP/IP/PPP協(xié)議支持及統(tǒng)一的MAC訪問層接口,為各種移動計(jì)算設(shè)備預(yù)留接口。

⑥強(qiáng)穩(wěn)定性,弱交互性。嵌入式系統(tǒng)一旦開始運(yùn)行就不需要用戶過多的干預(yù),這就要負(fù)責(zé)系統(tǒng)管理的EOS具有較強(qiáng)的穩(wěn)定性。嵌入式操作系統(tǒng)的用戶接口一般不提供操作命令,它通過系統(tǒng)的調(diào)用命令向用戶程序提供服務(wù)。

⑦固化代碼。在嵌入式系統(tǒng)中,嵌入式操作系統(tǒng)和應(yīng)用軟件被固化在嵌入式系統(tǒng)計(jì)算機(jī)的ROM中。輔助存儲器在嵌入式系統(tǒng)中很少使用,因此,嵌入式操作系統(tǒng)的文件管理功能應(yīng)該能夠很容易地拆卸,而用各種內(nèi)存文件系統(tǒng)。

⑧更好的硬件適應(yīng)性,也就是良好的移植性。

  國際上用于信息電器的嵌入式操作系統(tǒng)有40種左右。現(xiàn)在,市場上非常流行的EOS產(chǎn)品,包括3Com公司下屬子公司的Palm OS,全球占有份額達(dá)50%,Microsoft公司的Windows CE不過29%。在美國市場,Palm OS更以80%的占有率遠(yuǎn)超Windows CE。開放源代碼的Linux很適于做信息家電的開發(fā)。比如:中科紅旗軟件技術(shù)有限公司開發(fā)的紅旗嵌入式Linux和美商網(wǎng)虎公司開發(fā)的基于Xlinux 的嵌入式操作系統(tǒng)“夸克”!翱淇恕笔悄壳叭澜缱钚〉腖inux,它有兩具很突出的特點(diǎn),就是體積小和使用GCS編碼。

2 三種常用的嵌入式操作系統(tǒng)

2.1 Palm OS

  Palm是3Com公司的產(chǎn)品,其操作系統(tǒng)為Palm OS。Palm OS是一種32位的嵌入式操作系統(tǒng)。Palm提供了串行通信接口和紅外線傳輸接口,利用它可以方便地與其它外部設(shè)備通信、傳輸數(shù)據(jù);擁有開放的OS應(yīng)用程序接口,開發(fā)商可根據(jù)需要自行開發(fā)所需的應(yīng)用程序。Palm OS是一套具有術(shù)強(qiáng)開放性的系統(tǒng),現(xiàn)在有大約數(shù)千種專用為Palm OS編寫的應(yīng)用程序,從程序內(nèi)容上看,小到個(gè)人管理、游戲,大到行業(yè)解決方案,Palm OS無所不包。在豐富的軟件支持下,基于Palm OS的掌上電腦功能得以不斷擴(kuò)展。

  Palm OS是一套專門為掌上電腦開發(fā)的OS。在編寫程序時(shí),Palm OS充分考慮了掌上電腦內(nèi)存相對較小的情況,因此它只占有非常小的內(nèi)存。由于基于Palm OS編寫的應(yīng)用程序占用的空間也非常。ㄍǔV挥袔资甂B),所以,基于Palm OS的掌上電腦(雖然只有幾MB的RAM)可以運(yùn)行眾多應(yīng)用程序。

由于Palm產(chǎn)品的最大特點(diǎn)是使用簡便、機(jī)體輕巧,因此決定了Palm OS應(yīng)具有以下特點(diǎn)。

①操作系統(tǒng)的節(jié)能功能。由上掌上電腦要求使用電源盡可能小,因此在Palm OS的應(yīng)用程序中,如果沒有事件運(yùn)行,則系統(tǒng)設(shè)備進(jìn)入半休眠(doze)的狀態(tài);如果應(yīng)用程序停止活動一段時(shí)間,則系統(tǒng)自動進(jìn)入休眠(sleep)狀態(tài)。

② 合理的內(nèi)存管理。Palm的存儲器全部是可讀寫的快速RAM,動態(tài)RAM(Dynamic RAM)類似于PC機(jī)上的RAM,它為全局變量和其它不需永久保存的數(shù)據(jù)提供臨時(shí)的存儲空間;存儲RAM(Storage RAM)類似于PC機(jī)上的硬盤,可以永久保存應(yīng)用程序和數(shù)據(jù)。

③Palm OS的數(shù)據(jù)是以數(shù)據(jù)庫(database)的格式來存儲的。數(shù)據(jù)庫是由一組記錄(records)和一些數(shù)據(jù)庫頭信息組成的。為保證程序處理速度和存儲器空間,在處理數(shù)據(jù)的時(shí)候,Palm OS不是把數(shù)據(jù)從存儲堆(Storage Heap)拷貝到動態(tài)堆(Dynamic Heap)后再進(jìn)行處理,而是在存儲堆中直接處理。為避免錯誤地調(diào)用存儲器地址,Palm OS規(guī)定,這一切都必須調(diào)用其內(nèi)存管理器里的API來實(shí)現(xiàn)。

Palm OS與同步軟件(HotSync)結(jié)合可以使掌上電腦與PC機(jī)上的信息實(shí)現(xiàn)同步,把臺式同的功能擴(kuò)展到了掌上電腦。Palm應(yīng)用范圍相當(dāng)廣泛,如:聯(lián)絡(luò)及工作表管理、電子郵件及互聯(lián)網(wǎng)通信、銷售人員及組別自動化等等。Palm外圍硬件也十分豐富,有數(shù)碼相機(jī)、GPS接收器、調(diào)制解調(diào)器、GSM無線電話、數(shù)碼音頻播放設(shè)備、便攜鍵盤、語音記錄器、條碼掃描、無線尋呼接收器、探測儀。其中Palm與GPS結(jié)合的應(yīng)用,不但可以作導(dǎo)航定位,還可以結(jié)合GPS作氣候的監(jiān)測、地名調(diào)查等。

2.2 Windows CE

  Windows CE是微軟開發(fā)的一個(gè)開放的、可升級的32位嵌入式操作系統(tǒng),是基于掌上型電腦類的電子設(shè)備操作。它是精簡的Windows 95。Windows CE的圖形用戶界面相當(dāng)出色。其中CE中的C代表袖珍(Compact)、消費(fèi)(Consumer)、通信能力(Connectivity)和伴侶(Companion);E代表電子產(chǎn)品(Electronics)。與Windows 95/98、Windows NT不同的是,Windows CE是所有源代碼全部由微軟自行開發(fā)的嵌入式新型操作系統(tǒng),其操作界面雖來源于Windows 95/98,但Windows CE是基于Win32 API重新開發(fā)的、新型的信息設(shè)備平臺。Windows CE具有模塊化、結(jié)構(gòu)化和基于Win32應(yīng)用程序接口以及與處理器無關(guān)等特點(diǎn)。Windows CE不僅繼承了傳統(tǒng)的Windows圖形界面,并且在Windows CE平臺上可以使用Windows 95/98上的編程工具(如Visual Basic、Visual C++等)、使用同樣的函數(shù)、使用同樣的界面網(wǎng)格,使絕大多數(shù)的應(yīng)用軟件只需簡單的修改和移植就可以在Windows CE平臺上繼續(xù)使用。

  Windows CE的設(shè)計(jì)目標(biāo)是:模塊化及可伸縮性、實(shí)時(shí)性能好,通信能力強(qiáng)大,支持多種CPU。它的設(shè)計(jì)可以滿足多種設(shè)備的需要,這些設(shè)備包括了工業(yè)控制器、通信集線器以及銷售終端之類的企業(yè)設(shè)備,還有像照相機(jī)、電話和家用娛樂器材之類的消費(fèi)產(chǎn)品。一個(gè)典型的基于Windows CE的嵌入系統(tǒng)通常為某個(gè)特定用途而設(shè)計(jì),并在不聯(lián)機(jī)的情況下工作。它要求所使用的操作系統(tǒng)體積較小,內(nèi)建有對中斷的響應(yīng)功能。

Windows CE的特點(diǎn)有:

①具有靈活的電源管理功能,包括瞬眠/喚醒模式。

②使用了對象存儲(object store)技術(shù),包括文件系統(tǒng)、注冊表及數(shù)據(jù)庫。它還具有很多高性能、高效率的操作系統(tǒng)特 性,包括按需換頁、共享存儲、交叉處理同步、支持大容量堆(heap)等。

③擁有良好的通信能力。廣泛支持各種通信硬件,亦支持直接的局域連接以及撥號連接,并提供與PC、內(nèi)部網(wǎng)以及Internet的連接,還提供與Windows 9x/NT的最佳集成和通信。

④支持嵌套中斷。允許更高優(yōu)先級別的中斷首先得到響應(yīng),而不是等待低級別的ISR完成。這使得該操作系統(tǒng)具有嵌入式操作系統(tǒng)所要求的實(shí)時(shí)性。

⑤更好的線程響應(yīng)能力。對高級別IST(中斷服務(wù)線程)的響應(yīng)時(shí)間上限的要求更加嚴(yán)格,在線程響應(yīng)能力方面的改進(jìn),幫助開發(fā)人員掌握線程轉(zhuǎn)換的具體時(shí)間,并通過增強(qiáng)的監(jiān)控能力和對硬件的控制能力幫助他們創(chuàng)建新的嵌入式應(yīng)用程序。

⑥256個(gè)優(yōu)先級別?梢允归_發(fā)人員在控制嵌入式系統(tǒng)的時(shí)序安排方面有更大的靈活性。

⑦Windows CE的API是Win32 API的一個(gè)子集,支持近1500個(gè)Win32 API。有了這些API,足可以編寫任何復(fù)雜的應(yīng)用程序。當(dāng)然,在Windows CE系統(tǒng)中,所提供的API也可以隨具體應(yīng)用的需求而定。

在掌上型電腦中,Windows CE包含如下一些重要組件:Pocket Outlook及其組件、語音錄音機(jī)、移動頻道、遠(yuǎn)程撥號訪問、世界時(shí)鐘、計(jì)算器、多種輸入法、GBK字符集、中文TTF字庫、英漢雙向詞典、袖珍瀏覽器、電子郵件、Pocket Office、系統(tǒng)設(shè)置、Windows CE Services軟件。

2.3 Linux

  Linux是一個(gè)類似于Unix的操作系統(tǒng)。它起源于芬蘭一個(gè)名為Linus Torvalds的業(yè)余愛好,但是現(xiàn)在已經(jīng)是最為流行的一款開放源代碼的操作系統(tǒng)。Linux從1991年問世到現(xiàn)在,短短10年的時(shí)間內(nèi)已發(fā)展成為一個(gè)功能強(qiáng)大、設(shè)計(jì)完善的操作系統(tǒng),伴隨網(wǎng)絡(luò)技術(shù)進(jìn)步而發(fā)展起來的Linux OS已成為Microsoft公司的DOS和Windows 95/98的強(qiáng)勁對手。Linux系統(tǒng)不僅能夠運(yùn)行于PC平臺,還在嵌入式系統(tǒng)方面大放光芒,在各種嵌入式Linux OS迅速發(fā)展的狀況下,Linux OS逐漸形成了可與Windows CE等EOS進(jìn)行抗衡的局面。目前正在開發(fā)的嵌入式系統(tǒng)中,49%的項(xiàng)目選擇Linux作為嵌入式操作系統(tǒng)。Linux現(xiàn)已成為嵌入式操作的理想選擇。

  中科紅旗軟件技術(shù)有限公司開發(fā)的紅旗嵌入式Linux正在成為許多嵌入式設(shè)備廠商的首選。在不到一年的時(shí)間內(nèi),紅旗公司先后推出了PDA、機(jī)頂盒、瘦客戶機(jī)、交換機(jī)用的嵌入式Linux系統(tǒng),并且投入了實(shí)際應(yīng)用,F(xiàn)以紅旗嵌入式Linux為例來講解嵌入式Linux OS的特點(diǎn):

①精簡的內(nèi)核,性能高、穩(wěn)定,多任務(wù)。

②適用于不同的CPU,支持多種體系結(jié)構(gòu),如X86、ARM、MIPS、ALPHA、SPARC等。

③能夠提供完善的嵌入式GUI以及嵌入式X-Windows。

④提供嵌入式瀏覽器、郵件程序、MP3播放器、MPEG播放器、記事本等應(yīng)用程序。

⑤提供完整的開發(fā)工具和SDK,同時(shí)提供PC上的開發(fā)版本。

⑥用戶可定制,可提供圖形化的定制和配置工具。

⑦常用嵌入式芯片的驅(qū)動集,支持大量的周邊硬件設(shè)備,驅(qū)動豐富。

⑧針對嵌入式的存儲方案,提供實(shí)時(shí)版本和完善的嵌入式解決方案。

⑨完善的中文支持,強(qiáng)大的技術(shù)支持,完整的文檔。

⑩開放源碼,豐富的軟件資源,廣泛的軟件開發(fā)者的支持,價(jià)格低廉,結(jié)構(gòu)靈活,適用面廣。

3 三種嵌入式操作系統(tǒng)的比較

3.1 Linux OS與Windows Ce的比較

  嵌入式Linux OS與Windows CE相比的優(yōu)點(diǎn):第一,Linux是開放源代碼的,不在存黑箱技術(shù),遍布全球的眾多Linux愛好者都是Linux開發(fā)者的強(qiáng)大技術(shù)支持者;而 Windows CE是非開放性O(shè)S,使第三方很難實(shí)現(xiàn)產(chǎn)品定制。第二,Linux的源代碼隨處可得,注釋豐富,文檔齊全,易于解決各種問題。第三,Linux的內(nèi)核小、效率高;而Windows CE在這方面是笨拙的,占用過多的RAM,應(yīng)用程序龐大。第四,Linux是開放源代碼的OS,在價(jià)格上極具競爭力,適合中國國情。Windows CE的版權(quán)費(fèi)用是廠家不得不考慮的因素。第五,Linux不僅支持x86芯片,還是一個(gè)跨平臺的系統(tǒng)。到目前為止,它可以支持20~30種CPU,很多 CPU(包括家電業(yè)的芯片)廠商都開始做Linux的平臺移植工作,而且移植的速度遠(yuǎn)遠(yuǎn)超過Java的開發(fā)環(huán)境。如果今天采用Linux環(huán)境開發(fā)產(chǎn)品,那么將來更換CPU時(shí)就不會遇到更換平臺的困擾。第六,Linux內(nèi)核的結(jié)構(gòu)在網(wǎng)絡(luò)方面是非常完整的,它提供了對包括十兆位、百兆位及千兆位的以太網(wǎng)絡(luò),還有無線網(wǎng)絡(luò)、Token ring(令牌環(huán))和光纖甚至衛(wèi)星的支持。第七,Linux在內(nèi)核結(jié)構(gòu)的設(shè)計(jì)中考慮適應(yīng)系統(tǒng)的可裁減性的要求,Windows CE在內(nèi)核結(jié)構(gòu)的設(shè)計(jì)中并未考慮適應(yīng)系統(tǒng)的高度可裁減性的要求。

  嵌入式Linux OS與Windows CE相比的弱點(diǎn):第一,是開發(fā)難度較高,需要很高的技術(shù)實(shí)力;第二,是核心調(diào)試工具不全,調(diào)試不太方便,尚沒有很好的用戶圖形界面;第三,與某些商業(yè)OS 一樣,嵌入式Linux占用較大的內(nèi)存,當(dāng)然,人們可以去掉部分無用的功能來減小使用的內(nèi)存,但是如果不仔細(xì),將引起新的問題;第四,有些Linux的應(yīng)用程序需要虛擬內(nèi)存,而嵌入式系統(tǒng)中并沒有或不需要虛擬內(nèi)存,所以并非所有的Linux應(yīng)用程序都可以在嵌入式系統(tǒng)中運(yùn)行。

3.2 Palm OS與Windows CE的比較

  3Com公司的Palm OS是掌上電腦市場中較為優(yōu)秀的嵌入式操作系統(tǒng),是針對這一市場專門設(shè)計(jì)的系統(tǒng)。它有開放的操作系統(tǒng)應(yīng)用程序接口(API),支持開發(fā)商根據(jù)需要自行開發(fā)所需的應(yīng)用程序,具有十分豐富的應(yīng)用程序。在掌上電腦市場上獨(dú)占其霸主地位已久。

從技術(shù)層面上講,Palm OS是一套專門為掌上電腦開發(fā)的操作系統(tǒng),具有許多Windows CE無法比擬的優(yōu)勢;Windows CE過于臃腫,不適合應(yīng)用在廉價(jià)的掌上電腦中。

  Palm OS是一套具有極強(qiáng)開放性的系統(tǒng)。開發(fā)者向用戶免費(fèi)提供Palm OS的開發(fā)工具,允許用戶利用該工具在Palm OS基礎(chǔ)上方便地編寫、修改相關(guān)軟件。與之相比,Windows CE的開發(fā)工具就顯得復(fù)雜多了,這使得一般用戶很難掌握。這也Palm OS與Windows CE的另一個(gè)主要區(qū)別。

我們從常用EOS的大小、可開發(fā)定制、互操作性、通用性、實(shí)時(shí)性及應(yīng)用領(lǐng)域幾個(gè)方面,通過表1來歸納如下:

表1 

   Palm OS Windows CE 3.0 嵌入Linu
大小 核心幾十KB,整個(gè)嵌入環(huán)境也不大 核心占500KB的ROM和250KB的RAM。整個(gè)Windows CE操作系統(tǒng),包括硬件抽象層(HAL和Hardware Abstraction Layer)、Windosw CE Kernel、User、GDI、文件系統(tǒng)和數(shù)據(jù)庫,大約共1.5MB 核心從幾十KB到500KB。整個(gè)嵌入式環(huán)境最小才100KB左右,并且以后還將越來越小
可開發(fā)定制 可以方便地開發(fā)定制 用戶開發(fā)定制不方便,受Microsoft公司限制較多 用戶可以方便地開發(fā)定制,可以自由卸裝用戶模塊,不受任何限制
互操作性 互操作性強(qiáng) 互操作性比較強(qiáng),Windows C可通過OEM的許可協(xié)議使用于其它設(shè)備 互操作性很強(qiáng)
通用性 適用于多種CPU和多種硬件平臺 適用于多種CPU和多種硬件平臺 不僅適應(yīng)于x86芯片,并且可以支持30多種CPU和多種硬件平臺,開發(fā)和使用都很容易
實(shí)用性 比較好 比較好 很好
適用的應(yīng)用領(lǐng)域 應(yīng)用領(lǐng)域較廣,特別適用于掌上電腦的開發(fā) 應(yīng)用領(lǐng)域較廣。WindowsC是為新一代非傳統(tǒng)的PC設(shè)備而設(shè)計(jì)的,這些設(shè)備包括掌上電腦、手持電腦以及用于車載電腦等 由于Linu內(nèi)核結(jié)構(gòu)及功能等原因,嵌入式Linu 應(yīng)用領(lǐng)域非常廣泛,特別適于進(jìn)行信息家電的開發(fā)

結(jié)語

  Palm OS、Windows CE、Linux這三種嵌入式操作系統(tǒng)各有不同的特點(diǎn),不同的用途;但Linux比Palm OS和Windows CE更小、更穩(wěn)定,而且Linux是開放的OS,在價(jià)格上極具競爭力。如今整個(gè)市場尚未成型,嵌入式操作系統(tǒng)也未形成統(tǒng)一的國際標(biāo)準(zhǔn),而且Linux的一系列特征又為我們開發(fā)國產(chǎn)的嵌入式操作系統(tǒng)提供了方便,因此,我們有機(jī)會在這個(gè)未成熟的市場上占有一席之地。

系統(tǒng)分類: 汽車電子
用戶分類: 單片機(jī)基礎(chǔ)
標(biāo)簽: 無標(biāo)簽
來源: 轉(zhuǎn)貼
發(fā)表評論 閱讀全文(282) | 回復(fù)(4)

5

本周最熱門”中出現(xiàn),認(rèn)為夠“!本屯渡弦黄卑桑" AutoHide="false">
基于裸機(jī)編程的實(shí)時(shí)系統(tǒng)

摘要 在系統(tǒng)控制過程中,實(shí)時(shí)性是系統(tǒng)性能的一個(gè)重要測試指標(biāo)。應(yīng)用實(shí)時(shí)操作系統(tǒng)是保證實(shí)時(shí)性的一種普遍方法,但是一些資源相對缺乏的單片機(jī)是不適合用操作系統(tǒng)的。本文介紹在中低檔控制系統(tǒng)中,在不采用實(shí)時(shí)操作系統(tǒng)的情況下,如何對多個(gè)任務(wù)進(jìn)行控制,以達(dá)到實(shí)時(shí)性要求的方法。

關(guān)鍵詞 嵌入式系統(tǒng) 單片機(jī) 實(shí)時(shí)操作系統(tǒng)

引言

  在嵌入式控制系統(tǒng)的設(shè)計(jì)中,如何對被控制的多個(gè)任務(wù)進(jìn)行有效協(xié)調(diào),使其動作順序合理、響應(yīng)速度快捷,往往是設(shè)計(jì)者所考慮的一個(gè)很重要的方面,也是衡量檢驗(yàn)一個(gè)系統(tǒng)的綜合性能的重要指標(biāo)。為了在多個(gè)任務(wù)的協(xié)調(diào)控制中滿足實(shí)時(shí)性的要求,設(shè)計(jì)者往往會考慮在系統(tǒng)中嵌入目前流行的某種實(shí)時(shí)操作系統(tǒng),F(xiàn)在也有一些通過驗(yàn)證的比較優(yōu)秀的實(shí)時(shí)操作系統(tǒng)可供選擇,有的源代碼甚至是免費(fèi)提供的,網(wǎng)上也有大量的移植成功的源代碼范例;趯(shí)時(shí)操作系統(tǒng)編程可以大大縮短開發(fā)的周期,實(shí)時(shí)性也有足夠的保證;趯(shí)時(shí)操作系統(tǒng)編程的代價(jià)之一是,增加了程序代碼的長度;代價(jià)之二是,需要較多的RAM空間,在不擴(kuò)展片外存儲器的情況下,中低檔單片機(jī)是難以勝任的。另一方面,大部分中低檔應(yīng)用系統(tǒng)通過合理的設(shè)計(jì),采用基于裸機(jī)編程(沒有實(shí)時(shí)操作系統(tǒng))的方法,也可以保證一定的實(shí)時(shí)性,從而達(dá)到實(shí)時(shí)控制的要求,這是本文所要介紹的內(nèi)容。

1  系統(tǒng)設(shè)計(jì)原理

1.1  通過定時(shí)中斷間隔的設(shè)計(jì)來保證實(shí)時(shí)性

  為了完成控制系統(tǒng)中多任務(wù)的實(shí)時(shí)響應(yīng)要求,可以利用定時(shí)中斷作為系統(tǒng)的時(shí)鐘。每個(gè)中斷的間隔作為時(shí)鐘的最小基本單位,這個(gè)值要小于或等于被控制的各個(gè)任務(wù)中對時(shí)間要求最苛刻的任務(wù)的最大允許響應(yīng)時(shí)間。定時(shí)間隔越短,響應(yīng)越快捷,但系統(tǒng)CPU的負(fù)擔(dān)也越重(因?yàn)镃PU休眠的時(shí)間也越來越少)。這是一對相互矛盾的事物,需要設(shè)計(jì)者謹(jǐn)慎的協(xié)調(diào)才能達(dá)到最完美的效果。例如在配料控制系統(tǒng)中,如果加料速度為20 kg/s,要求配料誤差為1 kg,則系統(tǒng)的實(shí)時(shí)性必須保證在50 ms之內(nèi)。為了留有余地,可將定時(shí)中斷間隔設(shè)置為20 ms。

1.2  通過對所有任務(wù)的及時(shí)“照看”來管理多任務(wù)

  可以根據(jù)各個(gè)任務(wù)對實(shí)時(shí)性要求的不同程度,將任務(wù)分為不同的類型。對實(shí)時(shí)性要求越是苛刻的任務(wù),就需要得到系統(tǒng)越頻繁的“照看”。對于實(shí)時(shí)性要求不高的任務(wù),系統(tǒng)對它的“照看”時(shí)間間隔可以長一些。例如,有兩個(gè)任務(wù)A和B,任務(wù)A每秒必須“照看”10次,任務(wù)B每秒必須“照看”2次,則控制流程如圖1所示。從圖1中可以看出,任務(wù)A每隔0.1 s“照看”1次,任務(wù)B每隔0.5 s“照看”1次。對實(shí)時(shí)性要求基本相同的若干任務(wù),可依次“照看”,其程序流程如圖2所示。


圖1  處理實(shí)時(shí)性要求不同的任務(wù)      圖2  處理實(shí)時(shí)性要求基本相同的任務(wù)

  將所有任務(wù)都放在定時(shí)監(jiān)控循環(huán)中來“照看”,就可以使各個(gè)任務(wù)得到實(shí)時(shí)“照看”,問題的關(guān)鍵是系統(tǒng)如何“照看”各個(gè)任務(wù)。如果某任務(wù)運(yùn)行一次所需要的時(shí)間遠(yuǎn)小于定時(shí)間隔,則該任務(wù)可安排在系統(tǒng)“照看”它時(shí)完整地執(zhí)行一次。在這種情況下,“照看”某任務(wù)和“運(yùn)行”某任務(wù)是一回事。如果某任務(wù)的運(yùn)行時(shí)間遠(yuǎn)大于定時(shí)間隔,例如在配料系統(tǒng)中,一次配料任務(wù)需要數(shù)十秒鐘,而定時(shí)間隔只有20 ms,因此,在“照看”該任務(wù)時(shí)不可能等待它完成后再“照看”其他任務(wù),否則系統(tǒng)就會崩潰。為此,系統(tǒng)對任何任務(wù)的“照看”時(shí)間必須遠(yuǎn)小于定時(shí)間隔,只有這樣才能保證系統(tǒng)在一個(gè)定時(shí)間隔中完成對所有任務(wù)的“照看”。由此可以看出,在本方法中,任何任務(wù)都不能較長時(shí)間單獨(dú)占有CPU,而是在不斷地得到系統(tǒng)的 “照看”,通過“照看”來維持各個(gè)任務(wù)的正常運(yùn)行。

1.3  將任務(wù)分解為若干狀態(tài)

  對于執(zhí)行時(shí)間大于定時(shí)間隔的任務(wù),其執(zhí)行過程都是由若干不同狀態(tài)構(gòu)成的。在不同狀態(tài)下,需要系統(tǒng)進(jìn)行不同方式的“照看”,為此,為這個(gè)任務(wù)設(shè)置一個(gè)狀態(tài)變量,以指示該任務(wù)當(dāng)前的狀態(tài)。當(dāng)系統(tǒng) “照看”該任務(wù)時(shí),首先讀取該任務(wù)的狀態(tài)變量,然后根據(jù)狀態(tài)變量的值來執(zhí)行對應(yīng)的“照看”操作。

  為了使系統(tǒng)能夠及時(shí)從某個(gè)任務(wù)脫身,以便及時(shí)“照看”另外的任務(wù),則任何“照看”操作都必須非常簡短(遠(yuǎn)小于定時(shí)間隔)。如果某個(gè)任務(wù)的某種狀態(tài)需要系統(tǒng)較長時(shí)間的“照看”(如進(jìn)行一段比較復(fù)雜的數(shù)據(jù)處理),則必須將這個(gè)狀態(tài)再分解為若干狀態(tài),直到每個(gè)狀態(tài)需要的處理時(shí)間均比定時(shí)中斷間隔短得多。也可以設(shè)置若干標(biāo)志,將這些耗時(shí)的處理過程放在后臺處理。

1.4  與實(shí)時(shí)操作系統(tǒng)的比較

 、  本方法沒有優(yōu)先級的概念,所有任務(wù)都一視同仁得到“照看”,不存在“任務(wù)調(diào)度”問題,從根本上簡化了系統(tǒng)軟件設(shè)計(jì),也大大降低了對硬件資源的要求。

 、  本方法與“時(shí)間片輪回”方法類似,但有兩點(diǎn)不同:第一是每個(gè)任務(wù)得到的“時(shí)間片”是不固定的,與該任務(wù)的當(dāng)前狀態(tài)有關(guān),當(dāng)該任務(wù)處于停止?fàn)顟B(tài)時(shí),其“照看”操作所需要的時(shí)間就比較短,占用的“時(shí)間片”也就比較短;第二是以“照看”操作來劃分“時(shí)間片”,每個(gè)任務(wù)的“照看”都是一個(gè)完整的過程,不存在被打斷的情況,故不需要為每個(gè)任務(wù)配置“堆!。各個(gè)任務(wù)之間的通信和同步可以通過變量和標(biāo)志來完成,實(shí)現(xiàn)起來也比較簡單。

 、  由于本方法對處于“停止?fàn)顟B(tài)”的任務(wù)也要不停地“照看”,顯然時(shí)間利用率不高,當(dāng)系統(tǒng)任務(wù)數(shù)量較多或?qū)崟r(shí)性要求很高時(shí)就難于勝任,故本方法只能在任務(wù)數(shù)量較少的中低檔系統(tǒng)中采用;任務(wù)數(shù)量較多或?qū)崟r(shí)性要求很高的系統(tǒng),仍然應(yīng)該采用基于實(shí)時(shí)操作系統(tǒng)的編程方法。

2  設(shè)計(jì)實(shí)例

  現(xiàn)結(jié)合一個(gè)配料系統(tǒng)的設(shè)計(jì)實(shí)例來說明該類系統(tǒng)的設(shè)計(jì)方法。在配料系統(tǒng)中,配方中的每種成分都由一個(gè)獨(dú)立的料斗來配置,并由一個(gè)獨(dú)立的電子秤來計(jì)量。進(jìn)行配料操作時(shí),為了提高工作效率,各個(gè)料斗同時(shí)進(jìn)行加料,達(dá)到配方中各自規(guī)定的重量后則停止加料。當(dāng)所有料斗都完成加料過程后,便同時(shí)(或按預(yù)定順序)出料,進(jìn)行混合處理。各個(gè)料斗均出料結(jié)束后,間隔若干秒鐘自動開始下一輪配料過程。
    
  在該系統(tǒng)中有如下任務(wù)需要運(yùn)行:

  ◆ 鍵盤管理任務(wù)。采集操作者的按鍵動作并解釋執(zhí)行,用來設(shè)置配方數(shù)據(jù)和配料次數(shù),控制系統(tǒng)運(yùn)行。
  ◆ 顯示任務(wù)。顯示系統(tǒng)當(dāng)前狀態(tài)和相關(guān)數(shù)據(jù)。
  ◆ 數(shù)據(jù)采集任務(wù)。讀取各個(gè)電子秤當(dāng)前的數(shù)據(jù)。
  ◆ 配料控制任務(wù)。根據(jù)配方要求和電子秤當(dāng)前的數(shù)據(jù)來決定料斗的工作狀態(tài)。
  ◆ 控制信號輸出任務(wù)。根據(jù)料斗狀態(tài),輸出相應(yīng)的各路控制信號。
  ◆ 時(shí)鐘任務(wù)。為系統(tǒng)提供時(shí)間基準(zhǔn),使各個(gè)任務(wù)可以按規(guī)定節(jié)奏來運(yùn)行。
  ◆ 睡眠任務(wù)。讓系統(tǒng)在空閑時(shí)間里進(jìn)入睡眠狀態(tài),以提高系統(tǒng)的抗干擾能力。

  系統(tǒng)的軟件結(jié)構(gòu)如圖3所示。左邊是主程序,只安排了睡眠任務(wù);右邊是定時(shí)中斷子程序,安排了其他所有任務(wù)。


圖3  系統(tǒng)軟件結(jié)構(gòu)示意圖

  除配料控制任務(wù)外,其他任務(wù)運(yùn)行一次的時(shí)間均遠(yuǎn)小于定時(shí)間隔,在每次定時(shí)中斷中均可以完整地運(yùn)行一次,故采用普通的編程方法將其運(yùn)行過程寫出來即可。配料控制任務(wù)無法在一次定時(shí)中斷里完成,只能用不斷“照看”的方法來完成。如果配料任務(wù)的運(yùn)行時(shí)間(運(yùn)行周期)為40 s,定時(shí)中斷間隔時(shí)間為20 ms,則每次配料過程都是通過2000次“照看”來實(shí)現(xiàn)的。設(shè)配方有四種成分,則系統(tǒng)有四個(gè)料斗并行工作,“配料控制”任務(wù)的“照看”操作實(shí)際上由“照看料斗1”、“照看料斗2”、“照看料斗3”、“照看料斗4”組成(如圖2所示),即每次定時(shí)中斷都要依次“照看”四個(gè)料斗。四個(gè)料斗的“照看”操作方式基本相同。由于配方數(shù)據(jù)的差異,四個(gè)料斗的狀態(tài)不一定每時(shí)每刻都同步。如果不考慮加料時(shí)的“落差”現(xiàn)象,就一個(gè)料斗而言,“照看”操作內(nèi)容設(shè)計(jì)如表1所列。

  配料過程由鍵盤操作來啟動(使“允許配料”標(biāo)志=1),以后各次配料操作由前一次配料的狀態(tài)5來啟動,直到完成預(yù)定的配料次數(shù)。

  從表1中可以看出,所有的“照看”操作都是由“判斷-分支”結(jié)構(gòu)組成,操作時(shí)間也很短,滿足設(shè)計(jì)要求。

3  小結(jié)       

表1

  在實(shí)時(shí)多任務(wù)系統(tǒng)中,為了保證系統(tǒng)的實(shí)時(shí)性,采用實(shí)時(shí)操作系統(tǒng)是首選設(shè)計(jì)方案;但在中低檔系統(tǒng)中,為了簡化設(shè)計(jì)和降低成本,利用本文介紹的方法,基于裸機(jī)編程同樣可以滿足要求。在中低檔系統(tǒng)占有很大比例的產(chǎn)品市場中,本文介紹的編程方法對降低成本和提高產(chǎn)品競爭力顯然是有幫助的。

系統(tǒng)分類: 汽車電子
用戶分類: 單片機(jī)基礎(chǔ)
標(biāo)簽: 無標(biāo)簽
來源: 無分類
發(fā)表評論 閱讀全文(146) | 回復(fù)(0)

4

本周最熱門”中出現(xiàn),認(rèn)為夠“牛”就投上一票吧!" AutoHide="false">
利用串口與并口實(shí)現(xiàn)51內(nèi)核單片機(jī)的在線編程

摘要 詳細(xì)說明利用并口模擬I2C總線協(xié)議,實(shí)現(xiàn)Myson MTV230芯片的在線編程(ISP)過程,以及利用PC機(jī)的串口通信實(shí)現(xiàn)Winbond W78E516B的在線編程(ISP)過程;闡述PC機(jī)的串口與并口在單片機(jī)開發(fā)中的應(yīng)用。

關(guān)鍵詞 并口編程 串口通信 在線編程 ISP MTV230 W78E516B

1  在線編程簡介

  51內(nèi)核的單片機(jī)在線編程模式一般分為兩大類。一類是使用JTAG協(xié)議的在線編程模式。這類模式一般由廠家提供在線編程工具,使用方便。使用這一類模式的單片機(jī)價(jià)格往往較高,使用的廠商也不多,故不在本文的討論之列。另一類在線編程模式是使用一條特殊的指令,使單片機(jī)進(jìn)入在線編程模式。在進(jìn)入在線編程模式后,要自己控制對單片機(jī)的擦除寫入邏輯。這一類模式又可細(xì)分為兩種不同的模式:一是進(jìn)入在線編程模式后,單片機(jī)只是提供一個(gè)接口,不再運(yùn)行用戶的程序,擦寫邏輯全由上位機(jī)(PC)提供,如以下要討論的MTV230就屬于這種模式;另一類是進(jìn)入在線編程模式以后,芯片會運(yùn)行在某一區(qū)域的用戶編寫的程序,芯片的編程邏輯都由芯片中這段程序控制,上位機(jī)(PC)只是作為單片機(jī)的一個(gè)數(shù)據(jù)源,向單片機(jī)傳輸要擦寫的數(shù)據(jù),如以下要討論的W78E516B。

2  利用并口對MTV230在線編程的實(shí)現(xiàn)

2.1  MTV230簡介

  MTV230是由Myson公司出品的一塊集成OSD功能的基于51內(nèi)核的芯片。它使用12MHz晶振時(shí)可以設(shè)置為倍頻工作,同時(shí)還集成了4路A/D和 4路PWM DAC。其中最具競爭力的便是它使用了Flash OSD字庫。與一般的OSD芯片不同,它的字庫不是掩膜在芯片中,用戶可以自己定制。該款芯片可以滿足視頻應(yīng)用中的控制需求,因而被廣泛應(yīng)用于視頻類產(chǎn)品中。

2.2  MTV230在線編程模式的進(jìn)入

  要使MTV230具有在線編程的功能,可以添加一段程序在主應(yīng)用程序中。該程序用來響應(yīng)特定的單片機(jī)狀態(tài),如某一特定引腳的電平變化,或是串口接收到特定的字符以確定是否要進(jìn)入在線編程模式。在執(zhí)行以下程序后,MTV230可以進(jìn)入在線編程模式[1]:

 、  清看門狗,以防止在編程期間單片機(jī)被復(fù)位;
 、  單片機(jī)的在線編程模式是在空閑狀態(tài)(idle)下進(jìn)行的,所以要關(guān)閉所有中斷,防止單片機(jī)被喚醒;
 、  由于MTV230在線編程時(shí)是作為I2C的從設(shè)備,因而要配置單片機(jī)的I2C從地址;
 、  向ISPEN寫入0x93,使能在線編程功能;
  ⑤  進(jìn)入51的空閑模式,在線編程開始。

  具體程序如下:

  WDT=0; //1
  IE=0; //2
  ISPSLV=0x7C; //3
  ISPEN=0x93; //4
  PCON=0x01; //5

  以上程序中1~5與上述說明對應(yīng)。以上將I2C地址設(shè)置為0x7C。值得注意的是,設(shè)置I2C從地址時(shí),最低兩位無效[1]。執(zhí)行完以上程序,單片機(jī)已經(jīng)變?yōu)橐粋(gè)I2C從設(shè)備,將I2C中SCL與芯片的15腳相連,SDA與芯片的16腳相連,就可以用I2C協(xié)議,按一定的命令格式對芯片進(jìn)行在線編程。命令格式詳見參考文獻(xiàn)[1],在此不再贅述。

2.3  PC機(jī)I2C接口的實(shí)現(xiàn)

  對MTV230進(jìn)行在線編程,就要實(shí)現(xiàn)I2C通信協(xié)議。作為對MTV230進(jìn)行編程的上位機(jī)PC來說,實(shí)現(xiàn)I2C有三種方法:

 、  使用串口與單片機(jī)通信,再由單片機(jī)模擬I2C協(xié)議,成本高,I2C速度視使用的單片機(jī)而定;
 、  對計(jì)算機(jī)的并口編程,模擬I2C協(xié)議,成本低,I2C速度一般;
 、  使用USB接口實(shí)現(xiàn)I2C協(xié)議,成本高,I2C速度快市場上可以買到。

  由于MTV230進(jìn)行編程時(shí),I2C時(shí)鐘速度最高為140kHz,速度要求不高,同時(shí)考慮到成本,決定使用方案②。

2.4  并口I2C硬件的實(shí)現(xiàn)

  由于并口的每個(gè)引腳都是單向的,只能單向輸出或者單向輸入;而I2C又是一個(gè)雙向協(xié)議,SDA與SCL都要求既能輸入又能輸出(有時(shí)要獲取SCL當(dāng)前狀態(tài)),所以,SDA與SCL要分別各由一個(gè)輸出引腳與一個(gè)輸入引腳構(gòu)成。為了增加并口的驅(qū)動能力與可靠性,設(shè)計(jì)電路如圖1所示。其中并口的2、12引腳構(gòu)成SDA腳,并口的3、10引腳構(gòu)成SCL腳。


圖1  并口I²C電路

2.5  并口I2C軟件的實(shí)現(xiàn)

  在Win98中對并口的編程非常簡單,通過在VC中內(nèi)嵌匯編,使用IN與OUT指令訪問與并口相對應(yīng)的端口,設(shè)置相對應(yīng)端口的值中的位就可以控制相應(yīng)并口引腳的高低電平值。

  例如:要將計(jì)算機(jī)并口1的第2引腳先置高再置低,匯編語言可以這樣寫:

  MOV DX , 0x378 ;設(shè)置端口地址
  MOV AL , 1 ;將待寫入的位0的值寫入AL中
  OUT DX , AL ;將值送到相應(yīng)端口
  MOV AL , 0
  OUT DX , AL

  但在Win2000/XP中,由于系統(tǒng)加強(qiáng)了對硬件設(shè)備的保護(hù),假如在程序中直接用IN與OUT指令訪問并口,則會引發(fā)系統(tǒng)的非法操作;而并口訪問又不像串口,直接可以使用Windows API函數(shù),因而就必須使用驅(qū)動程序?梢缘www.sstnet.com網(wǎng)站上去下載DriverLINX Port I/O Driver并口驅(qū)動程序。該程序可以免費(fèi)復(fù)制與分發(fā)。有了這個(gè)驅(qū)動程序,在Win2000/XP下編寫并口程序就十分方便。安裝該驅(qū)動程序后,在程序中包含相應(yīng)的dlportio.h與dlportio.lib后就可以用DlPortReadPortUchar(IN ULONG Port)來讀取端口的值(相當(dāng)于匯編中的IN指令),用DlPortWritePortUchar(IN ULONG Port,IN UCHAR Value)來向一個(gè)端口寫一個(gè)特定的值(相當(dāng)于匯編中的OUT指令)。利用改變端口值中的一個(gè)位的值,可以使相應(yīng)并口引腳輸出高低電平,從而可以用其來模擬I2C協(xié)議,實(shí)現(xiàn)并口與單片機(jī)間的I2C通信。關(guān)于I2C協(xié)議,網(wǎng)上有很多資料,在此不再贅述。

2.6  程序說明

  如前文所述,MTV230在進(jìn)入在線編程模式后,就相當(dāng)于一個(gè)I2C從設(shè)備,編程邏輯全都由在PC上運(yùn)行的程序來實(shí)現(xiàn)。該程序采用VC6.0編寫。編程程序的主界面如圖2所示,主要模塊如表1所列。由于用并口模擬I2C對單片機(jī)編程,會使該線程暫時(shí)處在阻塞狀態(tài),假如在主線程(UI)中實(shí)現(xiàn)該過程,則在對芯片編程時(shí),程序的主界面就無法響應(yīng)用戶退出命令,所以采用了多線程程序結(jié)構(gòu),在一個(gè)工作線程實(shí)現(xiàn)該過程,使用戶可以隨時(shí)退出編程過程。


圖2  編程程序主界面

  表1所列的頭三個(gè)類采用了層次設(shè)計(jì)結(jié)構(gòu):上層類調(diào)用下層類,下層類為上層類提供接口,這樣設(shè)計(jì)保證了代碼的最大可重用性。舉例來說,假如有另一芯片同樣是使用I2C接口進(jìn)行在線編程,則只要重寫MTVISP這個(gè)芯片的在線編程協(xié)議類就可以了;如果使用前面所述的并口實(shí)現(xiàn)方案1或3,只要重寫最底層的 Parallel類便可。

表1  程序主要模塊

  程序工作線程的大致流程如圖3所示。


圖3  工作線程的流程

  程序的特色:

 、  可以自己設(shè)置I2C速度的高低,模擬I2C的并口地址,以及使用并口的引腳。
 、  可以選擇簡單校驗(yàn)和完全校驗(yàn),即對編程后的芯片是進(jìn)行內(nèi)部校驗(yàn)寄存器值的簡單校驗(yàn),還是將芯片中的內(nèi)容全部讀出與編程文件進(jìn)行比較的完全校驗(yàn)。
 、  可以對芯片內(nèi)的程序區(qū)、OSD區(qū)進(jìn)行編程,還可以讀出這兩區(qū)的數(shù)據(jù)(只有對可以設(shè)定進(jìn)入在線編 程模式的程序才可以)。
  ④  進(jìn)行燒寫的文件支持二進(jìn)制文件格式(*.bin)與Intel的Hex文件格式(*.hex)。

3  利用串口對W78E516B在線編程的實(shí)現(xiàn)

3.1  W78E516B簡介

  W78E516B是由Winbound公司出品的基于52內(nèi)核的高性能芯片,外部晶振可以達(dá)到40MHz,內(nèi)部具有64KB的程序區(qū)與4KB的引導(dǎo)程序區(qū),以及256B的RAM區(qū)和256B的AUX-RAM區(qū)。AUX-RAM區(qū)相當(dāng)于外部存儲區(qū),進(jìn)行寄存器設(shè)置后,用MOVX指令進(jìn)行訪問。在Keil編譯器中,進(jìn)行相應(yīng)的設(shè)置便可使用pdata類型變量訪問。

3.2  W78E516B在線編程模式的進(jìn)入

   W78E516B在線編程模式的進(jìn)入可以分為兩種模式:一種為軟件模式,另一種為硬件模式。當(dāng)芯片進(jìn)入在線編程模式后,芯片會從現(xiàn)在的64KB程序區(qū)跳轉(zhuǎn)到4KB的引導(dǎo)區(qū)的0x00地址處去執(zhí)行程序。如前文所述,該類型芯片的在線編程邏輯都是由在這4KB引導(dǎo)區(qū)中的程序決定的,而上位機(jī)(PC)只是為在線編程提供一個(gè)數(shù)據(jù)源。

  (1)  軟件進(jìn)入模式

 、  向CHPERN寄存器依此寫入0x87,0x59開啟CHPCON寄存器的寫模式。
 、  關(guān)閉中斷。
  ③  向CHPCON寫入0x03表示進(jìn)行程序區(qū)編程。
  ④  向CHPCRN寫入0x00關(guān)閉CHPCON寄存器寫模式。
 、  設(shè)置好定時(shí)器為延時(shí)12μs引發(fā)中斷。
 、  將單片機(jī)轉(zhuǎn)入空閑模式,開啟中斷。

  例如:將以下程序嵌入主循環(huán)中,當(dāng)串口收到字符“A”時(shí)便進(jìn)入在線編程模式:

  if(B_Temp==‘A’{//B_Temp中存放從串口接收到的數(shù)
    TR0=0; //停止定時(shí)器
    TH0=TL0=256-250; //設(shè)置定時(shí)器定時(shí)值
    CHPENR = 0x87; //開啟CHPCON寫模式
    CHPENR = 0x59;
    CHPCON|=0x03; //開啟編程功能
    CHPENR=0x00; //關(guān)閉CHPCON寫模式
    TR0=1; //開啟定時(shí)器
    PCON=0x01; //轉(zhuǎn)入空閑模式
  }

  (2)  硬件進(jìn)入模式

  如表2所列,將相應(yīng)引腳設(shè)置為相應(yīng)電平,在進(jìn)行復(fù)位以后也可進(jìn)入在線編程模式。值的注意的是,在芯片正常工作時(shí)應(yīng)避免誤入在線編程模式,否則后果不堪設(shè)想。表2中L代表低電平,X代表任意電平。

表2  進(jìn)入在線編程的硬件設(shè)置

3.3  W78E516B在線編程的實(shí)現(xiàn)

(1)  單片機(jī)引導(dǎo)區(qū)程序

  W78E516B在線編程邏輯主要在這部分程序中實(shí)現(xiàn)。在參考文獻(xiàn)[2]中的最后有一個(gè)示例程序,它是從外部的SRAM中讀取數(shù)據(jù)對64KB程序區(qū)進(jìn)行編程。將其改寫一下,變?yōu)閺拇谧x入數(shù)據(jù)。對程序區(qū)進(jìn)行更新,大致流程與示例程序相同,代碼也大致相同。有興趣的朋友可以自行閱讀文獻(xiàn)[2]中的程序源文件,在此只列出關(guān)鍵的更改處:

  ;使用24MHz晶振
  ;使用WAVE編譯程序
  ;其中R3存有待寫入數(shù)據(jù)字節(jié)數(shù)-1的高16位
  ;其中R4存有待寫入數(shù)據(jù)字節(jié)數(shù)-1的低16位
    JMP PROG_D_64K
  PADJUEST:
    INC R2 ;將低位地址增加1
    CJNE R2,#00H,PROG_D_64K
    INC R1 ;低位進(jìn)位時(shí)將高位增加1
    MOV SFRAH,R1 ;改變高位地址
  PROG_D_64K:
    MOV SFRAL,R2 ;將低位地址放入
    JNB RI,$ ;從串口接收一個(gè)待寫入的字節(jié)
    MOV A,SBUF
    CLR RI
    MOV SFRFD,A ;將待寫入的值放入
    MOV TCON,#10H ;開啟定時(shí)器
    MOV PCON,#01H ;CPU進(jìn)入IDLE狀態(tài)(進(jìn)行編程)
    CLR C ; 比較R3、R4,看是否寫入完成
    MOV A,R4
    SUBB A,R2
    JNZ PADJUEST
    CLR C
    MOV A,R3
    SUBB A,R1
    JNZ PADJUEST

(2)  PC機(jī)程序

  PC機(jī)程序?yàn)?A title="東哥電子商城,提供單片機(jī)學(xué)習(xí)開發(fā)板,實(shí)驗(yàn)板, 編程器,仿真器,無線發(fā)射接收模塊,各種電子元器件." >單片機(jī)提供一個(gè)數(shù)據(jù)源。該數(shù)據(jù)是通過PC機(jī)的串口進(jìn)行數(shù)據(jù)傳輸?shù)。程序由VC6.0編寫,串口通信使用的是VC自帶的串口控件 MSCOMM。由于MSCOMM的接收數(shù)據(jù)是以消息形式,同時(shí)在該程序中接收的數(shù)據(jù)量很小,而發(fā)送數(shù)據(jù)為阻塞模式,所以新開一個(gè)工作線程用于發(fā)送數(shù)據(jù),而接收數(shù)據(jù)與主線程合并。程序整體采用狀態(tài)機(jī)模式。單片機(jī)進(jìn)行擦除、編程、校驗(yàn)等各個(gè)狀態(tài)時(shí),都通過串口向PC機(jī)發(fā)送狀態(tài)字,PC機(jī)通過接收狀態(tài)字來決定單片機(jī)現(xiàn)在的工作狀態(tài),并決定要向單片機(jī)提供的數(shù)據(jù)。同時(shí)主線程中有一定時(shí)器,假如在特定時(shí)間內(nèi)單片機(jī)無應(yīng)答,或應(yīng)答有誤,則報(bào)錯,停止單片機(jī)的編程過程。值得注意的是,由于使用了MSCOMM控件,在未裝VC6.0的機(jī)器上運(yùn)行該程序要將源文件SYSTEM目錄中的三個(gè)文件拷貝到system32系統(tǒng)目錄下。程序主界面如圖4所示。PC機(jī)與單片機(jī)通信的工作流程如圖5所示。


圖4  程序主界面


圖5  PC機(jī)與單片機(jī)通信的工作流程

  程序特色:

 、  可以設(shè)定使用的串口與通信的波特率。(與其相應(yīng)的4KB引導(dǎo)區(qū)中的程序也要相應(yīng)修改)。
 、  可以設(shè)定使單片機(jī)進(jìn)入在線編程模式的字符命令。
 、  進(jìn)行燒寫的文件支持二進(jìn)制文件格式(*.bin)與Intel的Hex文件格式(*.hex)。

4  結(jié)論

  使用并口模擬I2C程序可以方便地對板上的MTV230芯片進(jìn)行在線編程,使用串口為W78E516B提供數(shù)據(jù)源也可方便地對其進(jìn)行編程,兩者均經(jīng)過實(shí)踐檢驗(yàn),程序完全達(dá)到預(yù)期目的。使用芯片的在線編程技術(shù),方便了芯片程序的更新,降低了產(chǎn)品的維護(hù)成本。

系統(tǒng)分類: 汽車電子
用戶分類: 單片機(jī)基礎(chǔ)
標(biāo)簽: 無標(biāo)簽
來源: 無分類
發(fā)表評論 閱讀全文(196) | 回復(fù)(0)

3

本周最熱門”中出現(xiàn),認(rèn)為夠“!本屯渡弦黄卑!" AutoHide="false">
制作電腦小彩燈

電腦小彩燈

作者:溫正偉 原載:電子報(bào)


   如果你是電腦和電子的雙料發(fā)燒友,你一定想在你的電子制作中用你的電腦去完成一些控制動作,以實(shí)現(xiàn)自動化控制。這里所介紹的"電腦小彩燈"的小制作,不但能為你的電腦增色不少,還能給一些初學(xué)電腦編程的電子愛好者不少的啟發(fā)。
  大家都知道電腦的I/O接口中有一個(gè)或以上的并行打印機(jī)(LPT)接口,通常它用于連接并行輸入/輸出設(shè)備,像打印機(jī)、掃描儀等等。我們可以通過對它的編程,實(shí)現(xiàn)電子制作的自動控制。而"電腦小彩燈"只用到輸出部份,所需零件很少,制作簡單,無需調(diào)整。在386/486時(shí)代這個(gè)接口大都是通過一塊適配器與主板連接的,現(xiàn)在的主板都集成了一個(gè)或以上的并行打印機(jī)接口。在一臺計(jì)算機(jī)上可以有三個(gè)并行打印機(jī)接口,基地址分別為3BCH,378H,278H,由于每臺機(jī)所配置的情況不同,可用windows3.1或dos6.22的MSD.EXE程序查看,以確定各接口所用的基地址。通,F(xiàn)在的主板上集成的接口基地址為378H,確定了基地址后我們可用C語言中的outportb函數(shù)發(fā)送一個(gè)8位二進(jìn)制到基地址378H,這樣在接口上的2-9輸出端得到相應(yīng)的輸出。如發(fā)送數(shù)字3(二進(jìn)制00000011),接口上的2和3輸出端為高電平,點(diǎn)亮發(fā)光二極管D1和D2。通過發(fā)送不同的數(shù)字,點(diǎn)亮不同的發(fā)光二極管,得到不同的彩燈花樣。在電路安裝完成后,可以用機(jī)箱面板上空閑的小擋板(如安裝光驅(qū)時(shí)拆下的)跟據(jù)發(fā)光二極管的大小打上8個(gè)孔,安裝好電路板,便算完成了。
(文章發(fā)表后筆者又寫了一個(gè)可在Windows下的程序,也可以用于此文的波形顯示,并開放源代碼下載,可以點(diǎn)擊這里下載 Port1.0)

圖一:電路圖

   程序如下:(本程序用TC2.0編譯通過,在486/4兆內(nèi)存和586/32兆內(nèi)存機(jī)器上dos7.0,windos3.x,windows95上運(yùn)行通過,程序運(yùn)行在windows3.x/windows95時(shí),可同時(shí)運(yùn)行其它應(yīng)用程序)

/*----------------------------*/
/* 并行口輸出實(shí)驗(yàn)程序 */
/* LED彩燈 (8只) */
/* WZW 2000.5 */
/*----------------------------*/

#include<dos.h>
#include<bios.h>
#include<process.h>
#define outabbress 0x378 /* 接口基地址按機(jī)器的配置選用
3BC,378,278 */
void LPTOut(unsigned char outdata,long outtime);

main()
{
unsigned char outdatas[74]= /* 彩燈樣式 */
{ /* 讀者可自行修改 */
24,36,66,129, /* 數(shù)字為0-255 */
129,66,36,24, /* 數(shù)字轉(zhuǎn)化為二進(jìn)制時(shí),數(shù)位
上為1時(shí) */
0, /* 點(diǎn)亮相應(yīng)的二極管,為
0時(shí)熄滅 */
1,2,4,8,16,32,64,128,
128,192,224,240,248,252,254,255,
255,254,252,248,240,224,192,128,
0,
1,2,4,8,16,32,64,128,
129,130,132,136,144,160,192,
193,194,196,200,208,224,
112,56,28,14,7,3,1,
0,
85,170,85,170,85,170,
255,
126,60,24,
0};
while(1)
{
int f;
for (f=0;f<73;f++)
{ /* 向地址發(fā)送數(shù)據(jù)
,4000為延遲時(shí)間值 */
LPTOut(outdatas[f],4000); /* 時(shí)間值根據(jù)計(jì)算機(jī)
的速度調(diào)整 */
printf("\n%d",outdatas[f]); /* 在屏幕上顯示所
發(fā)送的數(shù)據(jù),可省去 */
}
}
}


void LPTOut(unsigned char outdata,long outtime)
{
long t;
outportb(outabbress,outdata); /* 調(diào)用outporb函數(shù)發(fā)送數(shù)
據(jù) */
for (t=0;t < outtime;t++) /* 延遲 */
{
if (kbhit())
{
outportb(outabbress,0); /* 數(shù)據(jù)清零,如無此句數(shù)
據(jù)一直輸出 */
exit(1); /* 按任意鍵數(shù)據(jù)清零、退出 */
}
}
}
/* outabbress 為接口地址 outdata 為要輸出的8位二進(jìn)
制數(shù) */
/* outtime 為延遲時(shí)間值 */
   讀者朋友可以用一些電子器件擴(kuò)充這個(gè)小彩燈,讓它有更多的 花樣。當(dāng)然也可把這個(gè)原理和程序用于自己的程序或電子小制作中。
  • 上一篇: 現(xiàn)場總線技術(shù)在裝備監(jiān)控系統(tǒng)中的應(yīng)用
  • 下一篇: 沒有了
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1