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

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

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

3天內不再提示

基于AT91RM9200處理器和操作系統實現圖形用戶界面系統的設計

電子設計 ? 來源:微計算機信息 ? 作者:袁亞莉,馬立玲, ? 2020-09-25 10:00 ? 次閱讀

來源:微計算機信息 作者:袁亞莉,馬立玲,王軍政

1 引言

嵌入式產品如 PDA、機頂盒、WAP 手機等迅速地普及,給廣大的非專業用戶帶來了極大方便。同時,這些產品都需要有高性能、穩定可靠的GUI(圖形用戶界面)來提供支持。

因此,在嵌入式產品的開發過程中,關鍵的一步就是嵌入式圖形用戶界面開發平臺的設計。本文介紹了一種基于ARMLinux 及MiniGUI 的圖形用戶界面系統開發平臺的設計過程。

2 硬件平臺設計及開發環境的搭建

2.1 硬件平臺設計

硬件平臺ARM221 為自行研發的基于AT91RM9200 處理器芯片的ARM 板,其核心板結構圖如圖1 所示。AT91RM9200 處理器是一款基于ARM920T 內核的高性價比、低功耗、32 位的ARM 芯片,時鐘頻率為180Mhz,運算速度可達到200MIPS。AT91RM9200 具有存儲器管理單元(MMU)、16KB 的SRAM 和128KB 的ROM 以及外部總線接口(EBI),支持SDRAM、靜態存儲器、Burst Flash、CompactFlash、SmartMedia 以及NAND Flash,還集成了USB 控制器以太網控制器、RTC、SPI、I2C 等豐富的外圍設備。AT91RM9200 處理器內部沒有集成LCD控制器,因而需要配備專用的顯示控制器,才能實現LCD 顯示。

系統選用了一款應用比較廣泛的LCD 控制器S1D13506,它是EPSON 大規模顯示控制器家族中較新的一款。它的輸出可以驅動VGA 顯示或者最大為800×600 的點陣LCD 顯示屏,可以靈活地對各種不同的顯示方式進行設置,功能非常強大,可以和目前市場上流行的多種CPU 總線兼容。另外顯示器選用了一款東華的320×240-16bpp TFT-LCD。S1D13506 的PC 卡總線接口可以很方便地與AT91RM920 相連,其與總線接口信號相關的信號為:數據總線DB[15:0]、地址總線AB[21:1]、片選信號CS、高位讀寫信號WE1、寫使能信號WE0、輸出讀使能命令信號RD、選擇讀寫顯存還是讀寫S1D13506 寄存器信號M/R。

AT91RM9200 的EBI 總線接口用以確保多個外設與基于ARM器件的內置控制存儲器之間實現正確數據傳輸。靜態存儲器、SDRAM 及Burst Flash 控制器均可作為EBI 上的外部存儲控制器。EBI 擁有8 個片選信號(NCS[7:0]),可處理多達8 個外設的數據傳輸;數據通過8 位或者16 位數據總線進行傳輸;地址總線高達26 位。在16 位總線寬度下,EBI 與顯示控制器相關的總線接口信號有:數據總線DB[15:0]、地址總線AB[21:1]、片選信號NCS2(對應的地址為0x30000000)、使能高字節讀與寫操作信號NWR1、使能字節或半字節讀/寫信號NRD/NWR0 及復位信號NRST。由上述接口信號的定義分析得出,S1D13506 與AT91RM9200 的總線連接圖如上圖2 所示。

2.2 交叉編譯環境的搭建

移植Linux前,需要在宿主機上建立ARM-Linux的交叉編譯環境,社區的開發者和一些芯片廠商已經編譯出了常用體系結構的工具鏈,安裝簡單,使用這些工具鏈,可以大大減少工作量。針對移植的Linux內核版本2.4.26,選用cross-2.95.3.tar.bz2工具鏈。另外,MiniGUI 的交叉編譯,還需要一些字體、圖形等庫文件的支持,這些庫文件包括:zlib-1.2.3.tar.gz(該庫是后面幾個庫編譯的基礎)、libpng-1.0.10rc1.tar.gz( png 圖形)、jpegsrc.v6b.tar.gz(jpeg 圖形)、freetype-1.3.1.tar.gz(TrueType 字體)等,在進行MiniGUI交叉編譯之前,需要把這些庫安裝到交叉編譯器中去。安裝過程比較簡單,可查找相關資料

