色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于s3c44b0x嵌入式開發平臺實現移植microwindows的方法與過程

電子設計 ? 來源:電子設計應用 ? 作者:李凱,竇振中,宋 ? 2020-03-11 08:00 ? 次閱讀

microwindows是由gregory haerr組織的一個開放源碼項目,是嵌入式系統中廣泛應用的一種圖形用戶接口(gui),該項目的目標是在嵌入式linux平臺上提供與普通個人電腦類似的圖形用戶界面。作為x_windows的替代品,microwindows提供了和x_windows類似的功能,但是卻占用很少的內存,根據用戶的配置,microwindows占用的內存資源只有100kb~600kb左右。microwindows的核心是基于顯示設備接口的,可移植性較強,其本身提供了多種嵌入式系統常見的顯示設備驅動程序。目前新版本的microwindows已經內建了framebuffer,因此可以不局限于linux的開發平臺,在ecos、freebsd、minix等操作系統上都可以運行。在基于linux的開發平臺上,可以使用framebuffer機制直接讀寫顯存,也可以調用svgalib庫。在基于linux的framebuffer機制中,microwindows支持每像素1位、2位、4位、8位、16位、32位的色彩/灰度,并通過調色板技術將rgb格式的顏色空間轉換為目標機上的顏色進行顯示。microwindows系統可以圖形方式支持在主機平臺上的仿真目標平臺開發,因此microwindows應用程序就可以直接在臺式機上進行編寫和開發,通過交叉編譯就可在目標平臺上運行。

本文論述了在基于s3c44b0x的嵌入式開發平臺上,移植了clinux操作系統,并通過修改內核、編寫framebuffer幀緩沖設備驅動程序,使?clinux內核能夠支持幀緩沖設備,在此基礎上移植microwindows的方法與過程。

microwindows的體系結構

針對嵌入式系統的特性,microwindows采用了層次化結構,每一層完成特定的功能,如圖1所示。

基于s3c44b0x嵌入式開發平臺實現移植microwindows的方法與過程

圖1 microwindows體系結構

設備驅動層

設備驅動程序的接口函數定義在device.h中,其中包括了屏幕驅動程序、鼠標驅動程序和鍵盤驅動程序。圖形引擎層提供的與設備無關的圖形引擎例程通過調用設備驅動程序跟硬件設備交互,這就保證了當平臺硬件設備發生變化的時候,只需要改寫相應的驅動程序即可,無需修改上層代碼。microwindows 提供基于linux2.2.x內核的幀緩沖設備驅動程序,通過/dev/fb0 設備文件,利用mmap()系統調用將顯示緩存映射至系統內存中。

圖形引擎層

microwindows系統中的核心函數是在圖形引擎層通過調用下層硬件設備驅動程序來實現的。這些函數對屏幕、鼠標、鍵盤等驅動程序進行了封裝,為api提供了服務,用戶調用最上層提供的編程接口,而不需要直接調用引擎層的例程。在microwindows的源代碼中,核心的例程包括:

devdraw.c: 主要的圖形繪制操作,描畫和填充、圓、多邊形、文本與位圖的顯示,顏色轉換相關的代碼;

devclip.c: 剪裁操作;

devmouse.c:處理鼠標操作的信息;

devkbd.c: 處理鍵盤操作的信息;

devpalx.c: 與調色板相關的代碼;

devimage.c: 實現對gif、bmp、jpeg、ppm 等格式圖形的顯示操作;

fongt_xxxx.c: 對不同字體的顯示操作

api

microwindows提供了兩種類型的api,以便更好地適應在不同平臺上應用程序的移植。一種是與win32/win ce 基本兼容的api,支持大多數的圖形操作,它的api是基于消息機制的。另一種是采用x體系的nano-x api,它是client/server模式的,在客戶端的api函數以nx……( )命名,在服務端的api函數以gr……( )命名。

具體實現

下面具體論述microwindows在pc機和s3c44b0x開發板上的實現。首先,需要下載相應的安裝包,本文下載的是0.90版本的microwindows和相應的字庫文件。同時,由于microwindows需要使用freetype庫函數產生truetype字體,因此還需要下載安裝freetype,這里使用的的是1.3.1版本的freetype。

