freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于armlinux的lcd驅(qū)動設(shè)計畢業(yè)設(shè)計說明書(參考版)

2025-06-26 05:39本頁面
  

【正文】 這樣在Linux下對LCD驅(qū)動的實現(xiàn)就完成了,下面是這三個步驟的實現(xiàn)詳細。open() 函數(shù)的調(diào)用流程圖 LCD驅(qū)動實現(xiàn)代碼分析分三步進行LCD驅(qū)動的實現(xiàn),在內(nèi)核中只要設(shè)置好結(jié)構(gòu)體fb_info的LCD相關(guān)信息,然后提交到內(nèi)核即可。這樣,我們就可以調(diào)用具體驅(qū)動的fb_open() 函數(shù),實現(xiàn)open的操作。傳進來的inode就是欲打開設(shè)備的設(shè)備號,包括主設(shè)備和次設(shè)備號。}return res。 if (infofbopsfb_open) {res = infofbopsfb_open(info,1)。int res。)static int fb_open(struct inode *inode, struct file *file){int fbidx = iminor(inode)。下面通過分析 ()函數(shù)來說明。程序分配給它們的主設(shè)備號是一樣的,而次設(shè)備號是不一樣的。 實現(xiàn)消息分派。注意,這里建立的設(shè)備節(jié)點的次設(shè)備號就是該驅(qū)動信息在registered_fb存放的位置,即數(shù)組下標i 。 /* 初始化改設(shè)備 */}…………return 0。fb_infodev = device_create(fb_class, fb_infodevice,MKDEV(FB_MAJOR, i), fb%d, i)。 i++)if (!registered_fb[i]) break。for (i = 0 。 if (num_registered_fb == FB_MAX) return ENXIO。struct fb_event event。我們分析一下register_framebuffer的代碼。int num_registered_fb。下圖給出了Linux FrameBuffer的總體結(jié)構(gòu),作為這一部分的總結(jié)。int (*fb_setcmap)(struct fb_cmap *cmap, struct fb_info *info)int (*fb_mmap)(struct fb_info *info, struct vm_area_struct *vma)。int (*fb_set_par)(struct fb_info *info)。ssize_t (*fb_read)(struct file *file, char __user *buf, size_t count, loff_t *ppos)。struct fb_ops {int (*fb_open)(struct fb_info *info, int user)。當我們編寫一個FrameBuffer的時候,就要依照Linux FrameBuffer編程的套路,填寫fb_ops結(jié)構(gòu)體。它是提供給底層設(shè)備驅(qū)動的一個接口。 /* Length of Memory Mapped I/O */…………}。 /* Length of frame buffer mem */unsigned long mmio_start。 /* identification string eg TT Builtin */unsigned long smem_start。當對幀緩沖設(shè)備進行映射操作的時候,就是從fb_fix_screeninfo中取得緩沖區(qū)物理地址的。 /* length of vertical sync */…………}。 /* time from picture to sync */__u32 hsync_len。 /* pixel clock in ps (pico seconds) */__u32 left_margin。 /* resolution */__u32 bits_per_pixel。__u32 xoffset。struct fb_var_screeninfo {__u32 xres。fb_var_screeninfo中的xres定義屏幕一行有多少個點, yres定義屏幕一列有多少個點, bits_per_pixel定義每個點用多少個字節(jié)表示。其 中node成員域標示了特定的FrameBuffer,實際上也就是一個FrameBuffer設(shè)備的次設(shè)備號。 /* Virtual address */unsigned long screen_size。 /* This is the parent */struct device *dev。 /* current mode */struct fb_ops *fbops。 /* Current var */struct fb_fix_screeninfo fix。fb_info的主要成員如下struct fb_info {int node。它不僅包含了底層函數(shù),而且還有記錄設(shè)備狀態(tài)的數(shù)據(jù)。 FrameBuffer主要結(jié)構(gòu)圖 為所有支持FrameBuffer的設(shè)備驅(qū)動提供了通用的接口,避免重復工作。 處于Framebuffer設(shè)備驅(qū)動技術(shù)的中心位置。在 Linux系統(tǒng)下。用戶不必關(guān)心物理顯存的位置、換頁機制等等具體細節(jié)。用戶可以將Framebuffer看成是顯示內(nèi)存的一個映像,將其映射到進程地址空間之后,就可以直接進行讀寫操作,而寫操作可以立即反應在屏幕上。 FrameBuffer的介紹Linux 是工作在保護模式下,所以用戶態(tài)進程是無法像DOS那樣使用顯卡BIOS里提供的中斷調(diào)用來實現(xiàn)直接寫屏,Lin仿顯卡的功能,將顯ux抽象出 FrameBuffer這個設(shè)備來供用戶態(tài)進程實現(xiàn)直接寫屏。LCD在內(nèi)核中的層次結(jié)構(gòu)了解清楚。而 LCDCDMA 則是LCD控制器專用的DMA信道,負責將視頻資料從系統(tǒng)總線(System Bus)上取來,通過 VIDPRCS 從VD[23:0]發(fā)送給LCD屏。BSWP 和 HWSWP 為字節(jié)(Byte)或半字(HalfWord)交換使能。在CPU LCD控制器的輸出信號中,有一個電源使能管腳LCD_PWREN,用來做為LCD屏電源的開關(guān)信號。INVVDEN , INVPWREN , INVLEND 的功能同前面的類似。FRM565 :對于16bpp顯示模式,有2中形式,一種是RGB=5:5:5:1,另一種是5:6:5。BPP24BL :設(shè)定24bpp顯示模式時,視頻資料在顯示緩沖區(qū)中的排列順序(即低位有效還是高位有效)。 (2):VSTATUS :當前VSYNC信號掃描狀態(tài),指明當前VSYNC同步信號處于何種掃描階段。BPPMODE :選擇色彩模式,對于真彩顯示而言,選擇16bpp(64K色)即可滿足要求。MMODE :VM信號的觸發(fā)模式(僅對STN屏有效,對TFT屏無意義)。LCD控制器輸出的VCLK是直接由系統(tǒng)總線(AHB)的工作頻率HCLK直接分頻得到的。 LCD控制器主要寄存器介紹(1): LINECNT :當前行掃描計數(shù)器值,標明當前掃描到了多少行。這樣的時序要求是當初CRT顯示器由于電子槍偏轉(zhuǎn)需要時間,但后來成了實際上的工業(yè)標準,乃至于后來出現(xiàn)的TFT屏為了在時序 上于CRT兼容,也采用了這樣的控制時序。而VDEN則用來標明視頻資料的有效,VCLK是用來鎖存視頻資料的像數(shù)時鐘。其中VSYNC是幀同步信號,VSYNC每發(fā)出1個脈沖,都意味著新的1屏視頻資料開始發(fā)送。而 LCDCDMA 則是LCD控制器專用的DMA信道,負責將視頻資料從系統(tǒng)總線(System Bus)上取來,通過 VIDPRCS 從VD[23:0]發(fā)送給LCD屏。S3C2410 LCD控制器的特性如下:(1)STN屏支持3種掃描方式:4bit單掃、4位雙掃和8位單掃支持單色、4級灰度和16級灰度屏支持256色和4096色彩色STN屏(CSTN)支持分辯率為640*480、320*2160*160以及其它規(guī)格的多種LCD(2)TFT屏支持單色、4級灰度、256色的調(diào)色板顯示模式支持64K和16M色非調(diào)色板顯示模式支持分辯率為640*480,320*240及其它多種規(guī)格的LCD對于控制TFT屏來說,除了要給它送視頻資料(VD[23:0])以外,還有以下一些信號是必不可少的,分別是:VSYNC(VFRAME) :幀同步信號HSYNC(VLINE) :行同步信號VCLK :像數(shù)時鐘信號VDEN(VM) :數(shù)據(jù)有效標志信號由于本項目所用的S3C2410上的LCD是TFT屏,并且TFT屏將是今后應用的主流,因此接下來,重點圍繞TFT屏的控制來進行。通常LCD驅(qū)動器會以COF/COG的形式與LCD 玻璃基板制作在一起,而LCD控制器則由外部電路來實現(xiàn)。要實現(xiàn)LCD驅(qū)動,同樣關(guān)鍵的一點是要了解LCD驅(qū)動在內(nèi)核中的實現(xiàn)方式,LCD驅(qū)動層應該給上層提供哪些接口,提供哪些操作,怎樣對上層進行設(shè)備的注冊,這些應該清楚。對于文件系統(tǒng)的制作,這里就不作介紹,編譯后產(chǎn)生的文件系統(tǒng)要設(shè)置安裝的路徑為NFS配置時的專用目錄。最后在內(nèi)核的根目錄下執(zhí)行make uImage,如果編譯成功,將會在arch/arm/boot/目錄下產(chǎn)生uImage的內(nèi)核映像,將該內(nèi)核映像拷貝到TFTP的專用目錄/tftpboot下,即可。 (root=/dev/hda1 ro init=/bin/bash console=ttySAC0,115200) Default(4) 設(shè)置支持的可執(zhí)行文件類型 Userspace binary formats [*] Kernel support for ELF binaries [*] Write ELF core dumps with partial segments Kernel support for and ECOFF binaries //基本上用不上 Kernel support for MISC binaries RISC OS personality (5) 配置網(wǎng)絡(luò),支持ipv4;(6) 配置支持文件系統(tǒng)通過NFS掛載。 [*] Module unloading [*] Module versioning support (2) 配置支持的開發(fā)板類型為SMDK2410。當然根據(jù)需求,可以做出相應其他選項的配置。當然可以執(zhí)行命令print進行打印輸出設(shè)置的信息。設(shè)置uboot傳給內(nèi)核的參數(shù)uboot啟動內(nèi)核后,要使內(nèi)核使用掛載在主機ubuntu中的文件系統(tǒng),就必須要傳遞相應的參數(shù)給內(nèi)核;設(shè)置傳遞的參數(shù)(一條命令)setenv bootargs console=ttySAC0,115200 init=/linuxrc root=/dev/nfs nfsroot=:/opt/filesystem ip=::::csm:eth0:off其中csm為登錄開發(fā)板內(nèi)核的用戶名,x表示主機ip,y表示開發(fā)板ip。 bootm 30800000 其中,tftp表示通過tftp將內(nèi)核下載到SDRAM中,第一個30800000表示將內(nèi)核下載到這里,第二個30800000表示從這里開始運行內(nèi)核;也可以不設(shè)置為30800000,也可以為其他,只要在合法的地址范圍(內(nèi)存中)。但在開發(fā)板啟動到uboot界面后,必須要對uboot的參數(shù)進行設(shè)置。然后開發(fā)板啟動時,選擇從Nandflash啟動,那么uboot所在的地址空間就會被拷貝到片內(nèi)的ROM中進行運行,從而引導Linux內(nèi)核的啟動。 系統(tǒng)啟動環(huán)境搭建 uboot啟動搭建HJTAG作為通過串口進行燒寫的工具,可以實現(xiàn)對開發(fā)板中的flash進行讀寫操作。 安裝NFS服務同樣首先的安裝NFS服務器,通過apt進行安裝如下:$ sudo aptget install nfskernelserver nfsmon portmap 配置NFS服務器;接著執(zhí)行下面的命令時,將會彈出提示,注意選定“不將portmap綁定在loopback地址”: $ sudo dpkgreconfigure portmap 之后通過查看 /etc/default/portmap, 確保OPTIONS=i 前面的號 被添加了 建立文件系統(tǒng)存放的目錄,NFS服務器會根據(jù)uboot的參數(shù)信息從該目錄中將文件系統(tǒng)掛載到開發(fā)板的flash中。$ sudo mkdir /tftpboot$ sudo chmod 777 /tftpboot –R(2)、安裝TFTP服務器;要保證網(wǎng)絡(luò)的暢通,更加軟件包數(shù)據(jù)源進行下載:$ sudo aptget install tftp tftpd$ sudo aptget install openbsdinetd(3)、配置TFTP服務器;創(chuàng)建的TFTP專用目錄要進行相應的配置才會讓系統(tǒng)知道,相應進行如下的配置:$ sudo vi /etc/ 在里面填入如下一行:tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/ /tftpboot修改/etc/default/tftpdhpa為:Defaults for tftpdhpa RUN_DAEMON=yesOPTIONS=l s /tftpboot” (4)、重啟TFTP服務器:$
點擊復制文檔內(nèi)容
電大資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1