3 嵌入式Linux系統移植及相關驅動程序開發

3.1 嵌入式Linux系統移植

移植嵌入式Linux系統是實現嵌入式系統圖形用戶界面的系統軟件核心。嵌入式Linux系統包括引導程序(Bootloader)、內核(kernel)和根文件系統三個部分。嵌入式Linux移植到特定的硬件平臺上,一般需要以下五個步驟:①前期準備包括從*****上下載嵌入式Linux的源碼包、搭建交叉編譯開發環境、配置主機的開發環境等;②配置Bootloader,并將其燒寫到目標平臺的Flash上,使其能正常的啟動內核;③配置和編譯Linux內核,首先要對源碼進行一定的修改, 并將其移植到目標平臺上,然后再根據自己的硬件資源進行裁減,使內核達到最優;④制作RAMDISK來掛接Linux的根文件系統,并在RAMDISK上添加自己的應用程序;⑤部署Linux系統使目標板脫離交叉開發環境,直接在目標機上本地啟動運行。由于篇幅所限,關于Linux的具體移植過程將不做詳細介紹。

3.2 相關設備驅動的開發

設備驅動在Linux 內核中扮演著特殊的角色。它們是一個個獨立的“黑盒子”,使某個特定硬件響應一個定義良好的內部編程接口,這些接口完全隱藏了設備的工作細節。用戶的操作通過一組標準化的調用執行,而這些調用獨立于特定的驅動程序。Linux 系統的設備分為字符、塊和網絡設備三種。字符設備是指存取時沒有緩存的設備。塊設備的讀寫都有緩存來支持,并且塊設備必須能夠隨機存取。網絡設備在Linux 里做專門的處理。

3.2.1 LCD控制器S1D13506驅動程序的開發

① 幀緩沖區驅動程序接口

LCD控制器的功能就是產生驅動信號,進而驅動LCD。用戶只需要讀寫一系列寄存器,就可以配置和顯示驅動,在配置LCD控制器中最重要的一步是幀緩沖區的指定。幀緩沖區為圖像硬件設備提供了一種抽象化處理,它代表了一些視頻硬件設備,允許應用軟件通過定義明確的界面來訪問圖像硬件設備。用戶程序只要與幀緩沖區驅動程序抽象出來的接口打交道,就可以把要顯示的內容從緩沖區中讀出,從而顯示到屏幕上。

在Framebuffer(幀緩沖)驅動程序里最核心的結構體是struct fb_info,它記錄了當前Framebuffer硬件設備的狀態,其定義在Linux的include/linux/fb.h中,其中主要的結構體有1)struct fb_fix_screeninfo:定義了顯示設備自身的屬性,如屏幕緩沖區的物理地址和長度等。(2)struct fb_var_screeninfo:記錄了楨緩沖區設備和指定顯示模式的可修改信息,主要包括屏幕的分辨率、顏色數和一些時序變量。實際的編程中,通過賦值來設置這兩個結構體的相關參數

② LCD初始化

Linux下驅動程序的入口是module_init(),因此初始化通過調用module_init(13506fb_init)函數來實現。13506fb_init初始化的部分代碼主要完成以下工作:⑴對LCD的背光燈進行點亮。LCD顯示是一種被動顯示模式,它不能發光,只能依靠控制透射或反射周圍環境的光達到顯示目的,因此必須通過寫寄存器,實現背光燈的點亮。⑵本系統在13506.h頭文件里用了一個數組對寄存器的設置作了一個預定義,然后再初始化函數里利用兩個實際參數寫入,從而設定寄存器的值。寄存器設置的值為: static 13506_REGSas1dregs[]={ …{0x0032,0x27},{0x0038,0xEF},{0x0039,0x0}…}。其中數組里每個元素的第一個值代表寄存器的名稱,第二個值代表要設定的值。這里32h設置LCD顯示的水平象素值320;38h,39h分別設置成0xEF和0x0,即設置垂直象素值240。除了這三個寄存器外,34h和3Ah這兩個寄存器也會對分辨率有影響。

③ LCD驅動“文件層-驅動層”函數的實現

