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

正文內(nèi)容

基于s3c2440的linux操作系統(tǒng)移植本科畢業(yè)設(shè)計論文(文件)

2025-07-15 18:53 上一頁面

下一頁面
 

【正文】 而Bootloader就位于該存儲器的最前端。它們不同之處在于:Nor Flash支持片內(nèi)執(zhí)行代碼,這樣可以在Flash上直接執(zhí)行而不必拷貝到RAM中去執(zhí)行。(1)Bootloader第一階段的功能。l 設(shè)置好棧。甚至,將第二階段的代碼復(fù)制到RAM空間中也不是必須的,對于NOR Flash等儲存設(shè)備,完全可以在上面直接執(zhí)行代碼,只不過相比在RAM中執(zhí)行效率大為降低。l 將內(nèi)核映像和根文件系統(tǒng)映像從Flash上讀到RAM空間中。(3) Ret Boot:RedHat開發(fā)針對eCos操作系統(tǒng)。(2) 添加交叉編譯器的環(huán)境變量。(4) 查看交叉編譯器版本。l board:開發(fā)板相關(guān)的目錄,每種處理器都有對應(yīng)的子目錄。l drivers:uboot所支持的相關(guān)硬件的驅(qū)動程序。l net:各種網(wǎng)絡(luò)協(xié)議。我們通過修改部分文件的內(nèi)容,來配置符合自己開發(fā)板的uboot。(3) 在include/configs目錄下。(7) 在board/smdk2440/目錄下加入NandFlash讀取函數(shù)。 4 操作系統(tǒng)內(nèi)核的的移植前幾章我們介紹了Llinux系統(tǒng)和s3c2440的處理器架構(gòu),對于軟硬件有了基本了解,并且在上一章介紹了引導(dǎo)操作系統(tǒng)的uboot,這一章主要工作是linux內(nèi)核的移植:包括制作最小的系統(tǒng)內(nèi)核以及介紹yaffs文件系統(tǒng)并且進(jìn)行簡單的移植。但是沒有軟件來控制或操作它,自身是不能工作的。內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進(jìn)程,而且由調(diào)度程序采取合適的調(diào)度策略,實現(xiàn)進(jìn)程間的合理且實時的處理器資源的共享。內(nèi)核使得多個進(jìn)程安全而合理的共享內(nèi)存資源,為每個進(jìn)程在有限的物理資源上建立一個虛擬地址空間。內(nèi)核在非結(jié)構(gòu)化的硬件上建立了一個結(jié)構(gòu)化的虛擬文件系統(tǒng),隱藏了各種硬件的具體細(xì)節(jié),從而在整個系統(tǒng)的幾乎所有機制中使用文件的抽象。除了處理器、內(nèi)存等少數(shù)的硬件資源之外任何一種設(shè)備控制操作都由設(shè)備特定的驅(qū)動代碼來進(jìn)行。網(wǎng)絡(luò)協(xié)議棧負(fù)責(zé)實現(xiàn)每種可能的網(wǎng)絡(luò)傳輸協(xié)議(TCP/IP協(xié)議等);網(wǎng)絡(luò)設(shè)備驅(qū)動程序負(fù)責(zé)與各種網(wǎng)絡(luò)硬件設(shè)備或虛擬設(shè)備進(jìn)行通信。包括調(diào)度程序,進(jìn)程控制,模塊化,其它操作。每個目錄分別對應(yīng)一種文件系統(tǒng)的實現(xiàn),公用的用于源程序則用于“虛擬文件系統(tǒng)”vfs。(7) driver:包括各種塊設(shè)備與字符設(shè)備的驅(qū)動程序。頂層Makefile,是整個內(nèi)核代碼編譯整個內(nèi)核配置,編譯的總體文件,各個目錄下的Makefile:比如driver/Makefile,負(fù)責(zé)所在子目錄下源代碼的管理用戶通過make menuconfig配置后。 .config.config:在配置內(nèi)核后生成。Kconfig中使用三種變量y、n、m分別表示編譯,被編譯,編譯成模塊。第一部分:在主函數(shù)中startkernel()中調(diào)用了一些列的初始化函數(shù),以完成kernel本身的設(shè)置。l 設(shè)置系統(tǒng)自陷入口(rrap_init())。l 時間、定時器初始化(包括讀取CMOS時鐘、估測主頻,初始化定時器中斷等time_init())。l 內(nèi)存初始化(設(shè)置內(nèi)存上下頁和頁表項初始值,mem_init())。l 啟動init過程(創(chuàng)建第一個核心線程,調(diào)用init()函數(shù),元執(zhí)行序列調(diào)用cpu_idle()等待調(diào)度init())。第三部分:最小系統(tǒng)需要關(guān)注的部分l 控制臺初始化(console_init())。(2) 進(jìn)入到內(nèi)核源碼,修改“Makefile”文件,在193行“ARCH ?=(SUBARCH)”和194”CROSS_COMPILEM ? =”,將其修改為“ARCH=arm”和“CROSS_COMPILE=arm_linux_”然后保存。輸入:make menuconfig,然后進(jìn)入配置單界面。因為在計算機中用到的大量數(shù)據(jù)和程序是以文件的形式存放在存儲設(shè)備中的,這就需要文件系統(tǒng)管理設(shè)備中的文件,本章將講解文件系統(tǒng)以及構(gòu)建根文件系統(tǒng)。VFS中各目錄的主要用途是提供實際文件系統(tǒng)的掛載點。Yaffs/Yaffs2有一下特點:Yaffs/Yaffs2與Jffs2相比,它減少了一些功能(例如不支持?jǐn)?shù)據(jù)壓縮),所以速度更快,掛載時間更短,對內(nèi)存的占用較小。同時,yaffs2在內(nèi)存空間占用、垃圾回收速度、讀\寫速度等方面均有大幅度提升。采用了zlib壓縮,在Linux系統(tǒng)中通常把不需要經(jīng)常修改的目錄壓縮存放,并在系統(tǒng)引導(dǎo)的時候再講壓縮文件解開,因為不會影響系統(tǒng)讀取文件文件系統(tǒng)中,而且是一個高壓縮的文件系統(tǒng),因此廣泛用于嵌入式中,Cramfs每一頁(4KB)被單獨壓縮,可以隨機訪問,為嵌入式系統(tǒng)節(jié)省了大量的Flash存儲空間,并且Cramfs的速度快、效率高、其只讀的特點有利于保護(hù)文件系統(tǒng)免受破壞,但是只讀又是一大缺陷,使得用戶無法對其內(nèi)容進(jìn)行擴充。因而,現(xiàn)在可以直接使用大硬盤而無需建立很多分區(qū)。這使得管理員很容易從用戶進(jìn)程塞滿文件系統(tǒng)的狀態(tài)中恢復(fù)過來。首先把代寫塊的一個副本存放在日志中;其次,當(dāng)發(fā)往日志的I/O數(shù)據(jù)傳送完成(即數(shù)據(jù)提交給文件系統(tǒng)),塊就寫入文件。每個操作系統(tǒng)都有一種把數(shù)據(jù)保存為文件盒目錄的方法,因此它才能得到添加,修改之類的改變,在DOS操作系統(tǒng)之下,每個磁盤或不同的磁盤分區(qū)中,目錄結(jié)構(gòu)中的根目錄是獨立的。目前,Linux下驅(qū)動USB存儲設(shè)備的方法采用模擬SCSI設(shè)備,所以USBC存儲設(shè)備的表示方法與SCSI接口硬盤的表示方法相同;dev/tty:設(shè)備虛擬臺;dev/ttyS*串口設(shè)備文件。Linux內(nèi)核的源代碼就放在/usr/src/linux里(4) /var該目錄包含經(jīng)常變化的文件,例如打印機、郵件、新聞的脫機目錄、日志文件以及臨時文件等。(6) /proc需要注意的是,/prco文件系統(tǒng)并不是保存在系統(tǒng)的硬盤里,操作系統(tǒng)在內(nèi)存中創(chuàng)建這一文件系統(tǒng)目錄,是虛擬的目錄,即系統(tǒng)內(nèi)存的映射,其中包含一些和系統(tǒng)相關(guān)的信息,例如CPU的信息。(10) /boot該目錄存放系統(tǒng)啟動時所需的各種文件,如內(nèi)核的鏡像文件,引導(dǎo)加載器使用的LILO和和GRUB。其目標(biāo)是在一張軟盤上創(chuàng)建一個可以引導(dǎo)的個可以引導(dǎo)的Linux系統(tǒng),用來制作安裝盤。(也就是bin目錄)壓縮到只有200KB大小。編譯完成后會在BusyBox的根目錄下生成一個可執(zhí)行文件。bin和sbin目錄中全是指向BusyBox命令文件的鏈接文件。linuxrclinuxrc也是一個指向也是一個指向busyboxbusybox命令文件的鏈接命令文件的鏈接文件,自此安裝完成。group:用戶組。profile:用戶環(huán)境配置文件。(3) “l(fā)ib”目錄用來存放常用的庫文件,cd opt/EmbedSky/cp–f/opt/EmbedSky/*.so* lib –a其它的目錄暫時可以空著,到這里文件系統(tǒng)的框架基本好了,然后使用mkyaffsimage_2命令制作鏡像文件。對于上層軟件,只需要調(diào)用驅(qū)動程序接口,而不用理會設(shè)備具體的內(nèi)部操作。l 讀取應(yīng)用程序傳送給設(shè)備文件的數(shù)據(jù)和回送應(yīng)用程序請求的數(shù)據(jù)。
B驅(qū)動程序與操作系統(tǒng)內(nèi)核的接口。(3) 設(shè)備的打開與釋放
A 打開設(shè)備是通過調(diào)用定義在include/linux/()來完成。 (5) 設(shè)備的控制操作
通過設(shè)備驅(qū)動程序中的函數(shù)ioctl()來完成(6) 設(shè)備的輪詢和中斷處理
A 設(shè)備執(zhí)行某個命令時,如“將讀取磁頭移動到軟盤的第42扇區(qū)上”
設(shè)備驅(qū)動可以從輪詢方式和中斷方式中選擇一種以判斷設(shè)備是否已經(jīng)完成
此命令。這部分驅(qū)動程序僅在初始化的時候被調(diào)用一次。(3) 中斷服務(wù)程序,又稱為驅(qū)動程序的下半部。在系統(tǒng)內(nèi)部,I/O設(shè)備的存取通過一組固定的入口點來進(jìn)行,這組入口點是由每個設(shè)備的設(shè)備驅(qū)動程序提供。open子程序程序必須對將要進(jìn)行的I/O操作做好必要的準(zhǔn)備工作,如清除緩沖區(qū)等。獨占設(shè)備必須標(biāo)記設(shè)備可再次使用。read:從設(shè)備上寫數(shù)據(jù)。select;檢查設(shè)備,看數(shù)據(jù)是否可讀或設(shè)備是否用于寫數(shù)據(jù)。 模塊化驅(qū)動程序設(shè)計Linux的內(nèi)核是一個有機的整體內(nèi)核,即所有的內(nèi)核功能鏈接在一起,在同一個地址空間執(zhí)行。因此,模塊化驅(qū)動程序設(shè)計可以根據(jù)用戶的需要在不需要對內(nèi)核進(jìn)行重新編譯的情況下,在內(nèi)核中被動態(tài)的加載和卸載。 串口驅(qū)動移植前面講述了驅(qū)動程序的功能和結(jié)構(gòu),這里介紹一下怎樣向內(nèi)核中增加驅(qū)動,首先需要一致的是串口驅(qū)動,串口是一個字符設(shè)備。它可以發(fā)送和接受一個字符流。 s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2)。 LCD驅(qū)動移植LCD作為人機交互的界面是嵌入式系統(tǒng)最重要的基本外設(shè)。下面講訴LCD的移植流程。amp。 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信息。液晶顯示器的工作原理利用的是液晶的物理特性。 } 之后修改888行: .dev_name = “tq440_serial”, (2)打開配置界面,進(jìn)行如下配置,: 最后重新編譯內(nèi)核。 includemach/ 然后在433行添加如下內(nèi)容: if (portline == 2) { s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2)。包括設(shè)備的打開、讀寫和關(guān)閉。便于檢測新的內(nèi)核代碼,而不需要重新編譯內(nèi)核。通過模塊化驅(qū)動程序就可以解決這個問題,根據(jù)需要,在不需要編譯重新內(nèi)核的情況下,把模塊插入內(nèi)核或者從內(nèi)核中卸載。如果設(shè)備驅(qū)動程序沒有提供上述入口點中的某一個,系統(tǒng)會用默認(rèn)的子程序來代替。對字符設(shè)備文件進(jìn)行寫操作將調(diào)用write子程序。對于有緩沖區(qū)的I/O操作,一般是從緩沖區(qū)里讀數(shù)據(jù)。close:關(guān)閉一個設(shè)備。open:打開設(shè)備準(zhǔn)備進(jìn)行I/O操作。中斷可以產(chǎn)生在任何一個進(jìn)程運行的時候,因此在中斷服務(wù)程序被調(diào)用的時候,不能依賴于任何進(jìn)程的狀態(tài),也就不能調(diào)用任何與進(jìn)程運行環(huán)境有關(guān)的函數(shù)。調(diào)用這部分是由于系統(tǒng)調(diào)用的結(jié)果。 設(shè)備驅(qū)動程序開發(fā)過程(1) 自動配置和初始化子程序,負(fù)責(zé)檢測所要驅(qū)動的硬件設(shè)備是否存在和是否能正常工作。
(4) 設(shè)備的讀寫操作
A字符設(shè)備的讀寫操作一般比較簡單,直接使用函數(shù)write()和read()就可以了。
(2) 驅(qū)動程序的注冊與注銷
向系統(tǒng)增加一個驅(qū)動程序意味著要賦予它一個主設(shè)備號,可以通過在驅(qū)動程序的初始化過程中調(diào)用定義在fs/()數(shù)或者fs/()函數(shù)來完成。l 檢測和處理設(shè)備出現(xiàn)的錯誤。l 對設(shè)備的初始化和釋放。 設(shè)備驅(qū)動程序的概述使用任何外部設(shè)備都需要有相應(yīng)驅(qū)動程序的支持。:啟動文件目錄,下面有個“rcS”文件,里面存放了系統(tǒng)啟動時配置以及啟動加載的進(jìn)程等。shadow:使用passwd命令創(chuàng)建時需要該文件的參與。 添加內(nèi)容(1) “dev”目錄下面的內(nèi)容在內(nèi)核掛載完畢文件系統(tǒng),系統(tǒng)會使用mdev自動建立。符號鏈接的意思。安裝完畢后會在BusyBox的根目錄下生成一個_install目錄。 安裝busybox (1) 首先對BusyBox解壓包解壓縮后進(jìn)入BusyBox的根目錄,然后進(jìn)行功能配置。, ,所以并沒有多少空間留給Linux內(nèi)核以及文件系統(tǒng)。busybox將許多不常用的功能忽略,因此非常精巧,并且是完全模塊化的,可以在編譯時動態(tài)的增加或刪除其中包含的命令。(8) /sbin與bin目錄類似,存放系統(tǒng)編譯后的可執(zhí)行文件、命令,如常用到的fsck、lsusb等指令,通常只有root用戶才有運行的權(quán)限。(5) /home用戶主目錄的默認(rèn)位置。由于是系統(tǒng)管理員的主目錄,普通用戶沒有訪問權(quán)限。設(shè)備文件的概念是DOS和Windows操作系統(tǒng)中沒有的,在Linux下,所有設(shè)備都被抽象成了文件,有了這些文件,用戶可以像訪問普通文件一樣方便的訪問系統(tǒng)中的物理設(shè)備。ext3即可以只對元數(shù)據(jù)做日志,也可以同時對文件數(shù)據(jù)塊做日志。(5) Ext3fsExt文件系統(tǒng)是直接從ext2文件系統(tǒng)發(fā)展而來。它使用可變長度目錄項,文件名的最大長度是255個字符,如果需要還可擴展為1024個字符長度。它可以管理在很大分區(qū)上建立的文件系統(tǒng)。因需要在一頁內(nèi)放下這些內(nèi)容,所以對文件名長度,符號鏈接對象的路徑名長度都有限制。Yaffs/Yaffs2自帶NAND芯片的驅(qū)動,并且為嵌入式系統(tǒng)了直接訪問文件系統(tǒng)的API,用戶可以不使用Linux中的MTD與VFS,直接對文件系統(tǒng)操作。缺點主要是掛載時間長需要對閃存從頭到尾的掃描(2) yaffsyaffs/yaffs2是專門針對NAND閃存設(shè)計的嵌入式文件系統(tǒng)。VFS是一種軟件機制,它是文件系統(tǒng)的管理者,與它相關(guān)的數(shù)據(jù)結(jié)構(gòu)只存在于物理內(nèi)存中。在配置單選項:“Load an Alternate Configuration File”,然后調(diào)用剛才的配置文件,: 調(diào)用配置文件 然后進(jìn)入到如下界面,輸入剛剛提到得路徑和配置文件,: 配置文件路徑 然后進(jìn)入配置界面,: (6) 選擇支持EABI,,: 支持EABI選項(7) ,然后修改機器碼,因為在uboot中設(shè)定了
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1