åœ¨åµŒå…¥å¼æ‡‰(yÄ«ng)用ä¸ï¼Œä½¿ç”¨RTOS的主è¦åŽŸå› æ˜¯ç‚ºäº†æé«˜ç³»çµ±(tÇ’ng)çš„å¯é 性,其次是æé«˜é–‹ç™¼(fÄ)效率ã€ç¸®çŸé–‹ç™¼(fÄ)周期。μCï¼OS-II是一個å å…ˆå¼å¯¦æ™‚多任務(wù)å…§(nèi)æ ¸ï¼Œä½¿ç”¨å°è±¡æ˜¯åµŒå…¥å¼ç³»çµ±(tÇ’ng)ï¼Œå°æºä»£ç¢¼é©ç•¶(dÄng)è£æ¸›ï¼Œå¾ˆå®¹æ˜“ç§»æ¤åˆ°8~32ä½ä¸åŒæ¡†æž¶çš„微處ç†å™¨ä¸Šã€‚但μCï¼OS-II僅是一個實時內(nèi)æ ¸ï¼Œå®ƒä¸åƒå…¶ä»–實時æ“作系統(tÇ’ng)(如嵌入å¼Linux)那樣æä¾›çµ¦ç”¨æˆ¶ä¸€äº›API函數(shù)接å£ã€‚在μCï¼OS-II實時內(nèi)æ ¸ä¸‹ï¼Œå°å¤–è¨(shè)çš„è¨ªå•æŽ¥å£æ²’有統(tÇ’ng)一完善,有很多工作需è¦ç”¨æˆ¶è‡ªå·±åŽ»å®Œæˆã€‚串å£é€šä¿¡æ˜¯å–®ç‰‡æ©Ÿ(jÄ«)測控系統(tÇ’ng)çš„é‡è¦çµ„æˆéƒ¨åˆ†ï¼Œç•°æ¥ä¸²è¡Œå£æ˜¯ä¸€å€‹æ¯”較簡單åˆå¾ˆå…·ä»£è¡¨æ€§çš„䏿–·é©…(qÅ«)動外è¨(shè)。本文以單片機(jÄ«)ä¸çš„串å£ç‚ºä¾‹ï¼Œä»‹ç´¹Î¼Cï¼OS—IIä¸‹ç·¨å¯«ä¸æ–·æœå‹™(wù)程åºä»¥åŠå¤–è¨(shè)é©…(qÅ«)動程åºçš„一般æ€è·¯ã€‚
1 μCï¼OS-IIçš„ä¸æ–·è™•ç†åŠ51系列單片機(jÄ«)䏿–·ç³»çµ±(tÇ’ng)分æž
μCï¼OS-II䏿–·æœå‹™(wù)程åºï¼ˆISRï¼‰ä¸€èˆ¬ç”¨åŒ¯ç·¨èªžè¨€ç·¨å¯«ã€‚ä»¥ä¸‹æ˜¯ä¸æ–·æœå‹™(wù)程åºçš„æ¥é©Ÿã€‚
ä¿å˜å…¨éƒ¨CPU寄å˜å™¨ï¼›èª¿(dià o)用OSIntEnter()或OSIntNesting(全局變é‡ï¼‰ç›´æŽ¥åŠ 1ï¼›
執(zhÃ)行用戶代碼åšä¸æ–·æœå‹™(wù)ï¼›
調(dià o)用0SIntExit();
æ¢å¾©(fù)所有CPU寄å˜å™¨ï¼›
執(zhÃ)è¡Œä¸æ–·è¿”回指令。
μCï¼OS-IIæä¾›å…©å€‹ISR與內(nèi)æ ¸æŽ¥å£å‡½æ•¸(shù)ï¼›OSIntEnter()和OSIntExit()。OSIntEnter()通知μCï¼OS—IIæ ¸ï¼Œä¸æ–·æœå‹™(wù)程åºé–‹å§‹äº†ã€‚事實上,æ¤å‡½æ•¸(shù)åšçš„工作是把一個全局變é‡OSIntNestingåŠ 1,æ¤ä¸æ–·åµŒå¥—計數(shù)器å¯ä»¥ç¢ºä¿æ‰€æœ‰ä¸æ–·è™•ç†å®ŒæˆåŽå†åšä»»å‹™(wù)調(dià o)度。å¦ä¸€å€‹æŽ¥å£å‡½æ•¸(shù)OSIntExit()則通知內(nèi)æ ¸ï¼Œä¸æ–·æœå‹™(wù)å·²çµ(jié)æŸã€‚æ ¹æ“š(jù)相應(yÄ«ng)情æ³ï¼Œé€€å›žè¢«ä¸æ–·é»žï¼ˆå¯èƒ½æ˜¯ä¸€å€‹ä»»å‹™(wù)æˆ–è€…æ˜¯è¢«åµŒå¥—çš„ä¸æ–·æœå‹™(wù)程åºï¼‰æˆ–由內(nèi)æ ¸ä½œä»»å‹™(wù)調(dià o)度。
用戶編寫的ISRå¿…é ˆè¢«å®‰è£åˆ°æŸä¸€ä½ç½®ï¼Œä»¥ä¾¿ä¸æ–·ç™¼(fÄ)生åŽï¼ŒCPUæ ¹æ“š(jù)相應(yÄ«ng)çš„ä¸æ–·è™Ÿé‹è¡Œæº–(zhÇ”n)確的æœå‹™(wù)程åºã€‚許多實時æ“作系統(tÇ’ng)都æä¾›äº†å®‰è£å’Œå¸è¼‰ä¸æ–·æœå‹™(wù)程åºçš„API接å£å‡½æ•¸(shù),但μCï¼OS—IIå…§(nèi)æ ¸æ²’æœ‰æä¾›é¡žä¼¼çš„æŽ¥å£å‡½æ•¸(shù),需è¦ç”¨æˆ¶åœ¨å°CPU的移æ¤ä¸è‡ªå·±å¯¦ç¾(xià n)。這些接å£å‡½æ•¸(shù)與具體的硬件環(huán)境有關(guÄn),接下來以51單片機(jÄ«)ä¸‹çš„ä¸æ–·è™•ç†å°æ¤è©³ç´°(xì)說明。
51單片機(jÄ«)çš„ä¸æ–·åŸºæœ¬éŽç¨‹å¦‚下:CPU在æ¯å€‹æ©Ÿ(jÄ«)器周期的S5P2æ™‚åˆ»é‡‡æ¨£ä¸æ–·æ¨™(biÄo)志,而在下一指令周期將å°é‡‡æ¨£çš„䏿–·é€²(jìn)è¡ŒæŸ¥è©¢ã€‚å¦‚æžœæœ‰ä¸æ–·è«‹æ±‚,則按照優(yÅu)先級高低的原則進(jìn)行處ç†ã€‚響應(yÄ«ng)䏿–·æ™‚,先置相應(yÄ«ng)的優(yÅu)先級激活觸發(fÄ)器于相應(yÄ«ng)ä½ï¼Œå°éŽ–åŒç´šæˆ–ä½Žç´šä¸æ–·ï¼Œç„¶åŽæ ¹æ“š(jù)䏿–·æºé¡žåˆ¥ï¼Œåœ¨ç¡¬ä»¶æŽ§åˆ¶ä¸‹ï¼Œå°‡ä¸æ–·åœ°å€å£“å…¥å †æ£§ï¼Œå¹¶è½‰(zhuÇŽn)å‘相應(yÄ«ng)çš„ä¸æ–·å‘é‡å…¥å£å–®å…ƒã€‚通常在入å£å–®å…ƒè™•放一跳轉(zhuÇŽn)指令,轉(zhuÇŽn)å‘執(zhÃ)è¡Œä¸æ–·æœå‹™(wù)程åºï¼Žç•¶(dÄng)執(zhÃ)è¡Œä¸æ–·è¿”回指令RETI時,把響應(yÄ«ng)䏿–·æ™‚所置ä½çš„優(yÅu)先級激活觸發(fÄ)器清零åŽï¼Œå¾žå †æ£§ä¸å½ˆå‡ºè¢«ä¿è·(hù)的斷點地å€ï¼Œè£å…¥ç¨‹åºè¨ˆæ•¸(shù)器PC,CPUè¿”å›žåŽŸä¾†è¢«ä¸æ–·è™•繼續(xù)執(zhÃ)行程åºã€‚
在移æ¤çš„éŽç¨‹ä¸ï¼Œé‡‡ç”¨Keil C51作為編è¯ç’°(huán)境。KeilC5l集æˆCç·¨è¯å’ŒåŒ¯ç·¨å™¨ã€‚䏿–·å程åºç”¨åŒ¯ç·¨èªžè¨€ç·¨å¯«ï¼Œæ”¾åˆ°ç§»æ¤Î¼Cï¼0S—IIåŽçš„OS_CPU_A.ASM匯編文件ä¸ã€‚䏋颿˜¯ä»¥ä¸²è¡Œå£ä¸æ–·ç‚ºä¾‹çš„ç§»æ¤ä¸æ–·æœå‹™(wù)å程åºä»£ç¢¼ã€‚
CSEGAT0023H ;串å£ä¸æ–·éŸ¿æ‡‰(yÄ«ng)å…¥å£åœ°å€
LJMPSerialISR;轉(zhuÇŽn)移到串å£ä¸æ–·å程åºå…¥å£åœ°å€
RSEG?PR?SeriallSR?OS_CPU_A
SerialISR:
USINGO
CLR EA ;先關(guÄn)䏿–·ï¼Œä»¥é˜²ä¸æ–·åµŒå¥—
PUSHALL ;已定義的壓棧å®ï¼Œç”¨äºŽå°‡CPU寄å˜å™¨çš„å€¼å£“å…¥å †æ£§
LCALL_?OSIntEnter ;監(jiÄn)è¦–ä¸æ–·åµŒå¥—
LCALL_?Serial ;串å£ä¸æ–·æœå‹™(wù)程åº
LCALL_?OSintExlt
SETBEA
POPALL;已定義的出棧å®ï¼Œå°‡CPU寄å˜å™¨çš„值出棧
RETI
2 串å£é©…(qÅ«)動程åº
ç†è€…已在5l單片機(jÄ«)上æˆåŠŸç§»æ¤äº†Î¼Cï¼0S-IIå…§(nèi)æ ¸ï¼Œç§»æ¤éŽç¨‹åœ¨æ¤ä¸å†è¨Žè«–。這里é‡é»žåˆ†æžÎ¼Cï¼0S—IIå…§(nèi)æ ¸ä¸‹ä¸²å£é©…(qÅ«)動程åºç·¨å¯«ã€‚
由于串行è¨(shè)å‚™å˜åœ¨å¤–è¨(shè)處ç†é€Ÿåº¦å’ŒCPU速度ä¸åŒ¹é…çš„å•題,所以需è¦ä¸€å€‹ç·©æ²–å€(qÅ«).å‘串å£ç™¼(fÄ)逿•¸(shù)據(jù)時,åªè¦æŠŠæ•¸(shù)據(jù)寫到緩沖å€(qÅ«)ä¸ï¼Œç„¶åŽç”±ä¸²å£é€å€‹å–出往外發(fÄ)ã€‚å¾žä¸²å£æŽ¥æ”¶æ•¸(shù)據(jù)æ™‚ï¼Œå¾€å¾€ç‰æ”¶åˆ°è‹¥å¹²å€‹å—節(jié)åŽæ‰éœ€è¦CPU進(jìn)行處ç†ï¼Œæ‰€ä»¥é€™äº›é (yù)收的數(shù)據(jù)å¯ä»¥å…ˆå˜äºŽç·©æ²–å€(qÅ«)ä¸ã€‚實際上,單片機(jÄ«)的異æ¥ä¸²å£ä¸åªæœ‰å…©å€‹ç›¸äº’ç¨ç«‹ã€åœ°å€ç›¸åŒçš„æŽ¥æ”¶ã€ç™¼(fÄ)é€ç·©æ²–寄å˜å™¨SBUF。在實際應(yÄ«ng)用ä¸ï¼Œéœ€è¦å¾žå…§(nèi)å˜ä¸é–‹è¾Ÿå…©å€‹ç·©æ²–å€(qÅ«),分別為接收緩沖å€(qÅ«)和發(fÄ)é€ç·©æ²–å€(qÅ«)。這里把緩沖å€(qÅ«)定義為環(huán)形隊列的數(shù)據(jù)çµ(jié)æ§‹(gòu)。
μCï¼OS-IIå…§(nèi)æ ¸æä¾›äº†ä¿¡è™Ÿé‡ä½œç‚ºé€šä¿¡å’ŒåŒæ¥çš„æ©Ÿ(jÄ«)制,引入數(shù)據(jù)接收信號é‡ã€æ•¸(shù)據(jù)發(fÄ)é€ä¿¡è™Ÿé‡åˆ†åˆ¥å°ç·©æ²–å€(qÅ«)兩端的æ“作進(jìn)è¡ŒåŒæ¥ã€‚串å£çš„æ“ä½œæ¨¡å¼å¦‚下:用戶任務(wù)想寫,但緩沖å€(qÅ«)滿時,在信號é‡ä¸Šç¡çœ ,讓CPUé‹è¡Œåˆ¥çš„任務(wù),待ISR從緩沖å€(qÅ«)讀走數(shù)據(jù)åŽå–šé†’æ¤ç¡çœ 的任務(wù)ï¼›åŒæ¨£ï¼Œç”¨æˆ¶ä»»å‹™(wù)想讀,但緩沖å€(qÅ«)空時,也å¯ä»¥åœ¨ä¿¡è™Ÿé‡ä¸Šç¡çœ ,待外部è¨(shè)備有數(shù)據(jù)來了å†å–šé†’。由于μCï¼OS-IIçš„ä¿¡è™Ÿé‡æä¾›äº†è¶…æ™‚ç‰å¾…機(jÄ«)制,串å£ç•¶(dÄng)然也具有超時讀寫能力。
圖1是帶緩沖å€(qÅ«)和信號é‡çš„ä¸²å£æŽ¥æ”¶ç¤ºæ„圖。數(shù)據(jù)接收信號é‡åˆå§‹åŒ–為0,表示在環(huán)形緩沖å€(qÅ«)ä¸ç„¡æ•¸(shù)據(jù)。

æŽ¥æ”¶ä¸æ–·åˆ°ä¾†åŽï¼ŒISR從UART的接收緩沖器SBUFä¸è®€å…¥æŽ¥æ”¶çš„å—節(jié)(②),放入接收緩沖å€(qÅ«)(③),然åŽé€šéŽæŽ¥æ”¶ä¿¡è™Ÿé‡å–šé†’用戶任務(wù)端的讀æ“作(④ã€â‘ )。在整個éŽç¨‹ä¸ï¼Œå¯ä»¥æŸ¥è©¢è¨˜éŒ„ç·©æ²–å€(qÅ«)ä¸ç•¶(dÄng)å‰å—節(jié)數(shù)的變é‡å€¼ï¼Œæ¤è®Šé‡è¡¨æ˜ŽæŽ¥æ”¶ç·©æ²–å€(qÅ«)是å¦å·²æ»¿ã€‚UART收到數(shù)據(jù)并觸發(fÄ)äº†æŽ¥æ”¶ä¸æ–·ï¼Œä½†å¦‚æžœæ¤æ™‚ç·©æ²–å€(qÅ«)是滿的,那么放棄收到的å—符。緩沖å€(qÅ«)çš„å¤§å°æ‡‰(yÄ«ng)åˆç†è¨(shè)置,é™ä½Žæ•¸(shù)據(jù)丟失的å¯èƒ½æ€§ï¼Œåˆè¦é¿å…å˜å„²ç©ºé–“的浪費。
圖2為帶環(huán)形緩沖å€(qÅ«)和超時信號é‡çš„串å£ç™¼(fÄ)é€ç¤ºæ„圖。發(fÄ)é€ä¿¡è™Ÿé‡åˆå§‹å€¼è¨(shè)為發(fÄ)é€ç·©æ²–å€(qÅ«)的大å°ï¼Œè¡¨ç¤ºç·©æ²–å€(qÅ«)已空,并且關(guÄn)閉發(fÄ)é€ä¸æ–·ã€‚發(fÄ)逿•¸(shù)據(jù)時,用戶任務(wù)在信號é‡ä¸Šç‰å¾…(①)。如果發(fÄ)é€ç·©æ²–å€(qÅ«)未滿,用戶任務(wù)å‘發(fÄ)é€ç·©æ²–å€(qÅ«)ä¸å¯«å…¥æ•¸(shù)據(jù)(②)。如果寫入的是發(fÄ)é€ç·©æ²–å€(qÅ«)ä¸çš„第一個å—節(jié),則å…許發(fÄ)é€ä¸æ–·ï¼ˆâ‘¡ï¼‰ã€‚ç„¶åŽï¼Œç™¼(fÄ)é€ISR從發(fÄ)é€ç·©æ²–å€(qÅ«)ä¸å–出最早寫入的å—節(jié)輸出至UART(④),這個æ“作åˆè§¸ç™¼(fÄ)了下一次的發(fÄ)é€ä¸æ–·ï¼Œå¦‚æ¤å¾ªç’°(huán)直到發(fÄ)é€ç·©æ²–å€(qÅ«)䏿œ€åŽä¸€å€‹å—節(jié)被å–èµ°ï¼Œé‡æ–°é—œ(guÄn)閉發(fÄ)é€ä¸æ–·ã€‚在ISRå‘UARTè¼¸å‡ºçš„åŒæ™‚,給信號é‡ç™¼(fÄ)信號(⑤),發(fÄ)é€ä»»å‹™(wù)據(jù)æ¤ä¿¡è™Ÿé‡è¨ˆæ•¸(shù)值來了解發(fÄ)é€ç·©æ²–å€(qÅ«)䏿˜¯å¦æœ‰ç©ºé–“。

3 串å£é€šä¿¡æ¨¡å¡Šçš„è¨(shè)計
æ¯å€‹ä¸²è¡Œç«¯å£æœ‰å…©å€‹ç’°(huán)狀隊列緩沖å€(qÅ«)ï¼ŒåŒæ™‚有兩個信號é‡ï¼šä¸€å€‹ç”¨ä¾†æŒ‡ç¤ºæŽ¥æ”¶å—節(jié),å¦ä¸€å€‹ç”¨ä¾†æŒ‡ç¤ºç™¼(fÄ)é€å—節(jié)。æ¯å€‹ç’°(huán)狀緩沖å€(qÅ«)有以下四個è¦ç´ :
â—‡å˜å„²æ•¸(shù)據(jù)(INT8U數(shù)組);
◇包å«ç’°(huán)狀緩沖å€(qÅ«)å—節(jié)數(shù)的計數(shù)器;
◇環(huán)狀緩沖å€(qÅ«)䏿Œ‡å‘?qÅ«)⒈环胖玫å—乱蛔æ¢?jié)的指é‡ï¼›
◇環(huán)狀緩沖å€(qÅ«)䏿Œ‡å‘被å–出的下一å—節(jié)的指é‡ã€‚
圖3是接收數(shù)據(jù)軟件模塊的æµç¨‹åœ–。SerialGetehar()用來ç²å–接收到的數(shù)據(jù),如果緩沖å€(qÅ«)已空時將任務(wù)掛起,接收到å—節(jié)時,任務(wù)å°‡è¢«å–šé†’ï¼ŒåŒæ™‚å¾žä¸²è¡Œå£æŽ¥æ”¶å—節(jié)。SerialPutRxChar()用來將接收的å—節(jié)放到緩沖å€(qÅ«)ä¸ï¼Œå¦‚果接收緩沖å€(qÅ«)已滿,則該å—節(jié)被丟棄。當(dÄng)å—節(jié)æ’入到緩沖å€(qÅ«)ä¸ï¼ŒSerialPutRxChar()通知數(shù)據(jù)接收信號é‡ï¼Œä½¿ä¹‹å°‡æ•¸(shù)據(jù)己到的消æ¯å‚³é”(dá)給所有ç‰å¾…的任務(wù)ã€‚ç‚ºé˜²æ¢æŽ›èµ·æ‡‰(yÄ«ng)用任務(wù),å¯ä»¥é€šéŽèª¿(dià o)用SceiallsEmPty()去發(fÄ)ç¾(xià n)ç’°(huán)ç‹€éšŠåˆ—ä¸æ˜¯å¦æœ‰å—節(jié)。