幀緩沖設備屬于字符設備,要實現“文件層-驅動層”接口的方式來對LCD進行驅動就必須對file_operation數據結構fb_ops進行填充,并實現其對應的成員函數。本系統移植的Linux下include/linux/fb.h中定義了幀緩沖區的文件操作結構體struct fb_ops。該結構中的每一個字段都必須指向驅動程序中實現特定操作的函數,對于不支持的操作字段可以置為NULL,或留到后續開發時添加。針對本系統的LCD,需要特定的操作成員函數如下:

static struct fb_ops 13506fb_ops=

{ owner:THIS_MODULE, fb_open:13506fb_open, fb_get_fix:13506fb_get_fix,

fb_get_var:13506fb_get_var, fb_set_var:13506fb_set_var, fb_get_cmap:13506fb_get_cmap,

fb_set_cmap:13506fb_set_cmap, fb_mmap:13506_mmap,

};

至此,LCD的驅動程序框架已完成,所剩工作就是把一些調用的函數寫完整,編寫好驅動程序后用arm-linux-gcc交叉編譯工具編譯驅動模塊,之后動態加載或靜態編譯進內核。

3.2.2 USB驅動程序開發

通用串行總線(USB)是一種外部總線結構,特點是接口統一、易于使用、方便擴展、支持熱插拔(hot plug)和PNP(Plug-and-Play),簡化了計算機與不同類型外設間的連接,一經推出就得到計算機外設硬件制造商的廣泛采用。Linux作為一個占有相當市場份額的開源操作系統,自2.2.18版本內核以來,就加入了對USB的支持。

USB 是一種分層總線結構,USB 設備和主機之間的信息傳輸通過USB 控制器實現。USB控制器的驅動分為三層,由底至上為:USB 主控制器驅動、USB 驅動和USB 設備類驅動。

處于最底層 USB 主機控制器驅動(HCD)是USB 主機直接與硬件交互的軟件模塊。Linux-2.4 內核中的USB 支持2 種主控制器接口:通用主控制器接口(UHCI)和開放控制器接口(OHCI)。主控制器驅動為上層提供統一的接口,屏蔽掉硬件的具體細節。具體實現的功能有:主控制器硬件初始化;為USBD 層提供相應的接口函數;提供集線器設備配置、控制功能;完成4 種數據傳輸類型。USB 驅動(USBD)部分是整個USB 主機驅動的核心,主要負責USB 總線的管理、USB總線設備、USB 總線帶寬管理、為USB 設備驅動提供相關的接口、提供應用程序訪問的USB 系統的文件接口。

USB 設備類驅動是最終與應用程序交互的軟件模塊,主要為訪問特定的USB 設備和應用程序提供接口。Linux 內核支持的USB 設備類有:USB 打印機設備類、通信設備類、存儲設備類、語音設備類等。由于AT91RM9200 的USB HOST 控制器符合OHCI 標準,而系統所選擇的Linux 內核又對OHCI 規范提供了模塊支持,因此使得開發工作相對簡單。開發目標板所需的USB 驅動程序時,只需對原Linux 內核驅動針對目標板稍做修改即可。具體修改部分如下:①調整初始化地址。在/usb/usb-ochi.c 中,使用板載起始地址(0x40700000)來初始化;②刪除PCI接口的處理代碼。在目標板ARM221 平臺上,USB 主機控制器不包含PCI 接口,故把/usb/usb-ochi.c 中與PCI 有關的代碼刪除;③修改HUB 下端口數目。目標板ARM221 設有兩個USB HUB 端口,用于鍵盤和鼠標接口。故在/usb/usb-ochi.c 中把HUB 的下行端口數目從默認值改為2。代碼修改之后,重新編譯、加載到內核。

4 MiniGUI在ARM221目標板上的移植

4.1 MiniGUI的體系結構

MiniGUI是一種針對嵌入式設備的、跨操作系統的、輕量級的圖形用戶界面支持系統。從整體結構上看,MiniGUI是分層設計的。在最底層,圖形抽象層(GAL:Graphic AbstractLayer)和輸入抽象層(IAL:Input Abstract Layer)提供底層圖形設備接口GDI(GDI:GraphicDevice Interface)及輸入設備驅動, Pthread(POSIX標準線程)用于提供內核級線程支持的C函數庫;中間層是MiniGUI的核心層,包括窗口系統必不可少的各個模塊;最頂層是應用編程接口(API:Application Programing Interface)。MiniGUI的這種分層體系結構,大大方便了其在目標系統上的移植。

