999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

WinCE電子紙閱讀器實現的關鍵問題研究

2010-09-25 02:58:38李慶誠劉建志
單片機與嵌入式系統應用 2010年8期
關鍵詞:程序

李慶誠,劉建志

(南開大學軟件學院,天津 300071)

引 言

近幾年來,很多廠家紛紛加入電子紙閱讀器領域,推出了許多新的技術和產品使這個產業有了快速的發展。與紙質閱讀相比,電子紙閱讀器具有無輻射、資源豐富、存儲容量大、便于攜帶等特點,所以得到了越來越多用戶的關注和使用。

WinCE是微軟推出的一款通用嵌入式操作系統,具有模塊化系統定制、多硬件平臺支持、強大的開發工具支持等特點[1]。此外,WinCE平臺提供了多種格式的閱讀應用程序,開發者只需要添加組件就可以支持多種格式的閱讀。本設計采用WinCE操作系統和E-Ink屏幕,實現了支持多種文檔格式閱讀、屏幕旋轉、觸摸屏輸入、PC同步等功能的電子紙閱讀器。

1 WinCE系統架構

如圖1所示,按照功能層次劃分,WinCE系統架構可以分為硬件、板級支持包(BSP)、操作系統(OS)以及應用程序四層結構[2]。

設計WinCE系統時,針對不同硬件平臺需要按照如下步驟進行系統開發:

①開發系統BSP,包括啟動程序(Bootloader)、設備驅動和OAL,使WinCE在硬件平臺上運行;

②根據應用需求,選擇合適的OS組件構建系統映像;

③使用定制OS的SDK開發應用程序。

按上述步驟實現電子紙閱讀器過程中,開發電子紙顯示驅動和閱讀器應用程序開發是實現閱讀器的兩個關鍵問題。

2 關鍵問題解決

2.1 電子紙顯示驅動

WinCE顯示驅動由 GWES.exe加載管理,通過WinCE內核的一個組件GDI(Graphics Device Interface)加載調用顯示驅動。應用程序通過GDI組件調用顯示驅動,并在電子紙上顯示。

圖1 WinCE系統架構

微軟公司提供了一系列與顯示驅動相關的C++代碼來簡化WinCE顯示驅動開發。這些類中最重要的是純虛類(Graphics Primitive Engine,GPE)。通過繼承該類實現GPE的虛函數,可以完成顯示驅動MDD層的開發[3]。

此外,微軟提供了多種不同顯示設備的驅動源代碼。其中,NOPDISP是一個簡單的顯示驅動框架,實現了顯示驅動GPE類的虛函數[4]。在NOPDISP簡單清晰的驅動框架基礎上添加電子紙控制器設備相關代碼,即可實現本設計電子紙的WinCE顯示驅動。

WinCE電子紙顯示驅動主要包括設備初始化、刷屏機制和旋轉支持3個部分。

2.1.1 設備初始化

在生成GPE類派生對象Wrap2bpp構造函數中完成初始化工作,設置GPE相關成員變量,包括顯示寬度、顯示高度、像素點存儲位數以及顯存等變量。通過調用PDD層接口DispDrvrInitialize完成初始化電子紙控制器與CPU相連的GPIO端口,設置時鐘中斷,分配顯存空間的工作[5]。

在PDD層生成顯存空間buffer,并在MDD層將GPE成員變量m_pVirtualFrameBuffer賦值為buffer。這樣應用程序的繪圖請求通過MDD層在顯存地址空間保存顯示數據內容,當PDD層確定繪圖區域進行刷屏時,向電子紙控制器送入顯存相應位置和大小的數據進行顯示。

2.1.2 刷屏機制

顯示驅動被GWES.exe加載后,當應用程序第一次有繪圖請求時,調用DispDrvrDirtyRectDump函數。具體流程如圖2所示。

首先,清除Bootloader啟動界面殘影,創建刷屏事件 freshEvent1、freshEvent2,創建刷屏狀態state并初始化為 state0;然后,創建刷屏線程,調用 file Rect函數填充本次繪圖區域。

當應用程序再次有繪圖請求時,根據顯示驅動保存的繪圖區域和應用程序的繪圖請求區域兩個參數創建新的繪圖區域。顯示驅動刷屏線程會根據當時刷屏狀態采取不同動作。

圖2 電子紙顯示驅動創建刷屏線程流程

圖3 刷屏狀態轉換圖

