700 likes | 858 Views
嵌入式視訊隨選應用程式之開發與實作 Development and Implement of an Embedded Video-on-Demand Application. 國立中興大學電機工程系 系統與網路實驗室. Outline. 系統架構與功能介紹 嵌入式系統開發 建構跨平台環境 系統應用程式開發 結論與未來工作. Video On Demand. VOD ( Video On Demand ) 隨選視訊系統,乃是將各種媒體 以數位化方式儲存於伺服資料庫中。
E N D
嵌入式視訊隨選應用程式之開發與實作Development and Implement of an Embedded Video-on-Demand Application 國立中興大學電機工程系 系統與網路實驗室
Outline • 系統架構與功能介紹 • 嵌入式系統開發 • 建構跨平台環境 • 系統應用程式開發 • 結論與未來工作
Video On Demand • VOD ( Video On Demand )隨選視訊系統,乃是將各種媒體以數位化方式儲存於伺服資料庫中。 • 多媒體光碟(CD-TITLE)、VCD、LD、錄影帶、錄音帶、音樂CD、幻燈片、圖片等影音資料 • 互動性多媒體電腦網路系統。 • 能同時提供多位使用者,經由網路,同時使用同一資料或不同資料 • 是一種由使用者主導的 視訊選擇系統。 • 不需下載影音檔案,並可以依照個人喜好「隨選隨看」,不受播放權限、時間的約束
Video On Demand (2) • 隨選視訊系統依架構不同可以分成三類: • 有線電視隨選視訊架構 • 電腦網路隨選視訊架構 • 折衷式隨選視訊架構
Embedded VOD System • 目的: • 有別於一般隨選系統模式 • 方便攜帶手持操作 • 開發一套具有無線功能的手持裝置,透過網路與伺 服器建立互動機制進而實現視訊隨選功能以及加入 專屬應用功能的系統
系統架構與功能介紹 • 系統架構: • 主要由三個部分所組成: • 視訊隨選伺服器(The VOD server) • 傳輸網路(The transport network) • 使用者端(The end user)
系統架構與功能介紹(2) 使用者端(The end user): • 使用Intel StrongARM處理器之嵌入式開發平台。 • 以Embedded Linux 作業系統為主,使用Qt/Embedded 設計GUI介面。 • 移植開放程式碼VideoLAN Client (VLC) video streaming的應用軟體作為主要的影音播放核心。 • 透過平台上PCMCIASlot ,採用Wireless CF Card 實現無線網路功能
系統架構與功能介紹(3) • 使用者端規格
TFT LCD Audioout Expansion Slot RS-232 StrongARM USB Keys IrDA PCMCIA Slot SDRAM Wireless CF Card Power Flash Memory StrongARM 開發板外觀 系統架構與功能介紹(4)
系統架構與功能介紹(5) 伺服端(Server): • 採用 Redhat Linux 9.0為作業系統,架構為 TCP/IP client-server 型態並透過 socket 程式撰寫,負責接收客戶端傳送過來的訊息作為互動機制。 • 在視訊編解碼與傳輸的功能部分,採用VLC程式。 • 資料管理部分則採用MySQL資料庫。
系統架構與功能介紹(6) • VOD伺服器規格
系統架構與功能介紹(7) 傳輸網路(The transport network):
系統架構與功能介紹(8) 功能介紹: • 視訊隨選(Video On Demand, VOD)功能 • 採用網際網路協定上的技術,前半段採用 TCP 方式讓客戶端與伺服端建立連線後,接著會員資料確認,後半段為伺服器端負責將所要求影片作傳送動作。 • 傳輸影片媒體時所採用的技術為串流(Streaming)播放方式。 • RTP 即時傳輸協定與UDP 使用者資料段協定。
系統架構與功能介紹(9) • 網路電視功能 • 透過網路收看電視節目。 • 伺服器端將節目影片以群播(Multicasting)方式傳送。 • 使用者端可依據不同的選項來選擇頻道節目。 • 不同頻道的區分方式是採用經由不同通訊埠作傳遞輸出。 • 其他應用功能 • 內建MP3功能。 • 小型遊戲。
系統架構與功能介紹(10) • 伺服器功能 • 簡易的VOD伺服器。 • 會員認證管理: • 使用權限認證及負責管理客戶端的資料。 • 例如:帳號、密碼。 • 使用紀錄: • 使用者登入登出時間、影片隨選紀錄。
Outline • 系統架構與功能介紹 • 嵌入式系統開發 • 建構跨平台環境 • 系統應用程式開發 • 結論與未來工作
何謂嵌入式系統? • 嵌入式系統早期主要應用於軍事及航空領域,之後慢慢被應用於工業控制、自動化方面,近年來更漸漸進入消費性電子產品的領域。 • 一種電腦軟體與硬體的綜合體,並且特別強調 『量身定做』的原則 --- 客制化(Customize) 。 • 以應用爲中心,僅將所需要的功能的嵌入至系統中 • 對於可靠性、成本、電力嚴格要求的專用計算機系統。 • 常見的嵌入式系統產品有手機、PDA、機上盒(Set-Top-Box, STB)以及各種網路設備等。
嵌入式作業系統 • 在嵌入式系統中,硬體的部分是由MPU和ASIC所組成,而軟體部分則是由作業系統與應用程式所組成。 • 主要考量的觀點有以下幾項: • 即時性 • 嵌入性 • CPU支援 • 檔案系統 • 驅動程式模組化 • 軟體開發工具 • 圖形視窗介面
Embedded Linux • 我們所採用的作業系統是Embedded Linux,因為Linux除了上述的優點以外,還有其他優點: • 免費且自由使用 • Linux 採開放原始碼架構 • 支援的平台與相關資源多 • 將Linux作業系統進行縮減與修改的動作,使之能在嵌入式系統上運行的一種作業系統。
使用者程式 系統呼叫介面 檔案系統 行程管理 記憶體管理 裝置控制 網路功能 檔案系統介面 記憶體管理 程式碼 與CPU平台 相關的程式碼 字元型式 裝置 網路介面 驅動程式 區塊型式裝置 flash memory network interface serial port processor memory 圖2.4 嵌入式Linux內部系統架構
嵌入式系統如何動作? • 在系統上需要有三個主要軟體元件 --- Boot image , kernel image , filesystem 。 • 通常存放在 Flash Memory中。 • 當系統Powers up或Reset時,有下列的動作發生: • Boot • 初始化系統Memory與Processor的Registers • 初始化Interrupt controller與install預設的Interrupt handler • 初始化系統在開機時期所需的peripheral devices
嵌入式系統如何動作(2) • 啟動 Loader • 為Boot image裡一段程式碼 • 讀取 kernel image載入至 SDRAM解壓縮 • 進入 kernel起始點開始執行 start_kernel() • kernel 初始化 • Kernel 內各種不同objects與services --- Task objects ,Timer services , Memory-Management services • Load系統上裝置驅動程式初始化相關硬體設備 • 掛載filesystem 並Starting 作業系統與 initial tasks
嵌入式系統程式開發 • 跨平台編譯 --- Cross Complier • 在「某一個處理器平台」中產生出「另一個處理器平台」可執 行檔的編譯器。 ---arm-linux-gcc在x86的平台下可以編譯出ARM平台執行檔的 cross-compiler。 • 需要對主機/目標平台進行規劃,讓開發者得以在主機上發展目 標平台的軟體,然後將軟體下載到目標平台進行測試。 • 需在主機上建立一個跨平台編譯的環境。 ---包含了編譯器、連結器、程式函式庫、及一些工具程式等
Host端開發 runtime library Target端執行 原始檔 執行檔 編譯器 連結器 組譯器 .s .o 其他.o檔
嵌入式系統程式開發(2) • 在GNU跨平台開發工具中,支援ARM的cross-compiler開發工具所需的元件部份如下: • GCC: C/C++ compiler,即為cross-compiler,負責將C的 程式碼編譯成ARM的組合語言碼。 • Binutils: ARM的組譯器,負責將ARM的組合語言碼組譯成 機械碼。 • GLIBC: C runtime library,提供執行檔在執行時期,可對 函式庫作動態連結,以減少執行檔的大小。 • ftp://ftp.gnu.org/gnu/下載GNU工具鏈(ToolChain)的各 項元件。
系統開發規劃類型 • 嵌入式系統平台主機/目標板開發規劃的類型根據製造商 所採用的方式不同 常見分為: • 連結式規劃(Linked setup) • 可抽換儲存裝置規劃(Removable storage setup) • 連結式規劃 (Linked setup) • 目標板和主機會一直被實體的纜線連結在一起。 • 連結的纜線通常是一條序列線或是一條Ethernet的連結。 • 主要特色是,目標板與主機之間並未用到實際的硬體儲存裝置 來轉移資料 --- 都是經由連結。
主機 目標板 *Bootlodar *Kernel * filesystem *跨平台開發環境 Series Ethernet 主機/目標板採用連結規劃
系統開發規劃類型(2) • 連結式的另一種做法是,以遠端元件來簡化目標板的開發工作。 • 使用簡易檔案傳輸協定(TFTP)下載 Kernel至目標板 • 經由網路檔案系統(NFS)掛載根檔案系統 • Ethernet 連結目的是用來下載可執行檔、核心、根檔案 系統,以及其他可得利於主機與目標板間快速資料傳輸的大型項目。 • RS-232連結目的用於主機對目標板的命令下達與除錯。
系統開發規劃類型(3) • 可抽換儲存裝置規劃(Removable storage setup) • 主機與目標平台之間沒有實體的連結。 • 由主機將資料寫入一儲存裝置,而後將儲存裝置轉接至目標平台 ,並以此儲存裝置來開機。 • 目標板的核心或根檔案系統若變動時就需更新儲存裝置的上的資料內容。 目標板 主機 儲存裝置 *Bootlodar *跨平台開發環境 * Kernel * filesystem
Outline • 系統架構與功能介紹 • 嵌入式系統開發 • 建構跨平台環境 • 系統應用程式開發 • 結論與未來工作
跨平台開發工具 • 一般而言,嵌入式系統不會有多餘的記憶體或儲存空間 專門用來做編譯之用,所以需要由其他平台來產生嵌入 式系統的執行檔,然後再載入到目標板上執行。 • 開發應用程式與執行應用程式的平台不相同 • Cross-development tool 跨平台開發工具的需要 • 對任何目標板進行應用程式的cross-complier需要各種 的 binary utilities --- toolchain 。 • arm-linux-ld , arm-linux-as , arm-linux-gcc , glibc
工具元件版本 • 使用以下版本的元件來建立 arm-linux 跨平台環境
建立程序 • 建立跨平台開發工具的程序可分成五大步驟: • 核心標頭檔的規劃 • Binutils 程式的規劃 • Gcc 編譯器的規劃 • Glibc函式庫的規劃 • 完整編譯器規劃 • 在每個部份大都會執行以下動作: • 1.解開套件 2.設定組態 3.建立套件 4.安裝套件
完成跨平台開發工具之建立 * PATH=/usr/local/arm
Outline • 系統架構與功能介紹 • 嵌入式系統開發 • 建構跨平台環境 • 系統應用程式開發 • 結論與未來工作
系統程式開發 系統上有主要四個程式部份: • 網路程式設計 • GUI視窗程式 • 資料庫程式 • 影音編解碼應用程式
網路程式設計 • 系統網路程式設計 • 主要目標是建立伺服器與使用者之間的連線並針對使用者的要 求作出回應,並傳送指定的視訊影片給使用者來作接收動作。 • 採用socket程式設計,作為客戶端/伺服器系統相互通訊方式。 • 伺服端為一個多工型態伺服器(Concurrent server)架構型態。 • 登入認證與視訊隨選的工作,主要是透過I/O函數,如read()、write()。
GUI介面 GUI視窗程式設計 --- Qt/Embedded • 以Qt 為主體衍生為專為嵌入式系統的開發套件。 • 跨平台的視窗程式Framework,由C++程式語言撰寫,為一個 物件導向的函式庫 • 使用控制圖形視框緩衝區(Framebuffer)的方式把影片直接輸出 到 framebuffer 上,而不是透過 X 視窗系統 • 透過所支援的類別(class)與伺服器建立連線溝通 • TCP/IP socket , QNetworkProtocol • 使用Qt/Embedded的模擬器—qvfb
建立GUI程式 • 當Qt/Embedded 函式庫建立完成之後,可以開始設計 GUI介面,步驟如下: • 以Qt Designer 製作GUI的interface file (.ui) • 利用 Qt工具 user interface compiler (uic) 產生.cpp 與 .h • 使用 Qt 工具 progen 與 tmake 分別先後產生.pro與 Makefile • 修改 Makefile 的內容,接著編譯產生執行檔。