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

正文內(nèi)容

嵌入式web服務器boa的移植及其應用畢業(yè)論文(參考版)

2024-09-01 15:53本頁面
  

【正文】 cpu_init_crit: mov r0, 0 mcr p15, 0, r0, c7, c7, 0 /* 失效 I/D cache, 見 S3C2410 手冊附錄的 216 */ mcr p15, 0, r0, c8, c7, 0 /* 失效 TLB, 見 S3C2410 手冊附錄的 218 */ /* * 禁止 MMU 和 caches, 詳見 S3C2410 手冊附錄 211 */ mrc p15, 0, r0, c1, c0, 0 bic r0, r0, 0x00002300 /* 清除 bits 13, 9:8 (V RS) * Bit 8: Disable System Protection * Bit 7: Disable ROM Protection * Bit 13: 異常向量表基地址 : 0x0000 0000 */ bic r0, r0, 0x00000087 /* 清除 bits 7, 2:0 (B CAM) * Bit 0: MMU disabled * Bit 1: Alignment Fault checking disabled * Bit 2: Data cache disabled * Bit 7: 0 = Littleendian operation */ 30 orr r0, r0, 0x00000002 /* set bit 2 (A) Align, 1 = Fault checking enabled */ orr r0, r0, 0x00001000 /* set bit 12 (I) ICache, 1 = Instruction cache enabled*/ mcr p15, 0, r0, c1, c0, 0 配置內(nèi)存區(qū)控制寄存器,寄存器的具體值通常由開發(fā)板廠商或硬件工程師提供 . 如果您對總線周期及外圍芯片非常熟悉 , 也可以自己確定 ,在 UBOOT 中的設(shè)置文件是 board/gec2410/, 該文件包含 lowleve_init 程序段 . mov ip, lr bl lowlevel_init mov lr, ip UBOOT 使的??臻g 下面這段代碼只對不是從 N。 階段 1 介紹 uboot 的 stage1 代碼通常放在 文件中,它用匯編語言寫成,其主要代碼部分如下: 由于一個可執(zhí)行的 Image 必須有一個入口 點,并且只能有一個全局入口,通常這個入口放在 ROM(Flash)的 0x0 地址,因此,必須通知編譯器以使其知道這個入口,該工作可通過修改連接器腳本來完成 . 1. board/gec2410/: ENTRY(_start) cpu/arm920t/: .globl _start 2. uboot 代碼區(qū)( TEXT_BASE = 0x33F80000)定義在 board/gec2410/ _start: b reset 0x00000000 ldr pc, _undefined_instruction 0x00000004 ldr pc, _software_interrupt 0x00000008 28 ldr pc, _prefetch_abort 0x0000000c ldr pc, _data_abort 0x00000010 ldr pc, _not_used 0x00000014 ldr pc, _irq 0x00000018 ldr pc, _fiq 0x0000001c 當發(fā)生異常時,執(zhí)行 cpu/arm920t/ 中定義的中斷處理函數(shù)。 Tools :Uboot 的工具,如: mkimage, crc 等 等 uboot 的啟動過程及工作原理 [6] 大多數(shù) bootloader 都分為階段 1(stage1)和階段 2(stage2)兩大部分, uboot 也不例外。如與 ARM 相關(guān)的庫放在 lib_arm 中。該目錄下 configs 目錄有與開發(fā)板相關(guān)的配置頭文件,如 。例如 go 命令 對應就是 Cpu :與特定 CPU 架構(gòu)相關(guān)目錄,每一款 uboot 下支持的 CPU 在該目錄下對應一個子目錄,比如有子目錄 arm920t 等 Disk :對磁盤的支持 Doc :文檔目錄。 uboot 的源代碼的下載地址是: uboot 的源代碼是通過 GCC 和 Makefile 組織編譯的,頂層目錄下的 Makefile 首先可以設(shè)置開發(fā)板的定義,然后遞歸調(diào)用子目錄下的 Makefile,最后把編譯過的目標文件鏈接成 uboot 映象。 uboot 介紹 [6] Uboot 是德國 DENX 小組的開發(fā)用于多種嵌入式 CPU 的 bootloader 程序 , UBoot 不僅僅支持嵌入式 Linux 系統(tǒng)的引導,當前,它還支持 NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS 嵌入式操作系統(tǒng)。 BootLoader 的這種模式通常在第一次安裝內(nèi)核與根文件系統(tǒng)時被使用;此外,以后的系統(tǒng)更新也會使用 Boot Loader 的這種 工作模式。下圖為 bootloader 在分區(qū)表中的位置 . 下載( Downloading)模式:在這種模式下,目標機上的 Boot Loader 將通過串口連接 或網(wǎng)絡(luò)連接等通信手段從主機( Host)下載文件,比如:下載內(nèi)核映像和根文件系統(tǒng)映像等。也即 BootLoader 從目標機上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運行,整個過程并沒有用戶的介入。但從最終用戶的角度看, Boot Loader 的作用就是用來加載操作系統(tǒng) ,而并不存在所謂的啟動加載模式與下載工作模式的區(qū)別。也就是說,對于兩塊不同的嵌入式板而言,即使它們基于相同的 CPU 構(gòu)建,運行在其中一塊電路板上的 bootloader,未必能夠運行在另一塊電路開發(fā)板上。 bootloader 是依賴于硬件而實現(xiàn)的,特別是在嵌入式系統(tǒng)中。簡單地說, BootLoader 就是在操作系統(tǒng)內(nèi)核或用戶應用程序運行之前運行的一段小程序。然而在嵌入式系統(tǒng)中通常沒有像 BIOS 那樣的固件程序(有的嵌入式 CPU 有),因此整個系統(tǒng)的加載啟動任務就完全由 bootloader 來完成。 編譯 GCC 的輔助編譯器 (并打上補丁 ) $ tar –jxvf $ cd $ mkdir buildarmlinux $ cd buildarmlinux $ ../configure –target=armlinux –prefix=/usr/local/arm/ –withheaders=/urs/local/ 4) 編譯生成 glibc 庫 (并打上補丁 ) $ tar xvzf $ cd $ tar xzvf $mkdir buildarmlinux 嵌入式 Web 服務器 Boa 的移植及其應用 23 $ cd buildarmlinux $ CC=armlinuxas AS=armlinuxas LD=armlinuxld ../configure host=armlinux withheaders=/usr/local/arm/enabeladdons=linuxthreadsenableshared prefix=/usr/local/arm/ $ make $make install 5) 編譯生成完整的 GCC編譯器 $ cd $ vi gcc/config/arm/tlinux $ cd $ make distclean $ rm –rf ./* 2. 配置 $ ../configure –target=armlinux –prefix=/usr/local/arm/ withheaders=/usr/local/arm/ enablethreads=pthreads enableshared enablestatic enblelanguages=”c,c++” $ make $make install 6)制作交叉調(diào)試器 $ tar –zxvf $ cd $ mkdir buildarmlinux $ cd buildarmlinux 24 $ ../configure target=armlinux prefix=/usr/local/arm/ $ make $ make install 7)編譯 gdbserver $ cd $ cd gdb/gdbserver $ chmod u+x configure $ CC=armlinuxgcc ./configure host=armlinux $ make (備注 : target 指定交叉工具的目標板體系 結(jié)構(gòu)是 armlinux prefix 指定安裝路徑為 /usr/local/arm/ withheaders 指定內(nèi)核頭文件所在路徑為 /usr/local/arm disablethreads 選項指定不使用線程 ,也不使用線程庫 , enablelanguages 指定僅支持的語言 . enableaddons=linuxthread 選項支持線程庫 . enableshared 選項支持共享庫 . ) 4 U- boot 在 GEC2410 上的移植 BootLoader 的介紹 [6] 引導加載程序 BootLoader 是系統(tǒng)加電后運行的第一段代碼。假定現(xiàn)在有一種基本的機器描述性文件,它已經(jīng)能滿足大家的需要。對 binutils包的設(shè)置定義了所需的目標文件的格式和字節(jié)順序。 Gdb: 調(diào)試器,可使用多種交叉調(diào)試方式, gabbam(背景調(diào)試工具 ),gabserver (使用以太網(wǎng)絡(luò)調(diào)試 )。 主要組件 : GCC: 編譯器,可以做成交叉編譯的形式,即在宿主機上開發(fā)編譯目標上 可運行的二進制文件。當子進程正確開始執(zhí)行后,將喚醒父進程,使得父進程繼續(xù)往后執(zhí)行。這樣實際在 vfork 調(diào)用完成嵌入式 Web 服務器 Boa 的移植及其應用 21 后,父子進程事實上共享同一塊存儲器 (在子進程調(diào)用 exec 或是 exit 之前 ),因此子進程可以更改父進程的數(shù)據(jù)及堆棧信息,因此 vfork 系統(tǒng)調(diào)用完成后,父進程進入睡眠,直到子進程執(zhí)行 exec。 vfork 系統(tǒng)調(diào)用:由于在使用 fork 時,內(nèi)核會將父進程拷貝一份給子進程,但是這樣的做法相當浪費時間,因為大多數(shù)的情形都是程序在調(diào)用 fork 后就立即調(diào)用 exec,這樣剛拷貝來的進程區(qū)域又立即被新的數(shù)據(jù)覆蓋掉。至于父進程,它可能等待子進程的執(zhí)行結(jié)束,或與子進程各做各的。最后則是看看用戶是否建立了太多的子進程。當內(nèi)核收到 fork 請求時,它會先查核三件事 :首先檢查存儲器是不是足夠 。 父進程和子進程共享一個程序段,但是各自擁有自己的堆棧、數(shù)據(jù)段、用戶空間以及進程控制塊。而所產(chǎn)生的新進程則稱為子進程。 Fork:由于進程為執(zhí)行程序的環(huán)境,因此在執(zhí)行程序前必須先建立這個能”跑”程序的環(huán)境。 20 linux 的進程和線程管理 [2][13][7][6] Linux 系統(tǒng)的進程、線程 進程:進程是一個運行程序并為其提供執(zhí)行環(huán)境的實體,它包括一個地址空間和至少一個控制點,進程在 這個地址空間上執(zhí)行單一指令序列。必要時操作系統(tǒng)還可以把不需要的內(nèi)存頁 (段 )交換到磁盤上。它的實現(xiàn)基于局部性原理,當一個程序在運行之前,沒有必要全部裝入內(nèi)存,而是僅將那些當前要運行的那些部分頁面或段裝入內(nèi)存運行 (copyonwrite),其余暫時留在硬盤上。為了支持虛擬存儲管理器的管理, Linux 系統(tǒng)采用分頁(paging)的方式來載入進程。 Linux 系統(tǒng)支持系統(tǒng) V( system V)的共享內(nèi)存 IPC機制。動態(tài)鏈接庫是多個進程共享執(zhí)行代碼的另一個常見例子。 雖然虛擬內(nèi)存允許進程擁有分離(虛擬)的地址空間,有時也需要進程之間共享內(nèi)存。 4.公平分配物理內(nèi)存 內(nèi)存管
點擊復制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1