圖3為顯示驅動刷屏過程 中 state0、state1、state2三個刷屏狀態的轉換圖。當狀態為 state0時,會等待刷屏請求;狀態為state1時,設置等待時間為50 ms,刷屏線程直到應用程序沒有刷屏請求后轉到state2狀態再進行刷屏;狀態為state2時,進行刷屏操作,同時記錄此時應用程序的刷屏請求、刷屏數據以及區域信息。這樣減少了刷屏次數,起到了緩沖作用,解決了不斷刷屏所造成的應用程序響應時間慢以及實用性差的問題。

2.1.3 旋轉支持

屏幕旋轉包括圖像旋轉和坐標系旋轉兩個部分:設置電子紙控制器相關寄存器的值,通過控制器提供的旋轉功能對顯存中的數據進行旋轉,完成圖像旋轉;修改GPE的成員變量m_iRotate為改變后的角度,完成坐標系的旋轉。

2.2 應用程序開發

電子閱讀器的主要功能主要包括兩部分應用程序:不同文檔格式的閱讀程序;書架程序,用來顯示存儲介質中的文檔,并調用格式對應的閱讀程序進行顯示。

本文設計的電子紙閱讀器除了具有基本的文檔閱讀功能外,還包括瀏覽器、應用程序擴展、系統設置等功能。如圖4所示,應用程序主要包括主界面、書架、應用、瀏覽器,以及系統設置等程序。

圖4 應用程序

2.2.1 主界面程序

主界面程序是電子閱讀器啟動時首先調用的程序,根據用戶點擊位置調用書架、瀏覽器、應用、系統設置四個不同的程序。

本文通過修改配置文件實現主界面程序隨內核啟動自動運行:

①修改桌面任務欄,使任務欄不在最前面并自動隱藏,這樣應用程序全屏顯示就會覆蓋任務欄;

②去掉注冊表中桌面存在的快捷方式,并將桌面背景修改為主界面背景;

③添加主界面程序到注冊表,實現啟動自動運行。

這樣,就可以在系統啟動時先調用exploere.exe,啟動背景為首頁程序界面的WinCE桌面,而后調用首頁應用程序。

2.2.2 書架程序

WinCE 提供 txt、html、pdf、doc、ppt等多種格式的閱讀程序,在系統內核定制中通過添加組件將這些閱讀程序編譯到WinCE內核鏡像中。在書架程序中,讀取Flash和SD卡存儲設備中存儲的文件信息,對于支持的文件格式將文件名及文件大小等信息顯示在書架界面上;用戶點擊書架上顯示的文檔,根據擴展名調用對應的閱讀程序閱讀文檔。

在啟動閱讀程序時,會同時創建一個進程,啟動一個旋轉按鈕,附著于閱讀應用窗口用來控制屏幕的旋轉。圖5為旋轉應用程序的流程。通過Change-DisplaySettingsEx函數來調用顯示驅動的DrvEscape函數完成屏幕旋轉;在進程中,同時創建一個線程用來檢測閱讀程序狀態,當閱讀程序退出時把屏幕旋轉到豎屏顯示,保證書架程序正常顯示。

2.2.3 應用擴展

WinCE內核定制后導出的SDK可以提供給用戶或者其他程序開發人員,使用微軟公司的Visual studio或者Embedded Visual C++開發工具開發自己的應用程序。在主界面中的“應用”就是用來提供給用戶進行應用程序擴展的程序。本設計在SD卡配置文件中添加應用程序的名稱、路徑、參數等信息。應用擴展程序被調用時,讀取該配置文件顯示擴展的應用。

圖5 閱讀器旋轉應用程序流程

3 驗 證

本文驗證平臺采用S3C2416主控制器。S3C2416是三星公司推出的基于ARM926EJ內核的32位RISC嵌入式控制器。其運行頻率可以達到400 M Hz,片上集成指令和數據分開的16 KBCache、定時器、看門狗以及外圍設備控制器等;使用6寸電子紙顯示屏,分辨率為 600×800,支持16級灰度和屏幕旋轉。

基于硬件平臺開發對應的BSP,包括Bootloader、設備驅動和OAL層。按照設計需求定制內核生成WinCE鏡像,然后導出平臺SDK開發閱讀器應用程序,而后下載到硬件平臺測試運行。圖6為應用程序顯示效果,左圖為書架程序,右圖為閱讀程序。

圖6 書架和閱讀程序顯示效果

此外,通過實驗計算了系統啟動時間、刷600×800圖片以及旋轉屏幕所需的時間。

3.1 系統啟動時間

如圖7所示,系統從上電到顯示主界面程序需要25.07s左右。除了硬件初始化、WinCE系統啟動時間以外,用Bootloader從NAND Flash中加載WinCE內核到內存中將近消耗了14 s。

