<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 分時(shí)操作系統思想在單片機編程中的實(shí)現

分時(shí)操作系統思想在單片機編程中的實(shí)現

——
作者:阮 元 時(shí)間:2007-08-27 來(lái)源:?jiǎn)纹瑱C及嵌入式系統應用 收藏

  摘要:提出基于分時(shí)系統思想的設計方案,給出一具體應用的實(shí)例以及詳細的實(shí)現方法。

    關(guān)鍵詞:

前言

  作為嵌入式系統主控單元——單片機,其軟件往往是一個(gè)微觀(guān)的實(shí)時(shí)操作系統,且大部分是為某種應用而專(zhuān)門(mén)設計的。系統程序有實(shí)時(shí)過(guò)程控制或實(shí)時(shí)信息處理的能力,要求能夠及時(shí)響應隨機發(fā)生的外部事件并對該事件做出快速處理。而卻是把CPU的時(shí)間劃分成長(cháng)短基本相同的時(shí)間區間,即“時(shí)間片”,通過(guò)操作系統的管理,把這些時(shí)間片依次輪流地分配給各個(gè)用戶(hù)使用。如果某個(gè)作業(yè)在時(shí)間片結束之前,整個(gè)任務(wù)還沒(méi)有完成,那么該作業(yè)就被暫停下來(lái),放棄CPU,等待下一輪循環(huán)再繼續做。此時(shí)CPU又分配給另一個(gè)作業(yè)去使用。由于計算機的處理速度很快,只要時(shí)間片的間隔取得適當,那么一個(gè)用戶(hù)作業(yè)從用完分配給它的一個(gè)時(shí)間片到獲得下一個(gè)CPU時(shí)間片,中間有所“停頓”;但用戶(hù)察覺(jué)不出來(lái),好像整個(gè)系統全由它“獨占”似的。主要具有以下3個(gè)特點(diǎn):① 多路性。用戶(hù)通過(guò)各自的終端,可以同時(shí)使用一個(gè)系統。② 及時(shí)性。用戶(hù)提出的各種要求,能在較短或可容忍的時(shí)間內得到響應和處理。③ 獨占性。在分時(shí)系統中,雖然允許多個(gè)用戶(hù)同時(shí)使用一個(gè)CPU,但用戶(hù)之間操作獨立,互不干涉。

  分時(shí)操作系統主要是針對小型機以上的計算機提出的。一般而言,微處理器(MPU)驅動(dòng)的通用計算機,系統設計人員對每一臺的最終具體應用都是不得而知的,因此,在價(jià)格允許的情況下,硬件設計務(wù)求CPU時(shí)鐘盡可能的快;計算及管理能力盡可能的強;程序和數據存儲器的容量盡可能的大;各種計算機外設的配接盡可能的詳盡等等,特別是采用分時(shí)操作系統的機器,因為是一機多用戶(hù)的管理系統,它的要求就更高了。相對而言,微控制器(MCU)俗稱(chēng)單片機,是一個(gè)單片集成系統,它將這些或那些計算機所需的外設,諸如程序和數據存儲器、端口以及有關(guān)的子系統集成到一片芯片上。從硬件上,與采用分時(shí)操作系統的計算機系統是無(wú)法比擬的。但是,在單片機系統的設計中,設計人員對其最終具體應用是一清二楚的,它的使用環(huán)境相對是單一固定的。所控制的過(guò)程的可預見(jiàn)性為分時(shí)系統思想的實(shí)現提供了可能性。具體一點(diǎn)就是:雖然單片機的CPU速度較低,但其任務(wù)是可預見(jiàn)的,這樣將變得簡(jiǎn)單而無(wú)須占用很多的CPU時(shí)間,同時(shí)“時(shí)間片”的設計是具體而有針對性的,因此可變得很有效。

