Linux嵌入式系統

 
以Linux嵌入式系統實現虛擬實境動態模擬器控制
研究主題
  本論文以Linux嵌入式系統為控制平台,實現虛擬實境動態模擬器控制。此系統利用Strong ARM 1110微處理器的GCPlus單板[1]為嵌入式系統硬體,並移植Linux作業系統至單板上,再撰寫Linux CAN-Bus驅動程式及其它序列傳輸介面程式來控制虛擬實境動態模擬器。

  硬體架構方面,主要包含GCPlus單板及DSP EVM板等。軟體設計部份,主要包括移植Linux作業系統至GCPlus單板上,撰寫序列傳輸介面程式,及GCPlus / DSP CAN-Bus Driver等。至於六軸運動平台控制,目前多使用工業電腦(IPC)或是由單晶片驅動控制,但IPC不僅體積龐大且價格昂貴,單晶片驅動控制則缺乏作業系統的支援,容易造成在未來擴充發展上的不易。因此我們選擇以Linux嵌入式系統來發展虛擬實境動態模擬器控制,在Linux嵌入式系統上發展控制程式,不僅未來易於發展、擴充,更可以利用嵌入式硬體之多種序列傳輸介面來控制虛擬實境動態模擬器,進而大幅簡化硬體的體積。研究結果顯示:應用嵌入式系統為傳輸媒介,具有系統設計模組化、開放式架構、簡化配線、易於擴充等多重優點;而以Linux為作業平台,具有高穩定度、高可攜性、良好程式發展平台等多項優點,將上述兩項加以結合則更加切合未來動態模擬器控制技術的發展方向。

  

  虛擬實境是多種應用技術之結合,它包括了滿足人體視覺系統的虛擬場景及人體動覺系統的平台控制。而隨著各項技術日漸成熟,虛擬實境應用的層面也就越發寬廣,各種潛在的優勢也吸引了更多人的眼光。像其中主宰人體動覺系統的動感模擬器即為近年來頗受重視的高科技產品,它能真實的呈現出各種動作,使人獲得如置真實世界般的感受,因此在軍事、醫療與娛樂上廣為應用。而動感電影院更是各大型遊戲樂園的重點項目之一。而由於近年來晶片製作技術越來越強,再加上開放原始碼技術日漸普及,各種嵌入式系統應運而生,因此將動感模擬器結合嵌入式系統也就成了一股不可抵擋的趨勢,發展嵌入式系統便是未來五年台灣多媒體產業的發展重點。

  而在既有的動感模擬器控制系統上,主要是使用工業電腦(IPC)或是由單晶片驅動控制,但IPC不僅體積龐大且價格昂貴,單晶片驅動控制則缺乏作業系統的支援,容易造成在未來擴充發展上的不易。因此在本論文中便想將運動平台控制系統模組化,使其能在最少的硬體體積及軟體成本下,達到最大的控制效果。並能移植作業系統至嵌入式模組上,使控制系統程式在未來發展上更具彈性。

  

  綜合以上討論,如果我們能將IPC體積縮小成DSP控制卡之大小,並能在上面移植作業系統,則將使控制系統體積大幅縮小,並能使未來控制程式發展更具彈性。因此,我們便嘗試以Linux嵌入式系統來取代舊有的控制方式,這不僅使控制系統體積大幅減少,也使的我們能在Linux作業系統上發展控制程式,使的程式發展更具彈性。而嵌入式系統週邊亦支援TCP/IP網路,也使我們突破DSP控制卡無法連接TCP/IP網路的困境。

研究說明
在嵌入式硬體部分,我們所採用的是由Apply Data System公司所生產的Graphics Client Plus產品。選擇這塊板子的原因是因為它有豐富的序列傳輸介面,包括IrDA、RS-232、RS-485及CAN-Bus,也有內建10Base-T網路以及觸控式螢幕及鍵盤等,並且支援包括Linux、WinCE等五種嵌入式作業系統,可以發展的嵌入式種類及相關應用程式可謂相當豐富。

  GCPlus其主要週邊功能介紹如下:

  1. Adds support for PCMCIA, Compact FLASH, and USB Master
  2. 16/32 MB SDRAM and 128KB BOOT ROM
  3. Three Serial:IrDA、RS-232、RS485 and CMOS available
  4. CAN Bus Serial interface
  5. 10Base-T Ethernet Interface
  6. Smart I/Otm
  7. Microphone Input
  8. External Interrupt Inputs

  而在單板上可以操作下列四種作業系統:

  1. Windows CE 2.12
  2. LINUX
  3. Microware OS-9
  4. VxWorks
由前面可以得知,我們是在GCPlus單板上發展嵌入式系統來控制虛擬實境動態模擬器,因此我們必須先移植Linux作業系統至GCPlus單板上,使單板成為Linux嵌入式系統。而因為Linux作業系統本身的套件(distribution)就有RS-232及TCP/IP的驅動程式,因此我們並不需要再從新撰寫,只需要以開檔讀檔的方式及可以傳送或接收資料。

  但是因為Linux作業系統本身的套件並沒有CAN-Bus的驅動程式,因此我們必需要發展驅動程式,來作為與DSP EVM板的傳輸介面。而相對的DSP也必須發展CAN-Bus的程式及RS-232的接收程式,如此才可以與GCPlus溝通,接收六軸腳長,然後將腳長轉電壓,控制動態模擬器。

  其系統方塊圖如下圖(2.8)所示。