本設計中定制的組件較多,包括Viewer應用程序、中文字庫支持、瀏覽器等組件.鏡像大小在26.3MB左右,可以通過生成MultiBin的方法,首先加載WinCE系統必需的組件,其他組件在需要時或者系統啟動后再加載,以改善系統啟動時間。

圖7 系統啟動時間

3.2 刷屏時間

如圖8所示,通過應用程序繪制600×800的圖片,刷屏時間大約為739 ms,進行屏幕旋轉操作大概需要1 558 ms。其中,屏幕旋轉操作時間包括坐標系的旋轉、應用程序接收到重繪消息進行重新繪圖,以及電子紙控制器對顯存數據旋轉刷屏的時間,所以時間相對較長。

圖8 系統刷屏時間

結 語

本文詳細介紹了實現電子紙閱讀器過程中電子紙顯示驅動和應用程序開發兩個關鍵問題,并在硬件平臺實現了基于WinCE操作系統的電子紙閱讀器。該電子紙閱讀器支持多種格式閱讀、觸摸屏輸入、PC文件同步傳輸、多種存儲介質等功能,具有一定的應用價值。

[1]何宗健.WinCE嵌入式系統[M].北京:北京航空航天大學出版社,2006.

[2]辛雁峰,夏海寶,易春海.基于S3C2440移動終端的WinCE開發[J].微計算機信息,2009,25(3-2):71-73.

[3]Introduction to WinCE display driver[EB/OL].[2010-04].http://www.xgdown.com/article/175/51890_3.htm.

[4]Microsoft Corporation.Platform Builder for Microsoft Window CE 5.0 Help,2004.

[5]Samsung.S3C2416 User's Manual,2008-10.

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 欧美一区二区丝袜高跟鞋| 久久国产精品国产自线拍| 国产成人亚洲综合a∨婷婷| 成年人免费国产视频| 91久久精品日日躁夜夜躁欧美| 中文字幕自拍偷拍| 精品午夜国产福利观看| 综合色区亚洲熟妇在线| 亚洲愉拍一区二区精品| 国产精品尤物在线| 性视频一区| 中文字幕在线观看日本| 幺女国产一级毛片| 国产91小视频在线观看| 一本大道香蕉中文日本不卡高清二区 | 少妇高潮惨叫久久久久久| 中国一级特黄大片在线观看| 欧美国产精品拍自| 成人福利在线免费观看| 91亚瑟视频| 谁有在线观看日韩亚洲最新视频| 久久久久亚洲av成人网人人软件| 欧美日韩动态图| 成年女人a毛片免费视频| www.91中文字幕| 亚洲国产91人成在线| 亚洲侵犯无码网址在线观看| 色久综合在线| 激情六月丁香婷婷| 日本道综合一本久久久88| 丰满人妻一区二区三区视频| 亚洲天堂首页| 美女无遮挡被啪啪到高潮免费| 3344在线观看无码| 亚洲娇小与黑人巨大交| 国产一区二区三区免费观看| a毛片在线免费观看| 55夜色66夜色国产精品视频| 亚洲国产黄色| 五月婷婷亚洲综合| 国产精品网址你懂的| 国产亚洲视频中文字幕视频 | 亚洲丝袜第一页| 露脸一二三区国语对白| 久草热视频在线| JIZZ亚洲国产| 国产亚洲精品自在线| 欧美无遮挡国产欧美另类| 亚洲免费毛片| 亚洲精品va| 91口爆吞精国产对白第三集 | 日韩天堂在线观看| 亚洲清纯自偷自拍另类专区| 久青草免费在线视频| 中国美女**毛片录像在线| 天天综合网在线| 国产激爽大片在线播放| 成人免费午间影院在线观看| 亚洲欧洲自拍拍偷午夜色| 日韩天堂视频| 中文字幕伦视频| 亚洲毛片一级带毛片基地| 国产在线观看精品| 最新国产在线| 亚洲av片在线免费观看| 国产福利小视频高清在线观看| 日本道综合一本久久久88| 国产激情无码一区二区三区免费| 欧美视频在线观看第一页| 91免费片| 六月婷婷精品视频在线观看| 91区国产福利在线观看午夜| 日韩高清成人| 亚洲国产成人精品青青草原| 91在线高清视频| 国产精品所毛片视频| 亚洲色图欧美激情| 91无码人妻精品一区二区蜜桃| 婷婷综合亚洲| 日韩精品无码免费一区二区三区 | 欧美笫一页| 亚洲资源站av无码网址|