圖4是發(fÄ)逿•¸(shù)據(jù)模塊的æµç¨‹åœ–。當(dÄng)需è¦ç™¼(fÄ)逿•¸(shù)據(jù)çµ¦ä¸²è¡Œç«¯å£æ™‚,SerialPurChar()ç‰å¾…信號é‡åœ¨åˆå§‹åŒ–發(fÄ)é€ä¿¡è™Ÿé‡æ™‚應(yÄ«ng)該åˆå§‹ç‚ºç·©æ²–å€(qÅ«)的大å°ã€‚å› æ¤ï¼Œç•¶(dÄng)ç·©æ²–å€(qÅ«)䏿²’有更多空間時,SerialPutChar()就掛起任務(wù),åªè¦UART冿¬¡ç™¼(fÄ)é€å—節(jié),掛起任務(wù)就將æ¢å¾©(fù)。SerialGctCharï¼ˆï¼‰è¢«ä¸æ–·æœå‹™(wù)程åºèª¿(dià o)用,如果發(fÄ)é€ç·©æ²–å€(qÅ«)至少還有一個å—節(jié),Seri-a1GetChar()就返回一個從緩沖å€(qÅ«)發(fÄ)é€çš„å—節(jié)。如果緩沖å€(qÅ«)己空,則SerialGetChar()返回Null,這將使調(dià o)ç”¨åœæ¢é€²(jìn)一æ¥çš„發(fÄ)é€ä¸æ–·ï¼Œä¸€ç›´åˆ°æœ‰æ•¸(shù)據(jù)發(fÄ)é€ç‚ºæ¢ã€‚
4 ç•°æ¥ä¸²è¡Œé€šä¿¡çš„æŽ¥å£å‡½æ•¸(shù)
應(yÄ«ng)用任務(wù)å¯ä»¥é€šéŽå¦‚下的幾個函數(shù)來控制和訪å•UART:SerialCfgPort()ã€SerialGetChar()ã€SerialInit()ã€SerialIsEmpty()ã€SerialIsFull()和SerialPutChar()。
SerialCfgPort()用于建立串行端å£çš„特å¾ï¼Œåœ¨ç‚ºæŒ‡å®šç«¯å£èª¿(dià o)用其他æœå‹™(wù)å‰ï¼Œå¿…é ˆå…ˆèª¿(dià o)用該函數(shù)ï¼ŒåŒ…æ‹¬ç¢ºå®šæ³¢ç‰¹çŽ‡ã€æ¯”特數(shù)ã€å¥‡å¶æ ¡é©—å’Œåœæ¢ä½ç‰ã€‚
SerialGetChar()使應(yÄ«ng)用程åºå¾žæŽ¥æ”¶æ•¸(shù)據(jù)的環(huán)狀緩沖å€(qÅ«)ä¸å–出數(shù)據(jù)。
SerialInit()用于åˆå§‹åŒ–整個串å£è»Ÿä»¶æ¨¡å¡Šï¼Œä¸”å¿…é ˆåœ¨è©²æ¨¡å¡Šæä¾›çš„其他任何æœå‹™(wù)å‰èª¿(dià o)用。SeriallInit()將環(huán)狀緩沖å€(qÅ«)計數(shù)器的å—節(jié)數(shù)清零,并åˆå§‹åŒ–æ¯å€‹ç’°(huán)狀緩沖å€(qÅ«)çš„INå’ŒOUT指é‡ï¼ŒæŒ‡å‘數(shù)據(jù)å˜å„²å€(qÅ«)的開始處。數(shù)據(jù)接收信號é‡åˆå§‹åŒ–為0,表示在環(huán)狀緩沖å€(qÅ«)無數(shù)據(jù)。用傳é€ç·©æ²–å€(qÅ«)大å°åˆå§‹åŒ–數(shù)據(jù)傳é€ä¿¡è™Ÿé‡ï¼Œè¡¨ç¤ºç·©æ²–å€(qÅ«)已空。
SerialIsEmpty()å…許應(yÄ«ng)用程åºç¢ºå®šæ˜¯å¦æœ‰å—節(jié)å¾žä¸²å£æŽ¥æ”¶é€²(jìn)來。本函數(shù)å…許在無數(shù)據(jù)時é¿å…將任務(wù)掛起。
SerialIsFull()å…許應(yÄ«ng)用程åºç¢ºå®šå‚³é€ç’°(huán)狀緩沖å€(qÅ«)的狀態(tà i),本函數(shù)å¯ä»¥åœ¨ç·©æ²–å€(qÅ«)已滿時é¿å…將任務(wù)掛起。
SerialPutChar()å…許應(yÄ«ng)用程åºå‘一個串行端å£ç™¼(fÄ)逿•¸(shù)據(jù)。
çµ(jié) 語
該串å£é€šä¿¡æ¨¡å¡Šå……分利用了實時內(nèi)æ ¸çš„ä»»å‹™(wù)調(dià o)åº¦åŠŸèƒ½å’Œä¿¡è™Ÿé‡æ©Ÿ(jÄ«)制,系統(tÇ’ng)軟件模塊化,å¯è®€æ€§å¢žå¼·(qiáng),便于修改和移æ¤ï¼Œå…¶è¨(shè)計æ€è·¯å’Œæ–¹æ³•å¯ä»¥å¾ˆå¥½çš„æ‡‰(yÄ«ng)用在多種情æ³ä¸‹çš„æ¸¬æŽ§ç³»çµ±(tÇ’ng)ä¸ï¼Œç³»çµ±(tÇ’ng)的擴(kuò)展方便,具有一定的借鑒作用。該串å£é€šä¿¡æ¨¡å¡Šå·²ä½œç‚ºæŸéµè·¯ä¾›æ°´é (yuÇŽn)程控制終端的一部分,é‹è¡Œç©©(wÄ›n)定,æé«˜äº†æ•´å€‹ç³»çµ±(tÇ’ng)çš„é‹è¡Œæ•ˆçŽ‡å’Œå¯¦æ™‚æ€§ã€‚