圖(2.8)系統發展流程

  在動態模擬器六軸姿態的傳遞方式上,我們將發展CAN-Bus通訊協定及RS-232串列傳輸、TCP/IP網路等三種傳遞方式,因此必須在嵌入式系統上發展CAN-Bus驅動程式及其他介面傳輸應用程式;除此之外,還需發展DSP CAN-Bus程式,如此才能以CAN-Bus傳遞六軸控制姿態至動態模擬器驅動控制盒上。

  因為GCPlus是一個以StrongAMR 1110微處理器為核心的嵌入式硬體,因此其發展環境與一般X86系統相異,我們必須先建立Linux作業平台(Linux作業系統版本必須與移植至嵌入式系統相同),並建立Cross Compiler環境(在X86系統下發展嵌入式系統的環境),如此才能使用GNU C library及利用arm-linux-gcc來編譯程式及發展驅動程式。

研究成果
整個虛擬實境動態模擬系統是由以下三大部分所構成:
  1. WTK或VTree所產生的虛擬場景動態模型。
  2. 一個2-DOF的力迴饋搖桿。
  3. 由Linux嵌入式系統、DSP控制卡與史都華六軸運動平台所組成的動作模擬系統。


圖(5.1)虛擬實境動態模擬架構

  我們發展嵌入式系統核心及其週邊驅動程式、應用程式以後,我們將以虛擬實境場景與Linux嵌入式系統、實驗室自行開發的DSP控制卡做結合。因為自行發展之DSP控制卡並沒有包含CAN-Bus模組,因此無法整合在此動態模擬器控制系統中。我們將以TCP/IP網路接收來自VTree虛擬實境場景的六軸姿態,經過奇異點迴避及逆向運動學計算出六軸腳長,然後再透過RS-232傳遞到DSP控制卡驅動六軸平台。以下便依序介紹系統控制應用程式,DSP控制卡系統流程及嵌入式系統控制流程。

系統程式規劃

  本實驗室所發展的DSP控制卡是以Keyboard及LCD Display來顯示選單及選擇操作模式與控制法則,操作模式包括有一個以RS-232串列傳輸為主的PC Game選項,另外有路徑展示、平台測試的選項以及順項運動學的數值運算選項。

  在本系統中,選項1負責由RS-232接收六軸腳長,然後轉換電壓輸出。選項4是平台測試,目的是觀看平台是否正確的工作,所以在這平台的測試是直接送一組弦波值,讓平台依弦波而在Z軸上下運動,所以不須加任何控制法則。選項5是Forward Kinematics的運算,這只是純粹用來做數值的運算,並沒有輸出值至平台讓平台動作。

  虛擬實境場景的連線方式,除了考慮到場景平台是否有支援以外,還必須考慮到連接的模組、嵌入式系統硬體及其作業系統是否有支援。我們在發展Linux嵌入式系統時,即發展完整的介面傳輸方式,但因為求學術上發展之便利,以及在不更動現有場景平台硬體接線的情況下,我們採用TCP/IP網路傳輸協定作為場景與嵌入式系統之間的底層資料傳輸協定。

嵌入式系統控制流程
圖(5.4)動態模擬器控制系統整合

  在本系統架構中,我們在以StrongARM 1110為微處理器的GCPlus單板上移植Linux作業系統,系統核心大小為541K byte,檔案系統大小為2.7M byte。在開啟單板電源後,boot loader會載入系統核心,驅動所有硬體裝置,進行系統的初始化動作,此時我們可以在PC的終端機上看到所有的系統資訊。當出現Linux要求login的訊息後,單板成功進入Linux文字模式。接著我們便可以將Linux嵌入式系統與場景及DSP控制卡連線。

  如圖(5.4)所示,GCPlus單板可經由TCP/IP網路,接收來自Vtree虛擬實境場景的六軸運動姿態(X、Y、Z、α、β、γ),然後我們可以在Linux嵌入式系統上以應用程式實現控制法則,例如奇異點迴避及逆向運動學的控制程式等,得到六軸腳長。最後再透過RS-232傳送給DSP控制卡來驅動六軸平台。

  此系統的優點是能將複雜的數學運算及控制法則移至Linux嵌入式系統上發展,不僅較為容易且更具發展彈性。在未來只要以應用程式的方式撰寫控制程式,即可在嵌入式系統上執行,能避免改寫DSP code,破壞其原有程式架構。

未來展望
以Strong ARM 1110為核心的Linux嵌入式系統,是一種較新的嵌入式硬體單版,我們利用它來控制動態模擬器,不但可以簡化原有控制硬體線路,而且可以透過各種傳輸介面與場景及六軸平台連結,來接收或傳送六軸姿態及腳長;而且嵌入式系統內有移植Linux作業系統,這使的我們可以更容易的發展控制程式與控制法則,使未來程式發展更具彈性。

  在Linux嵌入式系統中,我們發展許多傳輸介面程式,但因為系統單板上並沒有足夠的A/D、D/A介面可供使用,因此我們還需要與DSP控制卡連結,來驅動動態模擬器。因此在未來的工作上,本文提出下列項目以供參考:

  1. 將Linux嵌入式系統中所移植的Linux作業系統,改以移植Real Time Linux作業系統,使嵌入式系統具有即時的功能,在接收的資料經處理後,在可估計的時間內傳給DSP或其他週邊系統,增加系統的穩定度。
  2. 規劃CAN-Bus網路,使其達到一對多控制的功能。CAN-Bus具有訊息辨識的能力,當CAN-Bus在作傳輸時,即使傳輸線突然被中斷,在接回後仍能續傳,資料不會遺失。
  3. 自行設計Strong ARM的單板,加入DSP晶片與A/D、D/A的功能,而中間資料與訊號的傳輸則可以透過Dual Port RAM來傳。如此不但可以大幅減少硬體的體積,也可以加快資料傳送的速度。
  4. 若能將整個系統由Linux嵌入式系統所取代,不但能以較小的硬體控制設備達成目標,而開放原始碼的軟體更可以使系統成本大大降低,相信這會是未來的一大趨勢。