pc機上實現

解壓縮相關的安裝包,安裝freetype之后,就可以開始運行microwindows。在解壓縮目錄中輸入命令:。/xconfigure,就會出現相應的配置菜單,由于是在pc機上運行,應根據具體的參數配置microwindows。具體的參數配置如下:

(1) 點擊compiling option ,進入編譯選項。在隨后彈出的子窗口中選中optimize,點擊ok 返回即可。

(2) 點擊platform,進入開發平臺選項。由于是在pc機上運行,選擇“linux(native)”選項。在其后的“option”選項中,按如下配置:“screen driver”選項中,由于是在pc機上運行,選擇“x11”;在“mouse driver”鼠標選項中,選擇“gpm mouse”;在“keyboard driver”鍵盤選項中,選擇“tty”。

(3) 點擊“libraries to compile”,進入鏈接庫配置選項。其中有nanox庫和microwindows 庫,在“nanox”的“option”選項中,選擇“link app into server”和“compile demos”選項。

關于其他的參數配置,包括字庫、文件格式支持等應根據具體的情況進行配置。至此,microwindows在pc機上運行的配置工作已經完成,存盤退出,屏幕顯示配置成功。輸入命令:make,完成編譯工作。當編譯完成后,在src的bin目錄下有很多演示程序,一些是基于nano—x api 的,一些是基于win32 api 的,運行即可。

以上簡單論述了microwindows在pc機上運行的方法與過程,pc機上的運行過程相對簡單,只需要按照實際情況進行配置,編譯即可。

嵌入式開發板上的實現

下面論述microwindows在以s3c44b0x為主控芯片的嵌入式開發板中運行的步驟與方法。首先需要建立交叉編譯開發環境,這里建立的編譯器是arm-elf-gcc,匯編器是arm-elf-as,鏈接器為arm-elf-ld和庫管理器arm-elf-ar。接著,移植相應的?clinux,關于此類的文章已經較多,在此就不贅述了。最后,在clinux內核中將s3c44b0x的幀緩沖設備驅動打開,并需要建立/dev/fb0設備節點,關于s3c44b0x的幀緩沖設備驅動程序的開發已另文發表。至此,已經做好microwindows移植的基礎工作,下面具體論述實現的步驟與方法。

在microwindows的配置過程中,可以利用。/xconfigure命令進入菜單配置界面,當然也可以通過直接修改配置文件“src/config”對microwindows進行配置。這里采用的是后者,其中幾個比較關鍵的選項包括體系結構、交叉編譯器、每像素位數、幀緩沖等,具體的配置參數如下:

(1) 關于體系結構和編譯器選項

基于s3c44b0x嵌入式開發平臺實現移植microwindows的方法與過程

(2) 每像素位數screen_pixtype= mwpf_truecolor332 對于s3c44b0x,在彩色模式下,1個字節8位(3位紅色、3位綠色、2位藍色)的圖像數據對應一個像素點,即像素點字節在存儲器中保存的格式為332位。因此在設定microwindows的每像素位數時將其格式設置為332,根據頭文件的定義設定為mwpf_true color332。

(3) 幀緩沖設備由于是在嵌入式開發平臺上運行,有別于在pc機上,此時microwindows應該是基于幀緩沖驅動,即需要調用/dev/fb0設備,因此參數的配置應該為:

基于s3c44b0x嵌入式開發平臺實現移植microwindows的方法與過程

還有其他某些相關的配置參數,應根據實際情況進行配置。至此,完成了對microwindows的配置工作,下面需要根據?clinux的特性,對microwindows的源代碼進行相應修改。具體需要修改的地方包括三個方面:

在打開幀緩沖設備時,需要調用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize)函數,將屏幕緩沖區映射到用戶地址空間。在基于pc機開發時,由于在linux系統下,參數flags默認為map_shared,即對映射區域的寫入數據會復制回文件內,而且允許其他映射該文件的進程共享。由于?clinux是沒有mmu(內存管理單元)的,因此參數flags應為map_fixed ,即如果參數start所指的地址無法成功建立映射時,則放棄映射,不對地址做修正。因此,應該修改文件/src/drivers/scr_fb.c,將mmap()函數中的flags參數改為map_fixed。

