<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 光電顯示 > 設計應用 > 基于A(yíng)RM9和Linux的液晶驅動(dòng)終端設計

基于A(yíng)RM9和Linux的液晶驅動(dòng)終端設計

作者: 時(shí)間:2017-10-21 來(lái)源:網(wǎng)絡(luò ) 收藏

  1 引言

本文引用地址:http://dyxdggzs.com/article/201710/367138.htm

  終端是將液晶控制器、微控制器等集成在一起,并將液晶控制與圖形界面顯示等功能通過(guò)軟件封裝在一起,為用戶(hù)開(kāi)放操作接口、屏蔽液晶顯示器的控制細節,使用戶(hù)通過(guò)熟悉的接口(如RS232接口)發(fā)送預定義命令即可控制液晶顯示,進(jìn)行圖形界面開(kāi)發(fā)工作。

  目前.已有的終端主要采用微控制器與前、后臺軟件結合的方法進(jìn)行設計,該類(lèi)終端只能夠顯示字模方式的圖片.該種類(lèi)型的終端顯示數據存放在自帶的NANDFlash中, 在人機界面設計過(guò)程中對NAND Flash中的數據管理是以扇區為基本操作單元,圖片下載需要專(zhuān)用的軟件工具完成,增加了界面設計的邏輯復雜性與操作性。這里采用微控制器與 操作系統結合的方法,設計出一種新型的終端。該終端通過(guò)FAT文件系統管理CF卡中數據資源,利用多線(xiàn)程技術(shù)實(shí)現串口命令解析與圖型界面的顯示,不僅能夠顯示字模與圖片等數據資源,而且利用該設計方法可以實(shí)現調用MiniGUI圖型庫等資源,適用于工業(yè)測控、智能儀表等領(lǐng)域的人機界面設計。

  2 系統組成及工作原理

  系統主要有微控制器、存儲單元、LCD控制器、CF卡接口與RS422通信接口組成,系統組成框圖如圖1所示。工作流程:系統上電后,微控制器從NOR Flash中讀取、解壓內核與Ramdisk根文件系統到SDRAM中,律壓完成后,啟動(dòng)內核并掛載根文件系統;當軟件環(huán)境初始化完成后啟動(dòng)應用程序,開(kāi)始接收串口命令,應用程序接收到有效的串口命令后,圖形界面數據通過(guò)Fmmebuffer接口傳送給LCD控制器。

  3 系統主要硬件模塊設計

  3.1 ARM9微控制器

  系統采用ATMEL公司的AT91RM9200作為MCU,該處理器基于A(yíng)RM920T內核,工作主頻為180MHz,性能高達200MVVs。AT91RM9200包括一個(gè)高速片上SRAM工作區及一個(gè)低等待時(shí)間的外部總線(xiàn)接口(EBI),完成片外存儲器和內部存儲器映

  射外設配置的無(wú)縫連接。EBI中設計專(zhuān)用電路以便SmartMedia、ComDact Flash及NAND F1ash連接。系統使用一片MT公司的28F128J3型16 MB NOR Flash,用于存儲Linux內核與根文件系統,使用2片HY57V281620來(lái)組成32位SDRAM接口。

  3.2 液晶驅動(dòng)接口

  系統選用EPSON公司的顯示控制器件S1D13506用于控制LCD的圖像數據顯示。S1D13506可與多種CPU總線(xiàn)兼容,支持最高為 16位數據寬度的LCD接口.可以在TFTLCD、CRT最高顯示64 K顏色。它配置一個(gè)16位內存接口,支持最高2 MB的EDO-DRAM。系統中將S1D13506連接在A(yíng)T91RM9200的BANK 3,數據總線(xiàn)寬度為16位.地址線(xiàn)A21與S1D13506M/R引腳相連,用于選擇訪(fǎng)問(wèn)寄存器與顯存。AT91RM9200訪(fǎng)問(wèn)S1D13506顯存起始地址為0x30200000.寄存器起始地址為0x30000000。使用了GM71V18163型2MBDRAM作為顯示存儲,AT91RM9200 通過(guò)訪(fǎng)問(wèn)S1D13506數據地址空間,實(shí)現對DRAM的數據存儲操作,使用50 MHz的有源晶振作為DRAM的總線(xiàn)時(shí)鐘,25 MHz有源晶振作為L(cháng)CD的像素時(shí)鐘信號,支持640x480 60 HzTFT LCD顯示,LCD行、場(chǎng)同步信號由S1D13506內部通過(guò)對25 MHz像素時(shí)鐘分頻得出。LCD顯示控制硬件接口電路如圖2所示。

  3.3 CF卡存儲接口

  在圖形界面的設計中需要運用到位圖、字庫等數據資源,系統通過(guò)FAT文件系統管理CF中數據,并且通過(guò)PC機將數據直接拷貝至CF卡。AT91RM9200與CF卡硬件接口連接如圖3所示。

  

  4 軟件設計

  4.1 整體軟件架構

  系統軟件可以使用Linux、VxWorks等操作系統,也可使用從直接操作低層硬件的前、后臺軟件。使用前、后臺方式的軟件雖然能夠實(shí)現對硬件的充分利用,但使用操作系統增強了系統的可維護性與擴展性。系統在運行和使用過(guò)程中需要管理CF卡中的數據以及應用程序需要多線(xiàn)程支持,眾多操作系統中,開(kāi)源的Linux操作系統具有較為完善的文件系統與網(wǎng)絡(luò )協(xié)議族,并且能較好的支持多線(xiàn)程程序,可滿(mǎn)足設計需求。該系統使用的Linux內核版本為 2.4.2l,交叉編譯工具鏈為ARM-Linux-cross-2.95.3。系統軟件架構如圖4所示。系統中,無(wú)論應用程序調用POSIX接口直接控制LCD顯示還是通過(guò)MiniGUI間接控制LCD,最終都要調用相應的液晶控制器驅動(dòng)接口函數,因此如何設計出一個(gè)S1D13506特殊硬件的驅動(dòng)程序是整個(gè)軟件設計的重點(diǎn)。

  4.2 Framebuffer驅動(dòng)的實(shí)現

  Framebuffer是Linux內核中的一種驅動(dòng)程序接口.這種接El將顯示設備抽象為幀緩沖區。在應用程序中.將其映射到進(jìn)程地址空間開(kāi)辟的存儲區域中,通過(guò)對存儲區域進(jìn)行的數據讀寫(xiě)操作可以直接的反映在LCD上。在Linux2.4版本的內核中,Framebuffer被抽象為 linux\drivers\vide0下的fbcon.c文件,其主要依靠fb_info、fb_var_screeninfo、 fb_fix_screeninfo3個(gè)數據結構,這些結構定義在include/Linux/fb.h程序內。S1D13506基于 Framebuffer的設備驅動(dòng)程序主要完成AT91RM9200 EBI總線(xiàn)的配置工作、S1D13506內部寄存器的初始化及Frambuffer中預定義的數據結構的填充。系統中使用的驅動(dòng)程序是對EPSON公司 S1D13xxx系列顯示控制器件Linux驅動(dòng)程序修改完成。其初始化函數示意性代碼如下:

  int sldl3506fb_init()

  {

  init_9200_bank(); //初使化AT9lRM9200EBI總線(xiàn)

  fb_info.RegAddr=(unsigned char*)ioremap_nocache(Ox300000000,0x200000);

  fb_jnfo.VmemAddr=(unsigned char*)ioremap_nocache(0x30200000,Ox200000);

  //將S1D13506的寄存器與顯示存儲的線(xiàn)性地址空間保存到顯卡狀態(tài)結構體

  setsIdl3506_reg();//配置S1D13506顯卡寄存器,并填充顯卡狀態(tài)數據結構

  register_framebuffer(fb_info.gen.info);||注豫framebuffer,初始化完成

  }

  將驅動(dòng)文件添加至Linux根目錄下的drivers\vide0目錄中,并在當前目錄下makefile文件中添加obi一$(CONFIG FBS1D13506)+=sldl3506fb.O,在Config.ini文件中添加boolSldl3506‘CONFIG_FB_EPSON,在 Linux移植過(guò)程中可將驅動(dòng)程序靜態(tài)編譯到內核中。若要使MiniGUl支持Frame-buffer,需將MiniGUI.efg文件中GAL引擎設為Framebuffer,如gal_engine=fbcon

  4.3 應用程序

  在應用程序設計中,使用多線(xiàn)程可更好的協(xié)調串口接收、圖像顯示、數據存儲以及超時(shí)處理等操作。終端中基于POSIX的應用程序由圖形顯示與串口命令解析組成,由于Linux操作系統中不同的線(xiàn)程之間可通過(guò)全局變量傳遞參數,應用程序中使用了一個(gè)全局的循環(huán)FIFO作為兩個(gè)線(xiàn)程之間的命令緩沖區,采用兩個(gè)靜態(tài)數據緩沖區用于存放串口傳來(lái)的圖像數據資源,數據緩沖區大小與LCD分辨率和像素深度有關(guān)。命令循環(huán)FIFO管理結構如下所示。

  系統中,基于Framebuffer的設備被映射為/dev/fb0文件,應用程序啟動(dòng)后,首先調用open()函數打開(kāi)設備,然后調用 mmap()函數將顯存影射到用戶(hù)空間開(kāi)辟的數據緩沖區內,初始化命令緩沖隊列后,啟動(dòng)串口命令接收,接收到有效的串口命令后則執行相應的顯示操作。

  5 結語(yǔ)

  目前,該終端可成功驅動(dòng)SHARP LQ035Q3DG01、LQl04-V1DG21等多種分辨率18 bit接口LCD,并在某紡織廠(chǎng)的細紗機車(chē)速監控儀中得到應用。使用該終端可降低人機界面的設計難度,提高儀器儀表的開(kāi)發(fā)效率,并且可進(jìn)一步擴展網(wǎng)絡(luò )視頻播放及網(wǎng)絡(luò )命令接口等功能,具有良好的市場(chǎng)前景和使用價(jià)值。



關(guān)鍵詞: ARM9 Linux 液晶驅動(dòng)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>