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

正文內(nèi)容

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

2025-07-01 11:28本頁面

【導讀】題目基于S3C2440的Linux操作系統(tǒng)移植

  

【正文】 (3) Ret Boot: RedHat 開發(fā)針對 eCos 操作系統(tǒng)。 (4) BLOB:基于 LART硬件平臺的,目前只支持 INTEL的 Strong ARM和 XScale結構的 ARM 芯片。 移植實現(xiàn) 建立交叉編譯環(huán)境 因為我們是使用通用計算機 X86 來編譯 Uboot,但是運行是在 ARM 開發(fā)板上,這就需要建立一個交叉編譯環(huán)境。本課題使用 的交叉編譯器,使用的 Uboot 的版本基于 S3C2440 的 Linux 操作系統(tǒng)移植 23 為 ,開發(fā)板使用 S3C2440 中的 如下 : (1) 命令 :cd /opt 使用解壓命令: tar xvfj /mnt/hgfs/Linux/ –C / 如圖 : 圖 解壓后 總共解壓出來 的編譯器, 的編譯器和制作文件系統(tǒng)的mkyaffsimage 等工具。其中 的編譯器用于編譯 uboot, 的編譯器用于編譯內(nèi)核。 (2) 添加交叉編譯器的環(huán)境變量。命令: gedit/etc/profile。 (3) 使環(huán)境變量生效。命令: source /etc/profile。 (4) 查看交叉編譯器版本。命令: armlinuxgcc –v。如圖 : 基于 S3C2440 的 Linux 操作系統(tǒng)移植 24 圖 顯示版本信息 (5) 如圖所示安裝成功。 分析 Uboot 目錄結構 命令: tar xvfj – C / 解壓后如圖 : 圖 目錄結構 Uboot 源碼下有幾千個文件,代碼非常復雜,在這里只是了解整體結構,而不是分析具體代碼。 ? board:開發(fā)板相關的目錄,每種處理器都有對應的子目錄。 基于 S3C2440 的 Linux 操作系統(tǒng)移植 25 ? mon:通用命令函數(shù)。 ? cpu:特定 cpu 架構的相關目錄。 ? doc: uboot 開發(fā)和使用文檔。 ? drivers: uboot 所支持的相關硬件的驅動程序。 ? fs: uboot 所支持的文 件系統(tǒng)。 ? include:系統(tǒng)的頭文件。 ? lib:與體系結構相關的庫文件。 ? :各種網(wǎng)絡協(xié)議。 ? post:上電后自檢程序。 ? tools:用于創(chuàng)建 uboot bin 文件的工具。 uboot 編譯方法 Uboot 中有成千上個文件。我們通過修改部分文件的內(nèi)容,來配置符合自己開發(fā)板的 uboot。因為修改的文件很多,大致介紹一下操作流程。 (1) 在 board 下新建一個目錄 embedsky,將 sansung/smdk2410 目錄復制到embedsky 目錄下,并將文件夾改成 smdk2440。 (2) 將 smdk2440/ 改名為 。 (3) 在 include/configs 目錄下,將 復制為 。 (4) 修改頂層的 makefile 文件在在 1880 行加入自己的處理器信息。 (5) 修改 board/embedsky/smdk2440 下的 Makefile 文件,將COBJS:= 改為 。 (6) 修改 /cpu/arm920t/ 文件,使 uboot 可以從 NandFlash 啟動。 (7) 在 board/smdk2440/目錄下加入 NandFlash 讀取函數(shù)。 (8) 修改 board/smdk2440/ 文件。 (9) 修改 include/configs/ 如下。 上述修改完后,就直接 make,得到 燒到 Nand Flash 即可。 基于 S3C2440 的 Linux 操作系統(tǒng)移植 26 4 操作系統(tǒng)內(nèi)核的的移植 前幾章我們介紹了 Llinux 系統(tǒng)和 s3c2440 的處理器架構,對于軟硬件有了基本了解,并且在上一章介紹了引導操作系統(tǒng)的 uboot,這一章主要工作是linux 內(nèi)核的移植:包括制作最小的系統(tǒng)內(nèi)核以及介紹 yaffs 文件系統(tǒng)并且進行簡單的移植。 Linux 內(nèi)核的作用 操作系統(tǒng)是一個用來管理硬件并為用戶程序提供一個接口的低級支撐軟件。一個計算機系統(tǒng)是一個軟件和硬件的結合體,它們相互依賴,不可分割。包括外圍設備、內(nèi)存、處理器、硬盤和其他的電子設備組成的發(fā)動機。但是沒有軟件來控制或操作它,自身是不能工作的。操作系統(tǒng)就是完成這個控制的軟件,在 linux 系統(tǒng)術語中稱之為“內(nèi)核”。 Linux 內(nèi)核的主要模塊分為以下幾個部分:儲存管理、文件系統(tǒng)、設備管理和驅動、網(wǎng)絡通信、以及 系統(tǒng)的初始化、系統(tǒng)的調(diào)用。 (1) 進程管理:進程是在計算機系統(tǒng)中資源分配的最小單位。內(nèi)核負責創(chuàng)建和銷毀進程,而且由調(diào)度程序采取合適的調(diào)度策略,實現(xiàn)進程間的合理且實時的處理器資源的共享。從而內(nèi)核的進程管理活動實現(xiàn)了多個進程在一個或多個處理器上的抽象。內(nèi)核還負責實現(xiàn)不通信同進程間和其它部件間的。 (2) 內(nèi)存管理:內(nèi)存是計算機系統(tǒng)最主要的資源。內(nèi)核使得多個進程安全而合理的共享內(nèi)存資源,為每個進程在有限的物理資源上建立一個虛擬地址空間。內(nèi)存管理部分代碼可分為硬件無關部分和硬件有關部分:硬件無關部分實現(xiàn)進程和 內(nèi)存之間的地址映射等功能 。硬件有關部分實現(xiàn)不同體系結構的內(nèi)存管理相關功能并為內(nèi)存管理提供與硬件無關的虛擬接口。 (3) 文件管理:在 Linux 系統(tǒng)中的任何一個概念幾乎都可以看做一個文件。內(nèi)核在非結構化的硬件上建立了一個結構化的虛擬文件系統(tǒng),隱藏了各種硬件的具體細節(jié),從而在整個系統(tǒng)的幾乎所有機制中使用文件的抽象。 Linux 在不同物理介質或虛擬結構上支持數(shù)十種文件系統(tǒng)。例如, Linux 支持磁盤的標準文件系統(tǒng) ext3 和虛擬的特殊文件系統(tǒng)。 (4) 設備管理: Linux 系統(tǒng)中幾乎每個操作系統(tǒng)最終都映射到一個或多個 物基于 S3C2440 的 Linux 操作系統(tǒng)移植 27 理設備上。除了處理器、內(nèi)存等少數(shù)的硬件資源之外任何一種設備控制操作都由設備特定的驅動代碼來進行。內(nèi)核中必須提供系統(tǒng)中可能要操作的每一種外設的驅動。 (5) 網(wǎng)絡管理:內(nèi)核支持各種網(wǎng)絡標準協(xié)議和網(wǎng)絡設備。網(wǎng)絡管理部分可分為網(wǎng)絡協(xié)議棧和網(wǎng)絡設備驅動程序。網(wǎng)絡協(xié)議棧負責實現(xiàn)每種可能的網(wǎng)絡傳輸協(xié)議( TCP/IP 協(xié)議等);網(wǎng)絡設備驅動程序負責與各種網(wǎng)絡硬件設備或虛擬設備進行通信。 Linux 內(nèi)核的目錄結構 Linux 內(nèi)核版本: 解壓后,如圖 所示: 圖 目錄結構 (1) arch 目錄: 內(nèi)核中與 CPU 架構相關的代碼放在 arch,而相應的頭文件則分別放在include/asm 目錄下。在每個 cpu 的子目錄下,進一步又包含 boot, mm, kernel等子目錄,分別包含與系統(tǒng)引導,內(nèi)存管理,系統(tǒng)調(diào)用的進入與返回,中斷處理以及其它內(nèi)核代碼依賴 cpu 和系統(tǒng)結構的底層代碼。 (2) kernel 目錄: 基于 S3C2440 的 Linux 操作系統(tǒng)移植 28 Linux 大多數(shù)關鍵核心的功能都是在這個目錄實現(xiàn)。包括調(diào)度程序,進程控制,模塊化,其它操作。 (3) mm 目錄: mm 目錄中的文件為核心實現(xiàn)內(nèi)存管理體系結構無關的部分。這個目錄包含 換頁及內(nèi)存的分配和釋放的函數(shù),還有允許用戶進程將內(nèi)存區(qū)間映射到它們的地址空間的各種技術。 (4) fs 目錄: 所有的文件系統(tǒng)實現(xiàn)的代碼。每個目錄分別對應一種文件系統(tǒng)的實現(xiàn),公用的用于源程序則用于“虛擬文件系統(tǒng)” vfs。 (5) ipc 和 lib 目錄: 進程間通信和庫函數(shù)各有一個小的專用目錄。 (6) include 目錄: 包含了所有的 .h 文件。同時依據(jù) arch 的目錄結構做相應的組織。 (7) driver: 包括各種塊設備與字符設備的驅動程序。 (8) 目錄: 包含各種不同網(wǎng)卡雨網(wǎng)絡規(guī)劃的設備驅動程序。 內(nèi)核文件類型 Makefile Makefile 的作用是根據(jù)配置的情況,構造出需要編譯的源文件列表,然后分別編譯,并把目標代碼鏈接在一起,最終形成 Linux 內(nèi)核可執(zhí)行的二進制文件。由于 Linux 內(nèi)核代碼是按照樹形結構組織的,所以 Makefile 也被分布在目錄樹中。頂層 Makefile,是整個內(nèi)核代碼編譯整個內(nèi)核配置,編譯的總體文件,各個目錄下的 Makefile:比如 driver/Makefile,負責所在子目錄下源代碼的管理 用戶通過 make menuconfig 配置后,產(chǎn)生了 .config。頂層 Makefile 讀入 .config 中的配置選擇。頂層 Makefile 有兩個主要的任務:產(chǎn)生 vmlinux 文件和內(nèi)核模塊( module)。這樣頂層 Makefile 遞歸的進入到內(nèi)核的各個子目錄中,分別掉用于這些子目錄中的 Makefile。至于到底進入哪些子目錄,取決于內(nèi)核基于 S3C2440 的 Linux 操作系統(tǒng)移植 29 的配置。 .config .config:在配置內(nèi)核后生成。根據(jù) .config 來決定使用哪些 Makefile。例如文件中的 CONFIG_ARCH_MAY_HAVE_PC_FDC=y CONFIG_RWSEM_GENERIC_SPINLOCK is not set 在這里如果選項等于 y, CONFIG_ARCH_MAY_HAVE_PC_FDC 這個宏在 Makefile 中對應的選項就會連接相應的文件進行編譯,如果是被 注釋掉的選項表示不參加編譯。編譯從頂層開始遞歸到底層。 kconfig 在執(zhí)行命令 make menuconfig 時會顯示如圖 : 圖 配置菜單 當執(zhí)行 make menuconfig 時就會查找 kconfig 文件顯示相應的信息。 Kconfig中使用三種變量 y、 n、 m分別表示編譯,被編 譯,編譯成模塊。 配置工具 字符工具。執(zhí)行命令 make conig 如圖 : 基于 S3C2440 的 Linux 操作系統(tǒng)移植 30 圖 字符配置界面 Xwindows 圖形界面,執(zhí)行命令 make xconfig,圖 : 基于 S3C2440 的 Linux 操作系統(tǒng)移植 31 圖 Xwindows 界面配置單 Ncurses 圖形配置界面,執(zhí)行命令 make menuconfig,如圖 : 圖 Ncurses 配置界面 Linux 內(nèi)核啟動過程 匯編代碼執(zhí)行階段 Linux 內(nèi)核啟動后首先執(zhí)行三個匯編代碼: arch/arm/kernel/ arch/arm/kernel/ arch /arm/mm/ 主要功能是檢查內(nèi)核是否支持當前處理器架構和開發(fā)板、禁止 Cache,使能 MMU、設置棧指針、調(diào)用 startkernel。 c 語言代碼階段 執(zhí)行 init/,以完成內(nèi)核初始化全部工作、最后調(diào)用 restinit 函數(shù)啟動基于 S3C2440 的 Linux 操作系統(tǒng)移植 32 init 進程。 第一部分:在主函數(shù)中 startkernel()中調(diào)用了一些列的初始化函數(shù),以完成 kernel 本身的設置。這些初始化有的是公共的,有 的需要配置才會執(zhí)行的。 輸出 Linux 版本信息( printk( linux_banner))設置與體系結構相關的環(huán)境( setup_arch())頁表結構初始化( paging_init())。 ? 提取并分析核心啟動參數(shù)(從環(huán)境變量中讀取參數(shù),設置相應標志位等待處理,( paese_options())。 ? 設置系統(tǒng)自陷入口( rrap_init())。 ? 初始化系統(tǒng)中斷 IRQ( int_IRQ())。 ? 核心進程調(diào)度器初始化(包括初始化幾個缺省的 Bottonhalf, sched_int())。 ? 軟中斷初始化( softirq_init())。 ? 時間、定時器初始化(包括讀取 CMOS 時鐘、估測主頻,初始化定時器中斷等 time_init())。 ? 控制臺初始化( prof_buffer 和 prof_len 變量)。 ? 核心 Cache 初始化(描述 Cache 信息的 Cache, kmem_cache_init())。 ? 延遲校準(獲得時鐘 jiffoes 與 CPU 主頻 ticks 的延遲, calibrate_delay())。 ? 內(nèi)存初始化(設置內(nèi)存上下頁和頁表項初始值, mem_init())。 ? 創(chuàng)建和設置內(nèi)部及通用 cache(“ slab_cache”, kmem_cache_sizes_init())。 相關 cache 初始化()。 ? SMP 機器其余 cpu(除當前引導 cpu)初始化(對于沒有配置 SMP 的內(nèi)核,此函數(shù)為空, smp_init())。 ? 啟動 init 過程(創(chuàng)建第一個核心線程,調(diào)用 init()函數(shù),元執(zhí)行序列調(diào)用 cpu_idle()等待調(diào)度 init())。至此 start_kernel()結束,基本的核心環(huán)境已經(jīng)建立起來了。 第二部分: init()函數(shù)作為核心線程,首先鎖定內(nèi)核,然后調(diào)用do_basic_setup()完成外設及其驅動程序的加載和初始化。過程如下 : ? 網(wǎng)絡初始化( sock_init()) 基于 S3C244
點擊復制文檔內(nèi)容
研究報告相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1