如果此時直接編譯經過配置和修改源代碼的microwindows,會提示出現“undefined reference to ‘_ _ctor_list’”和“undefined reference to ‘_ _dtor_list’”的錯誤。這是由于原來在libgcc中是有_ _ctor_list和_ _dtor_list參數定義的,但在?clinux的交叉編譯鏈中,該符號被刪掉。在elf2flt的link script中提供了這兩個符號的定義,使用clinux的交叉編譯鏈編譯可執行程序就必須用-elf2flt選項。因此應在編譯的選項里加上“-elf2flt”,修改的文件包括demos文件夾下各個相關文件夾的makefile文件。

由于clinux缺少mmu硬件的支持,無法實現fork( )函數,而只能使用vfork( )函數,因此在含有fork( )函數的文件中應加入相應的條件編譯指令,用vfork( )來代替fork( )。

以上3個修改是比較重要,至此已完成了整個microwindows在s3c44b0x嵌入式開發板中的移植,編譯即可。最后,將編譯好的演示程序復制到clinux內核中,再編譯內核,將編譯好的內核映像文件下載至ram中,即可運行演示。

結語

本文主要論述了microwindows的體系結構,并且介紹了在pc機上和基于s3c44b0x的嵌入式開發板上運行的步驟和方法,指出了在開發過程應該注意的問題。下面就可以利用相應的開發工具開發microwindows的應用程序,從而實現相應的功能。

責任編輯:gt


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5086

    文章

    19143

    瀏覽量

    306094
  • 內存
    +關注

    關注

    8

    文章

    3034

    瀏覽量

    74137
  • 操作系統
    +關注

    關注

    37

    文章

    6847

    瀏覽量

    123428