4.2 MiniGUI 的移植

移植MiniGUI 主要是根據具體的硬件平臺定制或移植GAL 引擎和IAL 引擎,主要包括以下三個方面的工作。①GAL 引擎的移植。MiniGUI 可支持多種GAL 引擎,包括對Framebuffer 引擎的支持。因此,對于目標板ARM221 來說,顯示設備為LCD,相應的驅動程序已開發完成,這里只需要在配置文件MiniGUI.cfg 中修改gal_engine=fbcon 即可。②IAL引擎的移植。MiniGUI 可支持多種IAL 引擎,包括USB 鼠標、鍵盤引及部分觸摸屏引擎。

對于目標板ARM221 來說,其軟硬件方面都已支持USB 鼠標、鍵盤,故這里只需在配置文件MiniGUI.cfg 中修改ial_engine=console、mdev=/dev/PS2 即可。③交叉編譯MiniGUI 的庫文件、資源文件、應用程序,并制作根文件系統下載到目標板系統上運行。移植完成后,板載MiniGUI 的運行情況如圖3。

5 總結

本文介紹了一種基于ARM&Linux 的圖形用戶界面平臺的設計過程。實驗表明,該平臺運行穩定可靠,在應用系統中只需根據實際需求做上層應用軟件實現即可。

本文作者創新點:從整體角度,對嵌入式GUI開發平臺進行分析研究,選用了性能可靠的ARM、開放源代碼的Linux及輕型嵌入式GUI支持庫MiniGUI,完成了系統的軟硬件設計。

責任編輯:gt

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

    關注

    68

    文章

    19349

    瀏覽量

    230311
  • 芯片
    +關注

    關注

    456

    文章

    50967

    瀏覽量

    424880
  • 操作系統
    +關注

    關注

    37

    文章

    6856

    瀏覽量

    123450
