摘 è¦: 本文è¨è¨ˆå¹¶å¯¦ç¾äº†è»Šè¼›ç›£æŽ§èª¿åº¦ç³»çµ±ï¼Œåœ¨ç³»çµ±è¨è¨ˆä¸é‡‡ç”¨S3C44B0Xåšç‚ºè™•ç†å™¨ï¼Œå¹¶å°åµŒå…¥å¼ç³»çµ±ä¸é–‹ç™¼ä¸çš„å¹¾å€‹é—œéµæŠ€è¡“é€²è¡Œäº†åˆ†æžï¼šæ“ä½œç³»çµ±å…§æ ¸èª¿åº¦æ©Ÿç†ï¼ŒåŸºäºŽç‹€æ…‹æ©Ÿçš„程åºè¨è¨ˆå’Œç¡¬ä»¶è¨è¨ˆã€‚
é—œéµè©žï¼šè»Šè¼›èª¿åº¦ï¼›ç‹€æ…‹æ©Ÿã€æ“作系統。
一ã€è»Šè¼›èª¿åº¦ç³»çµ±çš„æ•´é«”è¨è¨ˆ
整個系統包括四個部分(1)通信主站;(2)車載從站;(3)通信éˆè·¯ã€‚(4)系統監控部分。下é¢å°å„個部分的功能åšä¸€å€‹ç°¡å–®çš„介紹。
(1)通信主站:完æˆä¿¡æ¯çš„轉發,它是連接系統監控部分和車載從站的ç´å¸¶ï¼Œå®ƒå°‡å¾žç³»çµ±ç›£æŽ§éƒ¨åˆ†ä¾†çš„ä¿¡æ¯è½‰ç™¼çµ¦è»Šè¼‰å¾žç«™ã€‚并且接收車載從站的信æ¯ï¼Œå¹¶å°‡ä¿¡æ¯ä¸Šå‚³çµ¦ç³»çµ±ç›£æŽ§éƒ¨åˆ†ã€‚
(2)車載從站:被監控的å°è±¡ï¼ŒæŽ¥æ”¶ç›£æŽ§èª¿åº¦å‘½ä»¤ï¼Œå¹¶å¯ä»¥è¿”回自己的狀態信æ¯ã€‚狀態信æ¯çš„å–得是ä¾é 在車載從站ä¸çš„GPS接收機來完æˆè»Šè¼›ä½ç½®å’Œé€Ÿåº¦ä¿¡æ¯ç‰çš„采集工作。
(3)通信éˆè·¯ï¼šå®Œæˆé€šä¿¡ä¸»ç«™å’Œè»Šè¼‰å¾žç«™çš„ä¿¡æ¯å‚³éžåŠé€šä¿¡ä¸»ç«™å’Œç³»çµ±ç›£æŽ§éƒ¨åˆ†çš„ä¿¡æ¯äº¤äº’。其ä¸å‰è€…在本次è¨è¨ˆä¸æ˜¯ä»¥GSM手機模塊åšç‚ºé€šä¿¡çš„工具,而åŽè€…是采用RS232或USB來實ç¾çš„。
(4)系統監控部分:以圖形的方å¼å°‡è¢«ç›£æŽ§è»Šè¼›çš„ä½ç½®ä¿¡æ¯é¡¯ç¤ºåœ¨é›»å地圖上(GIS,地ç†ä¿¡æ¯ç³»çµ±çš„采用),并且å¯ä»¥é¡¯ç¤ºå…¶ç‹€æ…‹ç‰æ–‡å—ä¿¡æ¯ã€‚并且å¯ä»¥é€šéŽç³»çµ±ç›£æŽ§éƒ¨åˆ†çš„人機界é¢ä¾†å®Œæˆèª¿åº¦å‘½ä»¤ç‰ä¿¡æ¯çš„輸入。由于在很多的論文ä¸åŒ…å«äº†é€™äº›è»Šè¼›ç›£æŽ§ç³»çµ±çš„基本組æˆå…ƒç´ ,所以在這里就簡單的介紹一下。相關內容å¯ä»¥åƒè€ƒæœ‰é—œçš„論文資料。下é¢é‡é»žè¨Žè«–UC/OS-IIçš„å…§æ ¸èª¿åº¦æ©Ÿç†ã€æ“作系統的移æ¤ã€åŸºäºŽç‹€æ…‹æ©Ÿçš„嵌入å¼ç³»çµ±ç¨‹åºé–‹ç™¼å’Œç¡¬ä»¶è¨è¨ˆæ–¹é¢çš„å•題。圖一給åˆä¸€å€‹è»Šè¼›ç›£æŽ§ç³»çµ±çš„示æ„圖。

