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

正文內(nèi)容

基于s3c2440的linux操作系統(tǒng)移植本科畢業(yè)設(shè)計(jì)論文-資料下載頁

2025-06-27 18:53本頁面
  

【正文】 Linux命令就是放在該目錄下的可執(zhí)行程序,例如ls,mkdir,tar等命令。(8) /sbin與bin目錄類似,存放系統(tǒng)編譯后的可執(zhí)行文件、命令,如常用到的fsck、lsusb等指令,通常只有root用戶才有運(yùn)行的權(quán)限。(9) /etc該目錄是linux很重要的一個(gè)目錄,系統(tǒng)很多配置文件就在該目錄下。(10) /boot該目錄存放系統(tǒng)啟動(dòng)時(shí)所需的各種文件,如內(nèi)核的鏡像文件,引導(dǎo)加載器使用的LILO和和GRUB。 配置編譯busybox busybox簡介busybox是嵌入式系統(tǒng)中常用的一個(gè)軟件包,它把許多常用的Linux命令都集成在一個(gè)單一的可執(zhí)行程序中,這樣的的可執(zhí)行程序加上Linux內(nèi)核就可以構(gòu)建一個(gè)基本的Linux系統(tǒng)。busybox將許多不常用的功能忽略,因此非常精巧,并且是完全模塊化的,可以在編譯時(shí)動(dòng)態(tài)的增加或刪除其中包含的命令。busybox最初是為Debian GNU/LinuxDebian GNU/Linux安安裝盤編寫的。其目標(biāo)是在一張軟盤上創(chuàng)建一個(gè)可以引導(dǎo)的個(gè)可以引導(dǎo)的Linux系統(tǒng),用來制作安裝盤。系統(tǒng),用來制作安裝盤。, ,所以并沒有多少空間留給Linux內(nèi)核以及文件系統(tǒng)。為此BusyBox提出了合并命令程序文件的思想。(也就是bin目錄)壓縮到只有200KB大小。為此,BusyBox獲得了“瑞士軍刀”的美譽(yù)。 安裝busybox (1) 首先對(duì)BusyBox解壓包解壓縮后進(jìn)入BusyBox的根目錄,然后進(jìn)行功能配置。運(yùn)行命令“make menuconfig”啟動(dòng)BusyBox的配置工具,: 1 Busybox配置工具(2) 輸入命令“make”對(duì)BusyBox的源代碼進(jìn)行編譯。編譯完成后會(huì)在BusyBox的根目錄下生成一個(gè)可執(zhí)行文件。(3) 接著運(yùn)行命令“make install”進(jìn)行安裝。安裝完畢后會(huì)在BusyBox的根目錄下生成一個(gè)_install目錄。在_install目錄下有目錄下有bin、sbin和和usr目錄以及一個(gè)目錄以及一個(gè)linuxrc鏈接文件。bin和sbin目錄中全是指向BusyBox命令文件的鏈接文件。如下所示。符號(hào)鏈接的意思。符號(hào)鏈接的意思。linuxrclinuxrc也是一個(gè)指向也是一個(gè)指向busyboxbusybox命令文件的鏈接命令文件的鏈接文件,自此安裝完成。 制作yaffs根文件系統(tǒng) 構(gòu)建框架在“/opt/EmbedSky”目錄下面建立“”的目錄,復(fù)制剛剛編譯生成的_install下的文“dev”、件到“”目錄中,然后新建“dev”、“etc”、“home”、“l(fā)ib”、“mnt”、“opt”、“proc”、“root”、“sddisk”、“sys”、“tmp”、“udisk”、“var”、“web”、同時(shí)在原有“usr”目錄下新建一個(gè)“l(fā)ib”和“share”目錄。 添加內(nèi)容(1) “dev”目錄下面的內(nèi)容在內(nèi)核掛載完畢文件系統(tǒng),系統(tǒng)會(huì)使用mdev自動(dòng)建立。,不過mdev是調(diào)用init進(jìn)程來啟動(dòng)的,在使用mdev構(gòu)建“dev”目錄前,init需要用到“/dev/console”和“/dev/null”這兩個(gè)文件,所以,需要在制作文件系統(tǒng)的系統(tǒng)時(shí)靜態(tài)創(chuàng)建這兩個(gè)設(shè)備文件,方法:cd /opt/EmbedSky/ mknod console c 5 1 mknod null c 1 3(2) “etc”目錄用來存放系統(tǒng)的配置文件,在“etc”目錄下需要新建以下幾個(gè)目錄:fstal:指明需要掛載的文件系統(tǒng)。group:用戶組。Inittab:init進(jìn)程配置文件。shadow:使用passwd命令創(chuàng)建時(shí)需要該文件的參與。passwd:密碼文件。profile:用戶環(huán)境配置文件。:存放DNS信息文件,訪問外網(wǎng)時(shí)需要DNS的信息。:啟動(dòng)文件目錄,下面有個(gè)“rcS”文件,里面存放了系統(tǒng)啟動(dòng)時(shí)配置以及啟動(dòng)加載的進(jìn)程等。:啟動(dòng)時(shí)所需要的腳本。(3) “l(fā)ib”目錄用來存放常用的庫文件,cd opt/EmbedSky/cp–f/opt/EmbedSky/*.so* lib –a其它的目錄暫時(shí)可以空著,到這里文件系統(tǒng)的框架基本好了,然后使用mkyaffsimage_2命令制作鏡像文件。 6 內(nèi)核驅(qū)動(dòng)在第四章中移植的是最小操作系統(tǒng),并不是完整的系統(tǒng),因?yàn)閮?nèi)核中并沒有加入驅(qū)動(dòng),在這一章將詳細(xì)介紹驅(qū)動(dòng),并向內(nèi)核添加幾個(gè)必備驅(qū)動(dòng)。 設(shè)備驅(qū)動(dòng)程序的概述使用任何外部設(shè)備都需要有相應(yīng)驅(qū)動(dòng)程序的支持。驅(qū)動(dòng)程序?yàn)樯蠈犹峁┰O(shè)備的操作接口。對(duì)于上層軟件,只需要調(diào)用驅(qū)動(dòng)程序接口,而不用理會(huì)設(shè)備具體的內(nèi)部操作。對(duì)于驅(qū)動(dòng)程序而言,不僅要實(shí)現(xiàn)設(shè)備的基本功能,如初始化、中斷響應(yīng)、發(fā)送、接受等、時(shí)設(shè)備的基本功能得以實(shí)現(xiàn),而且針對(duì)設(shè)備使用中可能的各種差錯(cuò)、還提供完備的錯(cuò)誤處理函數(shù)。l 對(duì)設(shè)備的初始化和釋放。l 把數(shù)據(jù)從內(nèi)核傳送到硬件和從硬件讀取數(shù)據(jù)到內(nèi)核。l 讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請(qǐng)求的數(shù)據(jù)。這需要在用戶空間內(nèi)核空間總線以及外設(shè)之間傳輸數(shù)據(jù)。l 檢測(cè)和處理設(shè)備出現(xiàn)的錯(cuò)誤。(1) Linux的設(shè)備驅(qū)動(dòng)程序與外界的接口可以分成三部分
A驅(qū)動(dòng)程序與系統(tǒng)引導(dǎo)程序的接口。
B驅(qū)動(dòng)程序與操作系統(tǒng)內(nèi)核的接口。 C 驅(qū)動(dòng)程序與設(shè)備的接口。
(2) 驅(qū)動(dòng)程序的注冊(cè)與注銷
向系統(tǒng)增加一個(gè)驅(qū)動(dòng)程序意味著要賦予它一個(gè)主設(shè)備號(hào),可以通過在驅(qū)動(dòng)程序的初始化過程中調(diào)用定義在fs/()數(shù)或者fs/()函數(shù)來完成。而在關(guān)閉字符設(shè)備或者塊設(shè)備時(shí),則需要通過調(diào)用unregister_chrdev()或unregister_blkdev()函數(shù)從內(nèi)核中注銷設(shè)備,同時(shí)釋放占用的主設(shè)備號(hào)。(3) 設(shè)備的打開與釋放
A 打開設(shè)備是通過調(diào)用定義在include/linux/()來完成。
B 釋放設(shè)備是通過調(diào)用file_operations結(jié)構(gòu)中的函數(shù)release()來完成。
(4) 設(shè)備的讀寫操作
A字符設(shè)備的讀寫操作一般比較簡單,直接使用函數(shù)write()和read()就可以了。
B對(duì)于塊設(shè)備,則直接調(diào)用函數(shù)block_read()和block_write()對(duì)數(shù)據(jù)進(jìn)行讀寫。 (5) 設(shè)備的控制操作
通過設(shè)備驅(qū)動(dòng)程序中的函數(shù)ioctl()來完成(6) 設(shè)備的輪詢和中斷處理
A 設(shè)備執(zhí)行某個(gè)命令時(shí),如“將讀取磁頭移動(dòng)到軟盤的第42扇區(qū)上”
設(shè)備驅(qū)動(dòng)可以從輪詢方式和中斷方式中選擇一種以判斷設(shè)備是否已經(jīng)完成
此命令。B不支持中斷的硬件設(shè)備讀寫時(shí)需要輪流查詢?cè)O(shè)備狀態(tài)。 設(shè)備驅(qū)動(dòng)程序開發(fā)過程(1) 自動(dòng)配置和初始化子程序,負(fù)責(zé)檢測(cè)所要驅(qū)動(dòng)的硬件設(shè)備是否存在和是否能正常工作。如果該設(shè)備正常,則對(duì)這個(gè)設(shè)備及其相關(guān)的設(shè)備驅(qū)動(dòng)程序需要的軟件狀態(tài)進(jìn)行初始化。這部分驅(qū)動(dòng)程序僅在初始化的時(shí)候被調(diào)用一次。(2) 服務(wù)于I/O請(qǐng)求的子程序,又稱為驅(qū)動(dòng)程序的上半部分。調(diào)用這部分是由于系統(tǒng)調(diào)用的結(jié)果。這部分程序在執(zhí)行的時(shí)候,系統(tǒng)仍認(rèn)為是和進(jìn)行調(diào)用的進(jìn)程屬于同一進(jìn)程,只是由用戶態(tài)成了核心態(tài),具有進(jìn)行此系統(tǒng)調(diào)用的用戶程序的運(yùn)行環(huán)境,因此可以在其中調(diào)用sleep()等與進(jìn)程運(yùn)行環(huán)境有關(guān)的函數(shù)。(3) 中斷服務(wù)程序,又稱為驅(qū)動(dòng)程序的下半部。在Linux系統(tǒng)中,并不是直接從中斷向量表調(diào)用設(shè)備驅(qū)動(dòng)程序的中斷服務(wù)子程序,而是由Linux系統(tǒng)來接受硬件中斷,再由系統(tǒng)調(diào)用中斷服務(wù)子程序。中斷可以產(chǎn)生在任何一個(gè)進(jìn)程運(yùn)行的時(shí)候,因此在中斷服務(wù)程序被調(diào)用的時(shí)候,不能依賴于任何進(jìn)程的狀態(tài),也就不能調(diào)用任何與進(jìn)程運(yùn)行環(huán)境有關(guān)的函數(shù)。因此設(shè)備驅(qū)動(dòng)程序一般支持同一類型的若干產(chǎn)品,所以在系統(tǒng)調(diào)用中斷服務(wù)子程序的時(shí)候,都帶有一個(gè)或多個(gè)參數(shù),以標(biāo)識(shí)請(qǐng)求服務(wù)的設(shè)備。在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過一組固定的入口點(diǎn)來進(jìn)行,這組入口點(diǎn)是由每個(gè)設(shè)備的設(shè)備驅(qū)動(dòng)程序提供。一般來說,塊字符設(shè)備驅(qū)動(dòng)程序能夠提供如下幾個(gè)入口點(diǎn)。open:打開設(shè)備準(zhǔn)備進(jìn)行I/O操作。對(duì)字符設(shè)備文件進(jìn)行打開操作,都會(huì)調(diào)用設(shè)備的open入口點(diǎn)。open子程序程序必須對(duì)將要進(jìn)行的I/O操作做好必要的準(zhǔn)備工作,如清除緩沖區(qū)等。如果設(shè)備室獨(dú)占的,即同一時(shí)刻只能有一個(gè)程序訪問此設(shè)備,則open子程序必須設(shè)置一些標(biāo)志以標(biāo)志以表示設(shè)備處于忙狀態(tài)。close:關(guān)閉一個(gè)設(shè)備。當(dāng)最后一次使用設(shè)備總結(jié)后,調(diào)用close子程序。獨(dú)占設(shè)備必須標(biāo)記設(shè)備可再次使用。read:從設(shè)備上讀數(shù)據(jù)。對(duì)于有緩沖區(qū)的I/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。對(duì)字符設(shè)備文件進(jìn)行讀操作將調(diào)用read子程序。read:從設(shè)備上寫數(shù)據(jù)。對(duì)于有緩沖區(qū)的I/O操作,一般是把數(shù)據(jù)緩沖區(qū)里。對(duì)字符設(shè)備文件進(jìn)行寫操作將調(diào)用write子程序。ioctl:執(zhí)行讀、寫之外的操作。select;檢查設(shè)備,看數(shù)據(jù)是否可讀或設(shè)備是否用于寫數(shù)據(jù)。select系統(tǒng)調(diào)用在檢查與設(shè)備文件相關(guān)的文件描述符時(shí)使用select入口點(diǎn)。如果設(shè)備驅(qū)動(dòng)程序沒有提供上述入口點(diǎn)中的某一個(gè),系統(tǒng)會(huì)用默認(rèn)的子程序來代替。對(duì)于不同的系統(tǒng),也還有一些其他的人口點(diǎn)。 模塊化驅(qū)動(dòng)程序設(shè)計(jì)Linux的內(nèi)核是一個(gè)有機(jī)的整體內(nèi)核,即所有的內(nèi)核功能鏈接在一起,在同一個(gè)地址空間執(zhí)行。但這樣的做法會(huì)帶來很多的不便,如果添加一個(gè)新硬件,就重新編譯內(nèi)核;如果去掉一個(gè)硬件,已經(jīng)編譯到內(nèi)核的驅(qū)動(dòng)程序占用系統(tǒng)資源,產(chǎn)生浪費(fèi)。通過模塊化驅(qū)動(dòng)程序就可以解決這個(gè)問題,根據(jù)需要,在不需要編譯重新內(nèi)核的情況下,把模塊插入內(nèi)核或者從內(nèi)核中卸載。為了保證系統(tǒng)能夠正常運(yùn)行,會(huì)將駐留內(nèi)存留給內(nèi)核空間,但是大部分的驅(qū)動(dòng)程序都是在內(nèi)核需要時(shí)才加載,而在其他情況下,則無需占用內(nèi)存。因此,模塊化驅(qū)動(dòng)程序設(shè)計(jì)可以根據(jù)用戶的需要在不需要對(duì)內(nèi)核進(jìn)行重新編譯的情況下,在內(nèi)核中被動(dòng)態(tài)的加載和卸載。內(nèi)核模塊的動(dòng)態(tài)加載,優(yōu)點(diǎn)是將內(nèi)核鏡像尺寸保持在最小,并具有最大的靈活性。便于檢測(cè)新的內(nèi)核代碼,而不需要重新編譯內(nèi)核。缺點(diǎn)是裝入的內(nèi)核模塊與其它內(nèi)核部分一樣,具有相同的訪問權(quán)限,因此,不完善的內(nèi)核模塊會(huì)導(dǎo)致系統(tǒng)奔潰。 串口驅(qū)動(dòng)移植前面講述了驅(qū)動(dòng)程序的功能和結(jié)構(gòu),這里介紹一下怎樣向內(nèi)核中增加驅(qū)動(dòng),首先需要一致的是串口驅(qū)動(dòng),串口是一個(gè)字符設(shè)備。應(yīng)用程序可以利用它提供給文件系統(tǒng)的接口對(duì)它進(jìn)行操作。包括設(shè)備的打開、讀寫和關(guān)閉。字符設(shè)備對(duì)數(shù)據(jù)的操作以字節(jié)為單位。它可以發(fā)送和接受一個(gè)字符流。移植的操作如下:(1) 修改驅(qū)動(dòng)源碼“arch/arm/machs3c2440/”文件的100行 ulcon= 0x03 修改內(nèi)核的“driver/serial/”文件的53行添加如下內(nèi)容。 includemach/ 然后在433行添加如下內(nèi)容: if (portline == 2) { s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2)。 s3c2410_gpio_pullup(S3C2410_GPH6, 1)。 s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2)。 s3c2410_gpio_pullup(S3C2410_GPH7, 1)。 } 之后修改888行: .dev_name = “tq440_serial”, (2)打開配置界面,進(jìn)行如下配置,: 最后重新編譯內(nèi)核。制作新的內(nèi)核鏡像燒到開發(fā)板中。 LCD驅(qū)動(dòng)移植LCD作為人機(jī)交互的界面是嵌入式系統(tǒng)最重要的基本外設(shè)。LCD是基于液晶光電效應(yīng)的顯示器件。液晶顯示器的工作原理利用的是液晶的物理特性。在通電時(shí),液晶排序變得有秩序,使光線可以通過;而在不通電時(shí)時(shí),液晶排列則變得混亂,組止光線通過。下面講訴LCD的移植流程。(1) 修改LCD的參數(shù)配置,該配置參數(shù)在“arch/arm/machs3c2440/”文件中,將107以后的結(jié)構(gòu)體信息修改符合所使用LCD的參數(shù)。 if defined(CONFIG_FB_S3C24X0_T240320) .width = 240, .height = 320, .pixclock = 100000, /* HCLK 100 MHz, divisor 4 */ .setclkval = 0x4, .xres = 240, .yres = 320, .bpp = 16, .left_margin = 3, /* for HFPD*/ .right_margin = 6, /* for HBPD*/ .hsync_len = 1, /* for HSPW*/ .upper_margin = 2, /* for VFPD*/ .lower_margin = 1, /* for VBPD*/ .vsync_len = 1, /* for VSPW*/ (2),增加新的LCD信息。 (3)然后修改“dirvers/video/kconfig”文件,在1798到1819行增加下列信息:config FB_S3C24X0 tristate “S3C24X0 LCD framebuffer support” depends on FB amp。amp。 ARCH_S3C2410 select FB_CFB_FILLRECT select FB_CFB_COPYAREA select FB_CFB_IMAGEBLIT help Frame buffer driver for the builtin LCD controller in the Intel PXA2x0 processor. This driver is also available as a module ( = code which can be inserted and removed from the running kernel whenever you want). The module wil
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1