收藏 人收藏

    評論

    相關推薦

    TCP/IP協議在AT91RM9200上的實現

    TCP/IP協議在AT91RM9200上的實現 摘要:介紹了AT91RM9200[1]芯片與DM9161E[2]的硬件接口電路設計以及驅動程序開發。在此基礎上討論了TCP/IP[3]
    發表于 12-08 10:43 ?1383次閱讀

    用AT91 RM9200構建高可靠嵌入式系統

    ,一旦主機發生故障,控制邏輯將更改工作狀態,接通新主機與外部設備的連接。  在系統中,采用內部和外部兩級監控策略。內部監控方案利用AT91RM9200處理器內部Watchdog模塊實現
    發表于 09-28 11:21

    推薦:AT91RM9200嵌入式核心控制模塊

    的工作環境。該控制模塊以其方便靈活的設計、強大的功能博得了企業用戶的厚愛,成為企業用戶加速產品開發的首選平臺。AT91RM9200核心模塊以超小體積、超低功耗、超高靈活性
    發表于 05-07 14:37

    S1D13506顯示控制AT91RM9200的接口設計

    AT91RM9200處理器內部沒有集成LCD控制,因而需要配備專用的顯示控制,才能實現LCD顯示。S1D13506是EPSON大規模顯
    發表于 12-21 08:37

    μCGUI移植到AT91RM9200的過程及接口設計

    了USB控制、以太阿控制、RTC、SPI、I2C等豐富的外圍設備。AT91RM9200處理器內部沒有集成LCD控制,因而需要配備專用的
    發表于 05-31 05:00

    AT91RM9200中文手冊 AT91RM9200中文資料

    AT91RM9200是完全圍繞ARM920T ARM Thumb處理器構建的系統。它有豐富的系統與應用外設及標準的接口,從而為低功耗、低成本、高性能的計算機寬范圍應用提供一個單片解決方
    發表于 04-22 13:20 ?359次下載

    MiniGUI 在AT91RM9200 開發板上的移植

    簡要介紹Atmel 公司生產的基于ARM9 內核的AT91RM9200 開發板的結構及其部分特性;詳細介紹如何將MiniGUI 圖形用戶界面移植到A
    發表于 05-16 14:16 ?26次下載

    AT91RM9200簡明手冊.pdf

    AT91RM9200簡明手冊.pdf 基于ARM920T的嵌入式微控制——AT91RM9200總體特性:· 內嵌ARM920TTM ARM® Thumb®微處理器
    發表于 03-01 15:47 ?43次下載

    at91rm9200啟動過程教程

    at91rm9200啟動過程教程 系統上電,檢測BMS,選擇系統的啟動方式,如果BMS為高電平,則系統從片內ROM啟動。AT91RM9200
    發表于 03-08 15:57 ?44次下載

    AT91RM9200處理器同步串口SSC的特性分析

     描述了AT91RM9200處理器同步串口SSC的特性,結合實際應用,詳細介紹SSC與E1成幀DS21554的連接電路及時序分析。 Abstract:  The characteristics
    發表于 12-09 16:00 ?23次下載

    基于AT91RM9200的手持設備的低功耗設計

    本文以基于AT91RM9200 的手持設備為例,分析了手持設備的低功耗設計的原理,同時給出了AT91RM9200 手持設備上基于Linux 操作系統的電源管理模塊的初步實現
    發表于 12-16 14:42 ?66次下載
    基于<b class='flag-5'>AT91RM9200</b>的手持設備的低功耗設計

    AT91RM9200用戶手冊

    AT91RM9200用戶手冊有需要的朋友下來看看
    發表于 01-11 14:05 ?8次下載

    AT91RM9200 說明書

    AT91RM9200 說明書
    發表于 09-29 11:36 ?7次下載
    <b class='flag-5'>AT91RM9200</b> 說明書

    基于AT91RM9200 處理器系統中BootLoader與內核的參數傳遞

    本文著重介BootLoader與內核之間 參數傳遞 這一基本功能。本文的硬件平臺是基于AT91RM9200 處理器系統,軟件平臺是Linux-2.6.19.2 內核。內核映像文件為zImage。
    發表于 03-28 09:04 ?1957次閱讀
    基于<b class='flag-5'>AT91RM9200</b> <b class='flag-5'>處理器</b><b class='flag-5'>系統</b>中BootLoader與內核的參數傳遞

    基于AT91RM9200處理器實現高可靠雙機溫備的應用設計

    AT91RM9200是Atrnel公司生產的一款工業級ARM9處理器,內嵌ARM920T ARM Thumb處理器核,主頻為180 MHz時性能可達200 MIPS,并內置16 KB SRAM
    發表于 09-29 17:46 ?2649次閱讀
    基于<b class='flag-5'>AT91RM9200</b><b class='flag-5'>處理器</b><b class='flag-5'>實現</b>高可靠雙機溫備的應用設計
    主站蜘蛛池模板: 国产精品亚欧美一区二区三区| 久久精品电影| 热综合一本伊人久久精品| silk118中文字幕无删减| 日本亚洲电影| 国产精人妻无码一区麻豆| 亚洲精品乱码久久久久久中文字幕| 国精产品一区一区三区M| 又亲又揉摸下面视频免费看| 美女露出撒尿的部位| 二色AV天堂在线| 野花视频在线观看免费最新动漫| 伦理片qvod| 风月宝鉴之淫乱英雄传 电影| 亚洲 欧美 视频 手机在线| 久久热免费观看视频| np高h肉辣一女多男| 亚洲第一伊人| 女人操男人| 国产永久免费高清在线观看| 97超碰在线视频人人av| 小p孩玩成年女性啪啪资源| 两个人的视频免费| 国产成人久久精品激情| 瑜伽牲交AV| 四虎精品久久久久影院| 啦啦啦视频在线观看WWW| 东日韩二三区| 综合网伊人| 亚洲 综合 自拍 精品 在线| 妺妺窝人体色777777野大粗| 国产精品视频免费视频| 91青青草原| 亚洲精品国产精品麻豆99| 青柠在线观看免费全集| 久久re热在线视频精69| 国产成人精品电影| 99久久精品6在线播放| 亚洲精品乱码8久久久久久日本| 欧美亚洲国产免费高清视频| 久久AV无码AV高潮AV不卡|