a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 消費電子 > 設計應用 > 基于S1C33L11的JPEG圖像實時顯示和數據傳送系統的設計

基于S1C33L11的JPEG圖像實時顯示和數據傳送系統的設計

作者:■ 華中師范大學 電子與計算機研究所 鄧彬偉 張和平 朱紹文 時間:2005-03-04 來源:電子設計應用2004年第12期 收藏

摘    要:本文介紹了將嵌入式操作系統移植到微處理器的方法,并給出了以為核心構成的一個圖像實時顯示和數據傳送系統的設計方案。
關鍵詞:

本文引用地址:http://www.j9360.com/article/4538.htm

引言
近年來,隨著微處理器性能的不斷提高,嵌入式應用越來越廣泛。基于某個操作系統的實時、多任務系統的設計和應用成為微處理器應用的熱點。S1C33L11是由精工愛普生推出的32位高速、低功耗和低電壓微處理器。本文介紹了將嵌入式操作系統移植到S1C33L11微處理器的方法,并給出了以S1C33L11為核心構成的圖像實時顯示和數據傳送系統的設計方案。

mC/OS-II的移植
mC/OS-Ⅱ的源碼絕大部分是用移植性很強的ANSI C寫的,只是和微處理器硬件相關的那部分采用匯編語言,這樣把mC/OS-II移植到S1C33L11中主要是要修改與處理器有關的代碼,如:OS_CPU.H、OS_CPU_C.C 、OS_CPU_A.ASM。
OS_CPU.H文件
OS_CPU.H文件主要是定義和處理器有關的數據類型及有關中斷禁止、中斷允許、堆棧的增長方向的設置。
S1C33L11處理器所使用的編譯器中規定char為8位有符號數、short為16位有符號數、int和long都是32位有符號數。S1C33L11中堆棧的增長方向為從高地址到低地址。
OS_CPU_C.C文件
 在OS_CPU_C.C文件中包含6個簡單的C函數,而和移植密切相關的是OSTaskInit()函數,它的功能是模擬中斷發生時處理器壓棧過程,把CPU的寄存器內容壓到任務堆棧中。
在S1C33L11中,堆棧是32位的,中斷的產生是先把PC壓棧然后是PSR壓棧。S1C33L11中OSTaskInit()函數模擬壓棧過程是:首先任務函數地址壓棧然后是PSR值壓棧,接著是16個32位通用寄存器(R15~R0)的壓棧模擬、AHR、ALR和SP的壓棧模擬,最后返回棧頂的指針地址。其中PSR的值為 0x00000010設為中斷使能。
OS_CPU_A.ASM文件
在OS_CPU_A.ASM文件中包含四個匯編語言的函數:OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()和OSTickISR()。
OSStartHighRdy()函數由OSStart()函數調用,功能是運行優先級最高的就緒任務。在這個函數的移植中,關鍵之一是從OSTCB HighRdy中得到所指堆棧中的SP,其二是出棧操作。由于在本移植中SP是最后壓棧的,在出棧時,應是彈出完16個通用寄存器后的SP值才是中斷返回指令執行前的SP,因而在出棧操作時彈出的SP值不傳給SP。
OSCtxSw()是一個任務級的任務切換函數。在S1C33L11系統上,它通過執行0號軟中斷的指令來實現任務切換。這個函數中移植的關鍵點是壓棧操作,因為根據OSTaskInit()函數中所設置的堆棧順序,最后壓棧的是SP,把SP的值壓入棧中后SP的值減少了4字節,而這個減小了4字節后的SP值才是需要壓入棧中的SP的真正的值。做壓棧操作時要對此進行處理。  
OSIntCtxSw()是一個中斷級的任務切換函數,由于中斷的產生可能會引起任務切換,在中斷服務程序的最后會調用OSIntExit()函數檢查任務就緒狀態,如果需要進行任務切換,將調用OSIntCtxSw()。由于在調用OSIntCtxSw()之前已經發生了中斷,因而在進入這個函數后應對SP的值進行相應的更改,之后的代碼和OSCtxSw()中的一樣。
OSTickISR()是mC/OS-II的時鐘節拍器,mC/OS-II的時鐘節拍頻率在10到100之間,通常為了計算方便而設為整數。在S1C33L11中用16位定時器0來做節拍器。