äºŒã€æ“ä½œç³»çµ±çš„å…§æ ¸èª¿åº¦æ©Ÿç†
ç”±äºŽæœ¬ç³»çµ±å°æ™‚æ€§è¦æ±‚䏿˜¯å¾ˆå¼·ï¼Œé‡‡ç”¨äº†UC/OS-II這種簡單的æºç¢¼é–‹ç™¼çš„æ“ä½œç³»çµ±ã€‚ç”±äºŽUC/OS-IIæ˜¯ä»¥ä»»å‹™ç‚ºåŸºç¤Žé€²è¡Œèª¿åº¦çš„ã€‚æ‰€ä»¥ç³»çµ±ä¸æ‰€è¦è™•ç†çš„ä¸é–“çµæžœæˆ–響應外部的輸入和輸出,都應該在任務ä¸å®Œæˆã€‚任務的調度是基于優先級的(UC/OS䏿”¯æŒæ™‚間片輪轉的方法)。在多任務調度開始åŽï¼Œæ™‚é˜ç¯€æ‹é–‹å§‹å·¥ä½œï¼Œæ™‚é˜ç¯€æ‹ç”¢ç”Ÿå‘¨æœŸæ€§çš„䏿–·ï¼Œæ™‚é˜ç¯€æ‹æä¾›å»¶æ™‚æˆ–è¶…æ™‚çš„ä¾æ“šã€‚å¤šä»»å‹™å•Ÿå‹•ä¹‹å‰æ‡‰è©²å…ˆé€²è¡Œåˆå§‹åŒ–的工作,包括CPUã€TCB(任務控制塊)ã€ECB(事件控制塊)和æ“作系統本身的åˆå§‹åŒ–ç‰ã€‚åˆå§‹åŒ–完畢åŽå¤šä»»å‹™å•Ÿå‹•,系統總是é‹è¡Œå°±ç·’狀態優先級最高的任務。由于任務本身是一個無é™çš„循環,所以任務ä¸å¿…é ˆåŒ…å«å¼•起任務切æ›çš„函數,如OSTimeDly()ã€OSSemPend()ç‰ï¼ŒåŸ·è¡Œåˆ°é€™äº›å‡½æ•¸æ™‚將引起任務的切æ›ï¼Œå³ä»»å‹™çš„調度。任務切æ›ä¹‹å‰æ‡‰è©²ä¿è·ç¾å ´ã€‚任務之間è¦é€²è¡Œé€šä¿¡ï¼Œé€šä¿¡çš„æ–¹å¼å¾ˆå¤šï¼Œå¯ä»¥é‡‡ç”¨å…¨å±€è®Šé‡ã€å…±äº«å˜å„²å€ç‰ä¸€äº›å¸¸ç”¨çš„æ–¹å¼ï¼Œä½†åœ¨é‡‡ç”¨UC/OS-II的系統ä¸ä»»å‹™ä¹‹é–“的通信更多采用信號é‡ã€æ¶ˆæ¯éƒµç®±ç‰é€²è¡Œã€‚
ä¸‰ã€æ“作系統的移æ¤
å°‡UC/OS-II這個æ“作系統移æ¤åˆ°ä¸‰æ˜Ÿå…¬å¸ARM7TDMI S3C44B0Xä¸Šè¦æ³¨æ„OSCtxSW()這個任務切æ›å‡½æ•¸ï¼Œå…¶ä¸ä»»å‹™åˆ‡æ›çš„æ ¸å¿ƒæ˜¯åˆ©ç”¨å‡ºæ£§æŒ‡ä»¤å°‡å„個任務的工作ç¾å ´åР以æ¢å¾©ã€‚åˆ©ç”¨ä¸æ–·è¿”回指令改變PC的指é‡é”到任務切æ›çš„ç›®çš„ã€‚å®ƒå¯¦éš›ä¸Šæ˜¯å¾žä»»å‹™å †æ£§ä¸æ¢å¾©è™•ç†å™¨æ‰€æœ‰çš„寄å˜å™¨ï¼Œå¹¶ä¸”åŸ·è¡Œä¸æ–·è¿”å›žæŒ‡ä»¤ã€‚å¯¦éš›çš„ç§»æ¤æ˜¯ç”¨è»Ÿä»¶ä¾†æ¨¡æ“¬ä¸æ–·çš„發生。移æ¤ä¸çš„é—œéµå•é¡Œæ˜¯å¦‚ä½•æ§‹é€ ä»»å‹™å †æ£§åŠä»»å‹™åˆ‡æ›æ™‚çš„å‡ºæ£§é †åºã€‚而任務å€å †æ£§åˆå§‹åŒ–ä¸»è¦æ˜¯æ¨¡æ“¬ä»»å‹™è¢«ä¸æ–·åŽå †æ£§ä¸çš„內容。å¦å€¼å¾—注æ„çš„æ˜¯é–‹é—œä¸æ–·çš„函數OS_ENTERCRITICAL()和OS_EXIT_CRITICAL()這個函數。這兩個函數實ç¾äº†å°è‡¨ç•Œå€å…§å®¹çš„ä¿è·ã€‚
å››ã€åŸºäºŽç‹€æ…‹æ©Ÿçš„程åºè¨è¨ˆ
整個系統的軟件è¨è¨ˆé‡‡ç”¨ä»»å‹™åŠ ç‹€æ…‹æ©Ÿçš„è¨è¨ˆæ–¹æ³•,由于系統ä¸é‡‡ç”¨äº†UC/OS-IIçš„æ“ä½œç³»çµ±ï¼Œæ‰€ä»¥ç³»çµ±ä¸æ‰€æœ‰äº‹ä»¶è™•ç†éƒ½é‡‡ç”¨ä»»å‹™èª¿åº¦çš„æ–¹å¼ï¼Œä»»å‹™åœ¨æ“作系統得調度下é‹è¡Œã€‚而å°äºŽæ¯å€‹ä»»å‹™é‡‡ç”¨åŸºäºŽç‹€æ…‹æ©Ÿçš„è¨è¨ˆæ–¹æ³•ï¼Œå¼•èµ·ç³»çµ±ä¸æŸå€‹ç‹€æ…‹ç™¼ç”Ÿè½‰ç§»çš„事件å¯èƒ½æ˜¯ä¿¡è™Ÿé‡ã€ä¹Ÿå¯èƒ½æ˜¯å…¶å®ƒçš„事件。下é¢å°ç‹€æ…‹æ©Ÿçš„æœ‰é—œå…§å®¹åŠ ä»¥ä»‹ç´¹ã€‚
狀態機å¯ä»¥çœ‹æˆæ˜¯ä¸€å€‹ç‹€æ…‹å’Œè½‰æ›çš„圖,æè¿°äº†æ‡‰ç”¨ç¨‹åºå°æŽ¥æ”¶åˆ°äº‹ä»¶çš„響應。
狀態機的執行:狀態機在æŸå€‹æ™‚åˆ»è™•ç†æŸå€‹äº‹ä»¶è€Œåœ¨è™•ç†å¦å¤–的事件之å‰å¿…é ˆå®Œæˆå°é€™å€‹äº‹ä»¶çš„處ç†å¹¶å¾—åˆ°çµæžœã€‚
基于狀態機的程åºåŸ·è¡ŒéŽç¨‹æ˜¯é€™æ¨£çš„:在任何時候都å˜åœ¨ä¸€å€‹æˆ–者多個狀態機活動的狀態。如果一個狀態是活動的,那么離開這個狀態的轉æ›å¯èƒ½æœƒæ¿€ç™¼ï¼Œå¼•起一個事件的執行,并使得å¦ä¸€å€‹ç‹€æ…‹æˆ–ä½äºŽåˆå§‹ç‹€æ…‹ä½ç½®çš„狀態激活(下一個狀態處于åˆå§‹ç‹€æ…‹ï¼‰ã€‚
狀態機它是說明狀態機的å°è±¡åœ¨å°è±¡è‡ªå·±çš„生命期ä¸äº‹ä»¶çš„æ‰€ç¶“æ·çš„狀態åºåˆ—以åŠå®ƒå€‘å°é‚£äº›äº‹ä»¶çš„響應。å¯ä»¥é€™æ¨£ç†è§£ç‹€æ…‹æ©Ÿç‹€æ…‹æ©Ÿæ˜¯å°è±¡çš„狀態在事件的作用下從一個狀態轉移到å¦ä¸€å€‹ç‹€æ…‹ã€‚  
狀態機ä¸çš„幾個基本概念:
1.狀態(state):是指在å°è±¡çš„生命期ä¸çš„一個æ¢ä»¶æˆ–ç‹€æ³ï¼Œåœ¨æ¤æœŸé–“å°è±¡å°‡æ»¿è¶³æŸäº›æ¢ä»¶ã€åŸ·è¡ŒæŸäº›æ´»å‹•或ç‰å¾…æŸäº›äº‹ä»¶ã€‚
2.事件(event)是å°ä¸€å€‹åœ¨æ™‚é–“å’Œç©ºé–“ä¸Šå æœ‰ä¸€å®šä½ç½®çš„æœ‰æ„義的事情的說明。在狀態機ä¸ä¸€å€‹äº‹ä»¶çš„產生å¯ä»¥å¼•起一次狀態轉æ›ã€‚
3.轉æ›ï¼ˆtransition)是兩個狀態之間的一種關系,它指明å°è±¡åœ¨ç¬¬ä¸€å€‹ç‹€æ…‹ä¸åŸ·è¡Œçš„一定的動作,并當特定事件或特定æ¢ä»¶æ»¿è¶³æ™‚進入第二個狀態。
在嵌入å¼ç³»çµ±çš„程åºè¨è¨ˆä¸ï¼Œæ‡‰è©²æ³¨æ„çš„å¦ä¸€å€‹å•題是函數的å¯é‡å…¥å•題, å¯é‡å…¥å‡½æ•¸å¯ä»¥è¢«éžæ¸èª¿ç”¨ï¼Œå¯ä»¥åŒæ™‚è¢«å…©å€‹æˆ–å¤šå€‹é€²ç¨‹èª¿ç”¨ï¼Œé€™å°±è¦æ±‚在編è¯çš„æ™‚候è¦ç‚ºå¯é‡å…¥å‡½æ•¸æä¾›ä¸€å€‹æ¨¡æ“¬å †æ£§å€ã€‚
圖二是è¨è¨ˆä¸é‡‡ç”¨ç‹€æ…‹æ©Ÿé€™ç¨®è¨è¨ˆæ–¹æ³•è¨è¨ˆçš„系統程åºä¸LCDé¡¯ç¤ºéƒ¨ä»½ã€‚ä¸‹é¢æ˜¯å°åœ–二的解釋。
å…¶ä¸èœå–®1是顯示æ¡è¿Žç•Œé¢ï¼ˆå°±æ˜¯ä¸Šé¢æåˆ°çš„狀態);èœå–®2是發é€çŸæ¶ˆæ¯ï¼›èœå–®3是記錄發é€çŸæ¶ˆæ¯å…§å®¹çš„ï¼›èœå–®4æ˜¯ç”¨ä¾†è®€å–æŽ¥æ”¶åˆ°çš„çŸæ¶ˆæ¯ã€‚具體的狀態轉移éŽç¨‹æ˜¯é€™æ¨£çš„,當顯示處于æ¡è¿Žç•Œé¢çš„æ™‚候,在這個狀態下,如å‘下的按éµè¢«æŒ‰ä¸‹ï¼ˆé€™å°±æ˜¯ä¸€å€‹äº‹ä»¶ï¼‰æˆ–發é€çŸæ¶ˆæ¯çš„éµè¢«æŒ‰ä¸‹ï¼Œå‰‡ç³»çµ±ç‹€æ…‹è½‰ç§»åˆ°èœå–®2(發生了一次狀態轉移,下é¢å’Œé€™æ˜¯é¡žä¼¼çš„,故相應的分æžçœç•¥äº†ã€‚);在這個狀態下,當å‘下按éµè¢«æŒ‰ä¸‹æˆ–系統è¦è¼¸å…¥ç™¼é€çŸæ¶ˆæ¯çš„內容時候,系統狀態從èœå–®2進入èœå–®3;在這個狀態下,當å‘下的éµç›¤è¢«æŒ‰ä¸‹ï¼Œç³»çµ±çš„狀態轉移到èœå–®4;讀å–çŸæ¶ˆæ¯çµæŸæ™‚,系統狀態返回到æ¡è¿Žç•Œé¢ã€‚實際的系統還有返回按éµç‰ï¼Œé€™é‡Œåªæ˜¯ç”¨é€™å€‹åœ–簡單說明采用狀態機的程åºè¨è¨ˆæ–¹æ³•。
五ã€ç¡¬ä»¶è¨è¨ˆ
為了從分利用S3C44B0X的時é˜é »çŽ‡é«˜çš„ç‰¹é»žï¼Œæ¸›å°S3C44B0Xåœ¨å–æŒ‡å’Œå˜å–數據的延é²ï¼Œç³»çµ±ä¸é‡‡ç”¨å°‡ä»£ç¢¼å›ºåŒ–在FLASHä¸ï¼Œå¹¶åœ¨ç³»çµ±å•Ÿå‹•åŽå°‡ä»£ç¢¼å¾žFLASHæ‹·è²åˆ°SDRAMä¸é‹è¡Œã€‚并且系統ä¸é‡‡ç”¨PDIUSBD12åšç‚ºé€šä¿¡ä¸»ç«™å’ŒPC上的系統監控部分之間通信。比起RS232串行通信方å¼ï¼Œé€Ÿåº¦æœ‰å¾ˆå¤§çš„æ¶²æé«˜ã€‚å°¤å…¶åœ¨èª¿åº¦çš„è»Šè¼›æ•¸é‡æ¯”較多的時候其速度優勢是比較明顯的。
å…ã€ç¸½çµ
ç¶“éŽç³»çµ±çš„é‹è¡Œï¼Œç³»çµ±é”到了è¨è¨ˆçš„è¦æ±‚。
åƒè€ƒæ–‡ç»
[1]一種嵌入å¼ç³»çµ±è¨å‚™é©…動程åºé–‹ç™¼æ¨¡åž‹å²æ›‰é¾ç‰ã€Šè¨ˆç®—機工程與應用》2004-5
[2]《軟件模型è¨è¨ˆåŸºç¤Žã€‹æ›¹å‰ï¼ˆä¾†è‡ªä¸åœ‹ç³»çµ±åˆ†æžå“¡ï¼‰ã€‚
[3] S3C44B0X RISC MICROPROCESSOR PRODUCT OVERVIEW。
[4]嵌入å¼å¯¦æ™‚æ“作系統Uc/OS-II(第二版)邵è²è²ç‰è¯åŒ—京航空航天大å¸å‡ºç‰ˆç¤¾ã€‚
[5]實時æ“作系統UC/OS-II在196KCä¸Šçš„ç§»æ¤ çŽ‹å·ç‰ã€Šå·¥æ¥æŽ§åˆ¶è¨ˆç®—機》2003å¹´16å·ç¬¬5期