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

正文內(nèi)容

本科-基于linux的嵌入式lcd驅(qū)動程序(編輯修改稿)

2025-01-11 03:54 本頁面
 

【文章內(nèi)容簡介】 、 FTP、 EMail等服務(wù)。 ? 支持多種平臺 Linux 可以運(yùn)行在多種硬件平臺上,如具有 x8 SPARC、 Alpha 等處理器的平臺。此外 Linux 還是一種嵌入式操作系統(tǒng),可以運(yùn)行在掌上電腦、機(jī)頂盒或游戲機(jī)上。 2021 年 1月份發(fā)布的 Linux 版 內(nèi)核已經(jīng)能夠完全支持 Intel 64 位芯片架構(gòu)。同時 Linux 也支持多處理器技術(shù)。多個處理器同時工作,使系統(tǒng)性能大大提高。 基于 ARM的嵌入式 linux 交叉開發(fā)環(huán)境 11 由于嵌入式系統(tǒng)是專用的計算機(jī)系統(tǒng),它的功能和使用環(huán)境都與普通的 PC 大不相同。有的嵌入式系統(tǒng)的處理能力和存儲能力較弱,不能在上面安裝開發(fā)軟件;有的嵌入式系統(tǒng)的處理器結(jié)構(gòu)特殊,沒有可以在上面運(yùn)行的開發(fā)工具。所以,在開發(fā)嵌入式系統(tǒng)時,通常需要交叉開發(fā)的方式進(jìn)行。 開發(fā)主機(jī) linux 操作系統(tǒng)的安裝 在一臺 PC 上安裝 RedHat ,選擇 Custom 定制安裝,在選擇軟件 Package 時最好將所有包都安裝,需要空間約 ,如果選擇最后一項: everything,即完全安裝,將安裝 3 張光盤的全部軟件,需要磁盤空間大約 5G。因此建議提前為 REDHAT LINUX 的安裝預(yù)留大約 5- 15G 的空間,具體視用戶的硬盤空間大小來確定。 開發(fā)主機(jī)基本服務(wù)及程序的安裝、配置與使用 在安裝完 Redhat 后還要安裝 Linux 的編譯器和開發(fā)庫以及 ARMLinux 的所有源代碼,這些包安裝后的總共需要空間 大約為 800M。配置 NFS 服務(wù)器, Samba 服務(wù)器,以便以后用于開發(fā)板與主機(jī)之間的數(shù)據(jù)傳輸。 交叉編譯工具( binutils、 gcc、 glibc)的生成、安裝與使用 binutils、 gcc、 glibc 源碼是獨(dú)立開發(fā)和維護(hù)的,他們之間的版本兼容性較為復(fù)雜。分別構(gòu)造這三個部分較為復(fù)雜,使用 crosstool 則可簡化三部分的版本匹配和構(gòu)造。 ? 從 crosstool 官方網(wǎng)站 下載 包; ? 執(zhí)行命令解壓縮: tar xzvf ; ? 從 crosstool 官方網(wǎng)站下載 補(bǔ)丁文件(它修補(bǔ) ,該錯誤會導(dǎo)致自動生成的 文件編譯出錯),并將它復(fù)制到; ? 進(jìn)入 目錄,修改 腳本(該腳本是將首先執(zhí)行的腳本,調(diào)用 、 、 ): ? 將 TARBALLS_DIR=$HOME/downloads 改為TARBALLS_DIR=/work/tools/create_crosstools/src_gcc_glibc(因為TARBALLS_DIR 表示源碼的下載存放位置); ? 將 RESULT_TOP=/opt/crosstool 改為 RESULT_TOP=/work/tools(因為 RESULT_TOP表示編譯出的工具鏈安裝位置); ? GCC_LANGUAGES 表示工具鏈支持的語言,若需要支持 java,則可令 GCC_LANGUAGES=“ c,c++,java”; ? 工具鏈可支持 gcc 和 glibc 的多種組合,這里采用默認(rèn)組合; ? 修改 12 將 TARGET=armsoftfloatlinuxgnu 改為 TARGET=armlinux(它表示編譯出來的工具樣式為 armlinuxgcc、 armlinuxld 等); ? 不需要修改 (已下載其指定的相關(guān)源碼,并存放于 文件中指定的存放位置;若未下載相關(guān)源碼, crosstool 會根據(jù)該指示自動下載); ? 修改 第 70行為 PREFIX=${PREFIX$RESULT_TOP/$TOOLCOMBO} (這保證將結(jié)果存放于 /work/tools/ 目錄下,而不是/work/tools/); ? 編譯、安裝工具鏈 ? 執(zhí)行 ./; ? 編譯 2個小時后,將在 /work/tools 目錄下生成 子目錄,交叉編譯器、庫、頭文件、 binutil 工具都包含在其中,設(shè)置 PATH 環(huán)境變量即可使用; ? 使用命令 armlinuxgcc – v 評測一下。 Makefile Linux 內(nèi)核在 版本以前支持 GCC 直接編譯 C 源文件成 .ko(模塊)文件,從 內(nèi)核開始,必須用 Makefile 文件把 C源文件編譯成模塊文件。 在 Linux 環(huán)境下掌控 make 工具的使用連同編寫 Makefile 是必需的 ,不論您是是編寫程式還是學(xué)習(xí)系統(tǒng)內(nèi)核和查看軟件的源 代碼。 make 用于解釋 makefile 中指令的命令, make 手冊見 GNU Make 中文書冊 。 Makefile 的規(guī)則: target ... : prerequisites ... mand ... ... target 也就是個目標(biāo)文檔,能夠是 Object File,也能夠是執(zhí)行文檔或標(biāo)簽 ;prerequisites 就是,要生成那個 target 所需要的文檔 (.c .h .cpp)或目標(biāo) (.o); mand也就是 make 需要執(zhí)行的命令。 target 這一個或多個的目標(biāo)文檔依賴 于 prerequisites 中的文檔,其生成規(guī)則定義在mand 中。 prerequisites 中假如有一個以上的文檔比 target 文檔要新的話, mand所定義的命令就會被執(zhí)行。 因此, makefile 文檔作為一種描述文檔一般需要包含以下內(nèi)容 : 宏定義 源文檔之間的相互依賴關(guān)系 可執(zhí)行的命令 13 Linux 下模塊操作命令簡介 Linux 下對模塊的操作有特殊的命令 (在命令行形式下使用 ),下面對相關(guān)的命令做簡單的介紹。 ? 模塊加載命令:對于編譯好的 .ko 文件必須掛載到內(nèi)核上,才能真正發(fā) 揮作用, Linux下安裝模塊文件有兩個命令: insmod:它將模塊文件的代碼和數(shù)據(jù)裝載到內(nèi)核中,然后使用內(nèi)核的符號表解析模塊中任何未解析的符號。與編譯器不同,內(nèi)核不會修改模塊的磁盤文件,而僅僅修改內(nèi)存中的副本。使用方式如, insmod 。 modprobe:與 insmod 功能類似,不過它的功能更強(qiáng)大一些,它會考慮裝載的模塊是否引用了當(dāng)前內(nèi)核不存在的符號。如果有, modprobe 會在當(dāng)前模塊搜索路徑中查找定義了這些符號的模塊。如果找到了這些模塊(即要裝載的模塊所依賴的模塊),它 會同時將這些模塊裝載到內(nèi)核。如果在這種情況下使用了 insmod,則該命令會失敗。 ? 模塊信息查詢命令: lsmod 用于查詢目前內(nèi)核中已裝載的所有模塊信息,其中還有其它模塊是不是在使用某個特定的模塊。 Lsmod 通過讀取 /proc/modules 虛擬文件來獲得這些信息。有過當(dāng)前已裝載模塊的信息也可以在 sysfs 虛擬文件系統(tǒng)的 /sys/module 下找到。 ? 移除模塊命令: rmmod 用于移除指定的模塊,如果內(nèi)核正在使用某個模塊,則移除會失敗。例如 ,rmmod 。 14 五 LCD 驅(qū)動分析與實現(xiàn) 幀 緩沖 framebuffer 幀緩沖 framebuffer 是在 Linux 內(nèi)核架構(gòu)版本 以后推出的標(biāo)準(zhǔn)顯示設(shè)備驅(qū)動接口 ,它將顯示緩沖區(qū)抽象,屏蔽圖像硬件的底層差異,允許上層應(yīng)用程序在圖形模式下直接對圖形緩沖區(qū)進(jìn)行讀寫操作,用戶不必關(guān)心物理顯示緩沖區(qū)的具體位置及存放方式, 采用mmap 系統(tǒng)調(diào)用,可以將 framebuffer 的顯示緩存映射為可連續(xù)訪問的一段內(nèi)存儲針 ,進(jìn)行繪圖工作。 這些都是由幀緩沖設(shè)備驅(qū)動來完成。 多個進(jìn)程可以映射到同一個顯示緩沖區(qū) 。對于幀緩沖設(shè)備而言,只要在顯示緩沖區(qū)中與顯示點對應(yīng)的 區(qū)域?qū)懭腩伾担瑢?yīng)的顏色會自動在屏幕上顯示。 幀緩沖設(shè)備是標(biāo)準(zhǔn)字符設(shè)備,主設(shè)備號為 29,對應(yīng)于 /dev/fb031 設(shè)備文件, 可以支持最多可達(dá) 32 個幀緩沖設(shè)備 。 linux 的桌面系統(tǒng)中, XWINDOWS 服務(wù)器就是利用幀緩沖進(jìn)行窗口繪制,嵌入式系統(tǒng)中的 qt/embedded 等圖形用戶界面環(huán)境也基于幀緩沖而設(shè)計。另外,通過幀緩沖可支持漢字點陣的顯示,因此,幀緩沖也可以提供 linux 的漢化顯示。 幀緩沖設(shè)備驅(qū)動結(jié)構(gòu) 圖 54為 linux 幀緩沖設(shè)備驅(qū)動的主要結(jié)構(gòu),幀緩沖設(shè)備提供用戶空間的file_operations 結(jié)構(gòu)體由 中的 file_operations 提供,而特定幀緩沖設(shè)備fb_info 結(jié)構(gòu)體的注冊,注銷以及其中成員的維護(hù),尤其是 fb_ops 中成員函數(shù)的實現(xiàn)有對應(yīng)的 文件實現(xiàn), fb_ops 中的成員函數(shù)最終會操作 lcd 控制器硬件寄存器。 圖 51 幀緩沖設(shè)備驅(qū)動的程序結(jié)構(gòu) 15 LCD 的驅(qū)動控制 市面上 常見 的 LCD 有兩種類型: 一種是帶有驅(qū)動電路的 LCD 顯示模塊,這種 LCD 可以方便地與各種低檔單片機(jī)進(jìn)行接口,如 8051 系列單片機(jī),但是由于硬件驅(qū)動電 路的存在,體積比較大。這種模式常常使用總線方式來驅(qū)動。 另一種是 LCD 顯示屏,沒有驅(qū)動電路,需要與驅(qū)動電路配合使用,如圖 52 所示。特點是體積小,但卻需要另外的驅(qū)動芯片。也可以使用帶有 LCD 驅(qū)動能力的高檔 MCU 驅(qū)動,如 ARM 系列的 PXA270。 圖 52 不帶驅(qū)動電路的 LCD 結(jié)構(gòu) 總線驅(qū)動方式 一般帶有驅(qū)動模塊的 LCD 顯示屏使用這種驅(qū)動方式,由于 LCD 已經(jīng)帶有驅(qū)動硬件電路,因此模塊給出的是總線接口,便于與單片機(jī)的總線進(jìn)行接口。驅(qū)動模塊具有八位數(shù)據(jù)總線,外加一些電源接口和 控制信號。而且自帶顯示緩存,只需要將要顯示的內(nèi)容送到顯示緩存中就可以實現(xiàn)內(nèi)容的顯示。由于只有八條數(shù)據(jù)線,因此常常通過引腳信號來實現(xiàn)地址與數(shù)據(jù)線復(fù)用,以達(dá)到把相應(yīng)數(shù)據(jù)送到相應(yīng)顯示緩存的目的。表 51 為一個典型的顯示模塊( HY- 12864B)提供的總線接口。 16 表 51 典型帶驅(qū)動液晶模塊的總線接口 控制器掃描方式 PXA270 中具有內(nèi)置的 LCD 控制器,它具有將顯示緩存(在系統(tǒng)存儲器中)中的 LCD 圖象數(shù)據(jù)傳輸?shù)酵獠?LCD 驅(qū)動電路的邏輯功能。支持 DSTN(被動矩陣或叫無源矩陣)和 TFT(主動矩陣或叫有源矩陣)兩種 LCD 屏,并支持黑白和彩顯示。 在灰度 LCD 上,使用基于時間的抖動算法( timebased dithering algorithm)和 FRC (Frame Rate Control)方法,可以支持單色、 2 級、 4 級和 8 級灰度模式的灰度 LCD。在彩色LCD 上,可以支持 16777216 色 (24 位 )。有七路 DMA 通道,可支持兩個 LCD 屏。對于不同尺寸的 LCD,具有不同數(shù)量的垂直和水平象素、數(shù)據(jù)接口的數(shù)據(jù)寬度、接口時間及刷新率,而 LCD 控制器可以進(jìn)行編程控制相應(yīng)的寄存器值,以 適應(yīng)不同的 LCD 顯示板。 內(nèi)置的 LCD 控制器提供了下列外部接口信號: L_FCLK_RD: LCD 控制器和 LCD 驅(qū)動器之間的幀同步信號。它通知 LCD 屏新的一幀的顯示, LCD 控制器在一個完整幀的顯示后發(fā)出 VFRAME 信號。 L_LCLK_A0: LCD 控制器和 LCD 驅(qū)動器間的同步脈沖信號, LCD 驅(qū)動器通過它來將水平移位寄存器中的內(nèi)容顯示到 LCD 屏上。 LCD 控制器在一整行數(shù)據(jù)全部傳輸?shù)?LCD 驅(qū)動器后發(fā)出 VLINE 信號。 L_PCLK_WR:此信號為 LCD 控制器和 LCD 驅(qū)動器之間的象素時 鐘信號, LCD 控制器在 VCLK 的上升沿發(fā)送數(shù)據(jù), LCD 驅(qū)動器在 VCLK 的下降沿采樣數(shù)據(jù)。 L_BIAS: LCD 驅(qū)動器所使用的交流信號。 LCD 驅(qū)動器使用 VM 信號改變用于打開或關(guān)閉象素的行和列電壓的極性。 VM 信號可在每一幀觸發(fā),也可在數(shù)量可編程的一些VLINE 信號后觸發(fā)。 L_DD[17:0]: LCD 象素數(shù)據(jù)輸出端口。 L_CL :LCD 片選信號。 17 圖 53 LCD控制器邏輯框圖 18 PXA 的硬件電路圖 圖 54 PXA270的硬件電路圖 PXA270 的 LCD 控制器 PXA270 的 LCD 控制器包含以下寄存器及其相應(yīng)地址 : 19 表 52 PXA270的 LCD控制器寄存器及其相應(yīng)地址 20 表 53 PXA270的 LCD控制器寄存器及其相應(yīng)地址 21 寄存器的詳細(xì)描述參考 pxa270 開發(fā)手冊第 7 部分 LCD 控制器。 幀緩沖設(shè)備的相關(guān)結(jié)構(gòu)體和函數(shù) fb_info 結(jié)構(gòu)體 fb_info 結(jié)構(gòu)體包含了關(guān)于幀緩沖設(shè)備的屬性和操作的完整描述,包括設(shè)備的設(shè)置參數(shù),狀態(tài),以及操作函數(shù)指針。每一個幀緩沖設(shè)備都對應(yīng)一個 這樣的結(jié)構(gòu)體。其部分代碼如下: struct fb_info { int node。 int flags。 struct fb_var_screeninfo var。 /* 可變參數(shù) */ struct fb_fix_screeninfo fix。 /* 固定參數(shù) */ struct fb_mon
點擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1