JPEG圖像實時顯示和
數據傳送系統設計
多任務系統的設計是以S1C33L11微處理器為核心,以mC/OS-II為操作系統,通過USB總線實現JPEG圖像的實時顯示和數據傳送的系統。其中USB與PC機通信是利用mC/OS-II的信號量通信機制通過對循環隊列的操作來實現,JPEG圖像解碼是通過S1C33L11自帶的JPEG解碼器來實現,并通過S1C33L11自帶的LCDC控制器實現在彩色LCD上的顯示。
系統硬件
在系統硬件上兩個重要的控制器是S1C33L11 內置的USB功能控制器和JPEG編解碼器。
S1C33L11 USB功能控制器
S1C33L11 USB功能控制器支持USB1.1協議的全速模式。支持控制、塊、同步和中斷4種傳輸方式及4個通用通道(Epr(r=a,b,c,d))和一個控制通道(Endpoint0),并為每個通道提供1KB的FIFO。
S1C33L11 JPEG編解碼器
在S1C33L11中,JPEG編解碼器包括在LCDC 模塊中,基于JPEG基線系統(Baseline Standard),滿足JPEG Part-2(ISO/IEC10918-2)的兼容性測試要求。圖像支持最大640*480分辨率,量化表提供兩個壓縮表和4個解壓縮表,哈夫曼表為每個AC(交流系數)和DC(直流系數)提供兩個表。在編碼處理中可插入標志最大可達36字節。在整個解碼過程中被自動傳送和處理的標志有SOI、SOFO、SOS、DQT、DHT、DRI、RSTm和EOI。解碼器支持YUV4:4:4、YUV4:2:2、YUV4:1:1和YUV4:2:0,編碼器支持YUV4:2:2格式,不支持RGB格式。圖像數據處理速率在640*480分辨率下一般少于1/15秒。此外,S1C33L11的JPEG編碼器目前只能夠把從照相接口(Camera Interface)引入的YUV數據流通過捕捉調整器(Capture Resizer)壓縮成JPEG圖像,來自顯示緩沖數據的JPEG編碼不被支持。
硬件組成
JPEG圖像實時顯示和數據傳送系統電路框圖如圖1所示,包括S1C33L11FOOA1、STN TFT 彩色LCD(SHARP 的LQ022B8DD05)、鍵盤和片外擴展的4M*16bit FLASH和1M*16bit SRAM(EPSON 的S1H0J646B2T)。
系統軟件
JPEG解碼與顯示
JPEG解碼與顯示流程框圖如圖2所示。
USB雙向通信的設計
USB雙向通信在基本傳輸方式上采用USB塊傳輸,由USB初始化、USB中斷處理、控制傳輸和塊傳輸幾部分組成。在實現雙向通信上,具體通信機制是:嵌入式應用程序通過讀寫循環隊列(OUT循環隊列和IN循環隊列各一個)和信號量狀態與USB 硬件模塊中的OUT 和IN FIFO相互通信,而USB下位機與上位機(PC)的讀寫通信則通過上位機對自定義控制包的讀寫來實現,最后通過循環隊列、信號量、控制包三者的結合來達到USB雙向通信的目的。
JPEG圖像實時顯示和數據的發送設計
   JPEG數據處理和顯示作為一個任務,通過讀取USB OUT循環隊列和信號量狀態接收來自PC機的JPEG圖像數據,并進行LCD顯示處理。當JPEG解碼器解碼和LCDC驅動LCD顯示時,USB做為另一個任務仍可接收JPEG數據,從而達到JPEG數據的實時顯示。同樣,數據的發送和PC機的數據接收也可實現實時性。
系統整體設計
系統中除了mC/OS-II的空閑任務外,還有數據存儲任務、JPEG數據處理和顯示任務、數據發送任務、鍵盤中斷任務和USB運行任務。數據存儲任務優先級為30,用于USB數據的存儲;JPEG數據處理和顯示任務優先級為15,用于JPEG數據的處理和顯示;數據發送任務優先級為20,用于向USB IN循環隊列寫入數據;鍵盤任務的優先級為10,通過讀取鍵盤中斷設置的事件狀態進行相應的處理,主要是USB運行任務、JPEG數據的處理和顯示任務、數據發送任務的加載和卸載以及發出信號量通知數據存儲任務進入就緒態等;USB運行任務的優先級為5,通過讀取USB中斷設置的事件狀態從硬件USB FIFO中讀取和發送數據。
軟件系統的整體設計框圖如圖3所示。

結語
把uC/OS-II移植到S1C33L11中,并以S1C33L11為核心構成一個JPEG圖像實時顯示和數據傳送系統,不僅系統設計簡潔,硬件集成度高,而且具有較強的抗干擾能力和系統穩定性。以S1C33L11為微處理器構成的多任務系統在實時多任務系統中,特別在多媒體系統中,具有很高的性價比和應用前景。■



評論


相關推薦

技術專區

關閉