收藏 人收藏

    評論

    相關推薦

    基于S3C44B0X的WAVE音頻文件播放

    采用S3C44B0X內置IIS總線和音頻數模轉換芯片CS4334,本文搭建了以二者為核心的工作平臺,并詳細討論了基于此平臺實現播放WAVE音頻文件的
    發表于 11-09 17:08 ?1702次閱讀
    基于<b class='flag-5'>S3C44B0X</b>的WAVE音頻文件播放

    采用S3C44B0X作為主控芯片,在開發板上移植

    采用S3C44B0X作為主控芯片,在開發板上移植了CLinux和Microwindows,利用ADXL105加速度傳感器實現
    發表于 06-01 09:37

    如何利用S3C44B0X和GPRS通訊模塊開發基于手機的汽車防盜系統?

    采用嵌入式開發技術,利用S3C44B0X和GPRS通訊模塊開發了基于手機的汽車防盜系統,該系統能通過車主手機實現對汽車的遠程無線監控。
    發表于 05-17 06:22

    怎么實現基于S3C44B0X嵌入式Socket通信設計?

    本文給出一種適合于中/低端應用的通信平臺設計方案,它可支持Ethernet網絡之間的數據傳輸,并且具有RS232? RS485? USB等接口?文中圍繞嵌入式uClinux環境設計了基于嵌入式通信微處理器
    發表于 05-27 06:59

    S3C44B0X pdf

    S3C44B0X p
    發表于 06-27 09:37 ?76次下載

    s3c44b0x中文資料,s3c44b0x中文數據手冊

    S3C44B0X 中文數據手冊...........................................................116 IIC 總線接口
    發表于 06-27 09:40 ?152次下載

    基于S3C44B0X 的uClinux的移植

    S3C44B0X 作為一款以ARM7TDMI 為內核的微處理器,正日益受到廣泛的應用;uClinux作為一種運行于沒有MMU 的嵌入式微處理器的Linux 衍生操作系統,也廣泛應用于嵌入式開發中。BLOB 作為一
    發表于 05-15 15:40 ?14次下載

    基于S3C44B0X+μcLinux的嵌入式以太網設計與分析

    本文介紹了基于一款ARM 處理器——S3C44B0X 的以太網接口電路設計,并詳細地闡述了在嵌入式操作系統μcLinux 下網卡驅動的實現。 關鍵詞嵌入式系統
    發表于 06-15 11:36 ?16次下載

    μC/OS-Ⅱ在S3C44B0X上的移植

    本文簡介了一種實時多任務內核μC/OS-Ⅱ。并根據S3C44B0X 芯片的硬件特性,給出了一種把μC/OS-Ⅱ移植S3C44B0X 上的方
    發表于 08-31 11:46 ?18次下載

    基于S3C44B0X處理器的VxWorks中斷設計

    通過基于立宇泰S3C44B0X 開發板的BSP 移植調試,闡述了VxWorks 的異常中斷處理機制,實現了VxWorks 基于S3C44B0X
    發表于 09-03 11:25 ?17次下載

    uCGUI 移植S3C44B0X實驗

    uCGUI 移植S3C44B0X實驗 一、實驗目的 1. 初步掌握uCGUI底層硬件驅動函數; 2. 掌握將uCGUI移植到ARM S3C44BOX上的
    發表于 01-25 11:16 ?1064次閱讀

    微處理器S3C44B0X音頻文件播放

    微處理器S3C44B0X音頻文件播放 S3C44B0X是三星公司針對嵌入式系統推出高性價比微處理器,它是基于ARM7TDMI內核的16/32位RISC處理器,工作主頻為66MHz.為
    發表于 03-16 11:46 ?776次閱讀
    微處理器<b class='flag-5'>S3C44B0X</b>音頻文件播放

    S3C44B0X原理圖

    S3C44B0X原理圖:
    發表于 09-14 15:28 ?167次下載
    <b class='flag-5'>S3C44B0X</b>原理圖

    基于S3C44B0X的汽車黑匣子的設計和開發

    摘要 本文介紹了建立在以32位三星的S3C44B0X微處理器為核心的嵌入式系統平臺上的汽車黑匣子的設計和開發。本系統主要解決的問題是:1.關于汽車行駛狀態信號數據的采集和處理。2.US
    發表于 11-06 11:09 ?0次下載
    基于<b class='flag-5'>S3C44B0X</b>的汽車黑匣子的設計和<b class='flag-5'>開發</b>

    基于S3C44B0X和μcLinux的嵌入式以太網設計與分析

    電子發燒友網站提供《基于S3C44B0X和μcLinux的嵌入式以太網設計與分析.pdf》資料免費下載
    發表于 10-11 10:04 ?0次下載
    基于<b class='flag-5'>S3C44B0X</b>和μcLinux的<b class='flag-5'>嵌入式</b>以太網設計與分析
    主站蜘蛛池模板: 国产精品你懂得| 丝袜美腿美女被狂躁在线观看| 亚洲一卡久久4卡5卡6卡7卡| 国产原创中文视频| 一本到高清视频在线观看三区| 久草免费视频在线观看| 99视频免视看| 甜性涩爱bt下载| 两个客户一起吃我的奶| 俄罗斯少女人体| 伊人久久大香线蕉综合色啪| 嫩草影院地址一地址二| 国精产品一区一区三区有| 91九色精品国产免费| 乡村教师电影完整版在线观看| 久久永久影院免费| 国产精品无码AV天天爽色欲| 97超碰射射射| 亚洲午夜精品久久久久久抢| 色翁荡息又大又硬又粗又爽电影| 精品少妇爆AV无码专区| 国产白浆视频在线播放| 69日本人XXXX护士HD| 亚洲天堂av2017| 午夜伦午夜伦锂电影| 秋霞成人午夜鲁丝一区二区三区 | 国产福利不卡在线视频| 2021精品乱码多人收藏| 亚洲另类欧美综合在线| 午夜剧场1000| 双性精跪趴灌满h室友4p| 男人把女人桶到高潮嗷嗷叫| 久久精品国产在热亚洲完整版| 国产精品人妻系列21P| 抽插喷S骚爽去了H| 超碰公开在线caopon| qvod欧美电影| AV97最新无码喷水叫床| 99精品久久| 草比比过程图| 岛国大片在线播放高清|