一、單片機分時(shí)系統的設計

  單片機系統往往是一個(gè)嵌入式的控制系統,因此目前絕大部分的單片機系統還是一實(shí)時(shí)系統。能夠真正體現分時(shí)系統的設計思想的往往是那些多路重復檢測控制系統。即便是在這些多路重復檢測控制系統中,它的實(shí)時(shí)性也是非常重要的。也就是說(shuō),在單片機系統中應用了分時(shí)系統設計思想,但其及時(shí)性應首先進(jìn)行考慮。

    1.對單片機分時(shí)系統硬件設計的建議

  隨著(zhù)單片機性能的提高,單片機系統設計中的一些硬件功能軟件化是大勢所趨。但同時(shí),一日千里的芯片技術(shù)也為低成本的硬件完成高性能的功能提供可能。讓一種功能到底是通過(guò)硬件實(shí)現還是通過(guò)軟件來(lái)實(shí)現不能一概而論,只能是通過(guò)系統設計讓整個(gè)系統的性能價(jià)格比最高才是每個(gè)單片機系統設計者孜孜追求的目標。

  在單片機分時(shí)系統的硬件設計中,由于對系統的及時(shí)性的要求不能降低,而大多數單片機的處理速度相對而言是較慢的。因此,在接口硬件的設計上應采用一些能將信息量保持的器件,如觸發(fā)器、鎖存器。同時(shí)要求這些器件應該是三態(tài)門(mén)輸出,因為是多路分時(shí)系統,當CPU沒(méi)有訪(fǎng)問(wèn)到時(shí),器件輸出呈現高阻,以利于總線(xiàn)對其他器件的訪(fǎng)問(wèn)。還有,一些用軟件比較費時(shí)的操作應轉給硬件完成。如LED動(dòng)態(tài)顯示,沒(méi)有必要一定用intel 8155或intel 8255硬件接口讓軟件時(shí)時(shí)為顯示數字而煞費苦心,完全可以用intel 8279或MAX7218及MAX7219這些可編程外圍器件來(lái)完成,使顯示既漂亮又簡(jiǎn)單。當然,到底哪些功能留給硬件完成,哪些功能留給軟件完成,應根據系統的不同而具體設計??傊?,應總體考慮,追求最高的性能價(jià)格比。

    2.單片機分時(shí)系統的軟件設計

  為了合理實(shí)現單片機分時(shí)系統,還須有完善的調度機制。完善的調度機制主要由調度和調度表組成。系統的調度分成兩級,一是“路”的調度,相當于指示程序橫向進(jìn)行:從第一路的某一作業(yè)到第二路的某一作業(yè),從第二路的某一作業(yè)再到第三路的某一作業(yè)……從最后一路回到第一路,循環(huán)往復?!奥贰闭{度的調度變化規律是固定不變的,算法簡(jiǎn)單,即遞增一或遞減一,循環(huán)到頭后,再返回到起始。相對應的“路”調度指針還應構造“路”調度表?!奥贰闭{度表每一項表示各“路”程序入口地址及跳轉指令。以MCS-51單片機為例,采用AJMP addr11作為每一項的內容,則調度表的每一表項占2個(gè)字節;當程序較長(cháng)超過(guò)2K字節,則采用LJMP addr16作為每一項內容,占3個(gè)字節。所設計的單片機系統共有多少“路”,該調度表就有多少項數。二是,即相當于指示程序縱向進(jìn)行:從某一路的第一作業(yè)指向該路第二作業(yè),第二作業(yè)指向第四作業(yè)……也有從第六作業(yè)指回第三作業(yè)的等等。因稍復雜任務(wù)的流向都不可能是單方向性的,從上一作業(yè)流到下一作業(yè)都要根據系統的檢測或運算結果來(lái)決定,因此作業(yè)調度指針的變化是隨機決定的。作業(yè)調度表的構成形式與“路”調度表相同,每一項表示各作業(yè)模塊的程序入口地址及跳轉指令。作業(yè)調度表指示出各作業(yè)執行的一般先后次序,表項數等于一路任務(wù)的最大作業(yè)數。為了分清每路的任務(wù)進(jìn)程,單片機系統要控制多少路就必須有多少個(gè)作業(yè)調度指針及相應作業(yè)調度表。以上兩級指針都為1個(gè)字節的整數變量。調度指針與調度表的聯(lián)系是通過(guò)指令JMP @A+DPTR實(shí)現的。DPTR中是調度表的首地址。累加器A中的內容是調度指針的整數倍,若表項內容是AJMP addr11,則A的值為調度指針乘2;若表項內容是LJMP addr16,則A的值為調度指針乘3。

  除了以上主程序的調度設計外,各個(gè)作業(yè)中共同的功能應放在中斷中實(shí)現,主要是放在定時(shí)器中斷。如計時(shí)功能應放在定時(shí)器定時(shí)中斷中實(shí)現,定時(shí)參數的選擇應考慮到系統各個(gè)作業(yè)中各種計時(shí)的要求,定時(shí)頻率一般為最小計時(shí)頻率的整數倍。任何軟件延時(shí)都是不允許的。 實(shí)現分時(shí)控制的關(guān)鍵是在于合理地將系統的功能分解成各個(gè)作業(yè)模塊。作業(yè)模塊分得越細系統的實(shí)時(shí)性就越好。雖然單片機的時(shí)鐘頻率較低,在實(shí)際應用中當各個(gè)作業(yè)模塊被細分成各個(gè)“動(dòng)作”及簡(jiǎn)單的運算后,分時(shí)系統的實(shí)時(shí)性是能得到保證的。缺點(diǎn)就是各“路”的控制處理程序被分割得支離破碎,模塊化得不到保證。

二、應用實(shí)例

    1.系統硬件及工作原理

  賓館用的視頻點(diǎn)播系統VOD(Video On Demand)中,從各個(gè)機定盒送出的上行信號用DTMF碼通過(guò)電話(huà)線(xiàn)傳輸到機房的主控制柜中的上行信號采集卡中。為了能同時(shí)接受多個(gè)用戶(hù)的點(diǎn)播操作,上行信號采集卡必須有接受多路電話(huà)傳輸信息的功能,為此,筆者設計了8路電話(huà)采集卡,可同時(shí)接受8路用戶(hù)的點(diǎn)播操作,系統硬件框圖如圖1所示。

  每路大致的主程序是:檢測到振鈴信號后(即為振鈴檢測腳變低并保持8ms以上),繼電器吸合,同時(shí)馬上給機定盒回一接通信號——#鍵(保持400ms)。然后等待機定盒發(fā)送點(diǎn)播信息:客房號、點(diǎn)播的節目號,共4位DTMF碼;若1s內無(wú)DTMF碼收到(收到表示為解碼芯片的DV腳變高)表示操作有誤,繼電器斷開(kāi),狀態(tài)位復原,作業(yè)指針回0。收齊4位DTMF碼后將其整理并帶上該路的標志,轉化成3字節送到串行發(fā)送緩沖區,在定時(shí)器中斷服務(wù)程序中發(fā)送。等待視頻服務(wù)器回送應答信息,根據應答信息不同向機定盒回送不同的信息;若超時(shí)無(wú)應答也向機定盒回送一碼(發(fā)碼時(shí)間都為100ms)。最后,繼電器斷開(kāi),狀態(tài)標志復原,緩沖區清0,作業(yè)指針也回到0。一個(gè)過(guò)程完成。

    2.作業(yè)流程

  為了能實(shí)現8路分時(shí)工作,最主要的工作是將這一過(guò)程細分成一個(gè)個(gè)作業(yè)。筆者通過(guò)設計把它分成8個(gè)作業(yè),各作業(yè)的流程如圖2所示。 以上每一作業(yè)返回后,“路”指針自動(dòng)加1,到8后回到0,以保證分時(shí)工作合理。

  3.幾點(diǎn)技巧

  8路電話(huà)信息采集卡的編程中,為了使程序更精練,筆者應用以下3個(gè)技巧:

 ?、?因為這8路的工作是相同的,程序可以共用,只須再構造1“路”地址表,每一表項含有本路的輸入鎖存器地址、輸出鎖存器地址、DTMF碼存放RAM地址、計時(shí)單元地址。這樣可以省掉“路”調度表,因為各路相同作業(yè)的入口地址是相同的。根據“路”指針的不同,帶入該“路”的地址表項,即可用相同的程序對8路分別控制操作。

 ?、?定時(shí)器中斷設置成4ms一次,這是因為電話(huà)振鈴是25Hz,檢測腳保持低電平的時(shí)間為10ms,它是最低的計時(shí)值。當振鈴檢測腳低電平保持時(shí)間少于8ms時(shí)可認為是干擾。每一路都有自己的計時(shí)單元,每次定時(shí)器中斷后,在定時(shí)服務(wù)自程序中各路計時(shí)單元自動(dòng)加1。在上一次作業(yè)中將計時(shí)單元請0,下一次作業(yè)讀出計時(shí)單元的值,延時(shí)值即為該值乘以4ms。這樣任何延時(shí)都不占用CPU機時(shí)。

 ?、?串行數據的發(fā)送和接收是8路共有的操作,采用共同的模塊。數據的鏈接是通過(guò)開(kāi)辟緩沖區實(shí)現的,有發(fā)送緩沖區和接收緩沖區,采用4800baud的波特率。一般程序的串行數據發(fā)送時(shí),都須要檢測TI位的變化來(lái)判斷1字節數據發(fā)送是否完成,由此決定可否發(fā)下一字節數據。應用到分時(shí)系統是行不通的,這要占用CPU機時(shí),因為采用4800baud的波特率,則每一字節的發(fā)送時(shí)間少于4ms。當發(fā)送緩沖區有數據時(shí),可在定時(shí)器中斷服務(wù)自程序中發(fā)送。每一次定時(shí)中斷中發(fā)送1字節數據,當下一次定時(shí)中斷來(lái)時(shí),上一字節數據必定已發(fā)送完畢,可發(fā)送下一字節數據。無(wú)須檢測TI位,也不占用CPU機時(shí)。數據接收采用串行中斷,接收到的數據存放到接收緩沖區供各路查詢(xún)。

結論

  將分時(shí)操作系統的思想引入單片機系統,提出了一個(gè)針對多路檢測控制的單片機系統軟件編程。大大減低了系統的設計成本,提高了系統的性能價(jià)格比,并在實(shí)際應用中獲得成功。

 



評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>