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

正文內(nèi)容

嵌入式web服務(wù)器boa的移植及其應(yīng)用畢業(yè)論文(編輯修改稿)

2025-07-25 14:04 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ,提供自動(dòng)極性檢測(cè)校正。提供 AUI 接口,用于 10BASE2, 10BASE5和10BASEF連接。 ● 沖突自動(dòng)重發(fā)機(jī)制,自動(dòng) Padding和 CRC 產(chǎn)生。 ● 可編程收發(fā)功能。 ● 流發(fā)送模式,減少 CPU的開(kāi)銷。 ● 提前中斷,可對(duì)幀預(yù)處理。 ● 自動(dòng)拒收錯(cuò)誤幀。 ● 支持 Boot Prom、邊界掃描及回送測(cè)試。 ● LED驅(qū)動(dòng)顯示連接狀態(tài)及 LAN的可用性。 3 嵌入式Linux系統(tǒng) Linux簡(jiǎn)介[2][3]Linux是UNIX風(fēng)格(UNIX Alike)的操作系統(tǒng)(OS)并且是一種很受歡迎的操作系統(tǒng),它與UNIX系統(tǒng)兼容,開(kāi)放源代碼。它原本被設(shè)計(jì)為桌面系統(tǒng),現(xiàn)在廣泛應(yīng)用于服務(wù)器領(lǐng)域。而更大的影響在于它正逐漸的應(yīng)用于嵌入式設(shè)備。嵌入式linux正是在這種氛圍下產(chǎn)生的。Linux是一個(gè)支持多用戶、多進(jìn)程、多線程、實(shí)時(shí)性較好的功能強(qiáng)大而穩(wěn)定的操作系統(tǒng),并且可以運(yùn)行在多種硬件平臺(tái)上,如:X86 PC、Sun Sparc、Digital Alpha、680x0、powerPC、MIPS等。Linux最在的特點(diǎn)在于它是GNU的一員,遵循公共版權(quán)許可證(GPL),秉承“自由的思想,開(kāi)放的源碼”的原則,是計(jì)算機(jī)愛(ài)好者自己的操作系統(tǒng)。Linux有一個(gè)完整的TCP/IP協(xié)議棧,同時(shí)對(duì)其他許多的網(wǎng)絡(luò)協(xié)議都提供支持。這些網(wǎng)絡(luò)協(xié)議都在Linux上得到了很好的實(shí)現(xiàn)。Linux可以稱作是一個(gè)針對(duì)嵌入式系統(tǒng)的優(yōu)秀網(wǎng)絡(luò)操作系統(tǒng)。Linux所支持的文件系統(tǒng)有多種,其中包括了最常用的NFS(網(wǎng)絡(luò)文件系統(tǒng))、extromfs, MSDOS及FAT 16/32等。參考文獻(xiàn)[1][11][13] Linux的內(nèi)存管理 [1] 內(nèi)存管理子系統(tǒng)是操作系統(tǒng)的重要部分,負(fù)責(zé)控制進(jìn)程對(duì)系統(tǒng)硬件內(nèi)在資源的訪問(wèn)。這是通過(guò)物理內(nèi)存管理來(lái)實(shí)現(xiàn)。該系統(tǒng)提供進(jìn)程對(duì)內(nèi)存的應(yīng)用與計(jì)算機(jī)物理內(nèi)存間的映射。內(nèi)存管理子系統(tǒng)為每個(gè)進(jìn)程都維護(hù)這樣一個(gè)映射關(guān)系。這樣,兩個(gè)進(jìn)程就可以訪問(wèn)同一個(gè)虛擬的內(nèi)存地址,而實(shí)際上使用的是不同的物理內(nèi)存地址。內(nèi)存管理子系統(tǒng)還支持頁(yè)面交換機(jī)制,將暫時(shí)不用的內(nèi)存頁(yè)調(diào)出內(nèi)存,使計(jì)算機(jī)獲得比實(shí)際內(nèi)存更多的虛擬內(nèi)存。內(nèi)存管理子系統(tǒng)提供的功能有:1.?dāng)U大地址空間擴(kuò)大地址空間使系統(tǒng)顯得擁有比實(shí)際更大量的內(nèi)存。虛擬內(nèi)存可以比系統(tǒng)中的物理內(nèi)存大許多倍,從而解決多進(jìn)程狀態(tài)下內(nèi)存不足的問(wèn)題。2.內(nèi)存保護(hù)系統(tǒng)中的每個(gè)進(jìn)程都有自己的虛擬地址空間。這些虛擬的地址空間是相互完全分離的,從而避免了并發(fā)執(zhí)行的進(jìn)程的所在地址空間沖突問(wèn)題。另外,硬件的虛擬內(nèi)存機(jī)制允許對(duì)內(nèi)存寫保護(hù),這可以防止代碼和數(shù)據(jù)被惡意的程序覆蓋。3.內(nèi)存映射將內(nèi)存映像和數(shù)據(jù)映射到進(jìn)程的地址空間。用內(nèi)存映射,文件的內(nèi)容被直接連接到進(jìn)程的虛擬地址空間。4.公平分配物理內(nèi)存內(nèi)存管理子系統(tǒng)允許系統(tǒng)中每個(gè)運(yùn)行中的進(jìn)程公平地共享系統(tǒng)的物理內(nèi)存。5.為進(jìn)程中通信所需要的共享內(nèi)存提供必要的基礎(chǔ)。雖然虛擬內(nèi)存允許進(jìn)程擁有分離(虛擬)的地址空間,有時(shí)也需要進(jìn)程之間共享內(nèi)存。例如:系統(tǒng)中可能有多個(gè)進(jìn)程運(yùn)行命令解釋程序,雖然可以在每一個(gè)進(jìn)程的虛擬地址空間都擁有一份命令解釋程序bash的復(fù)本,更好的是在物理內(nèi)存中只擁有一份復(fù)本,所有運(yùn)行bash的進(jìn)程共享代碼。動(dòng)態(tài)鏈接庫(kù)是多個(gè)進(jìn)程共享執(zhí)行代碼的另一個(gè)常見(jiàn)例子。共享內(nèi)存也可以用于進(jìn)程間通信(IPC)機(jī)制,兩個(gè)或多個(gè)進(jìn)程可以通過(guò)共同擁有的內(nèi)存交換信息。Linux系統(tǒng)支持系統(tǒng)V(system V)的共享內(nèi)存IPC機(jī)制。標(biāo)準(zhǔn)Linux使用虛擬存儲(chǔ)器技術(shù),這種技術(shù)用于提供比計(jì)算機(jī)系統(tǒng)中實(shí)際使用的物理內(nèi)存大得多的內(nèi)存空間。為了支持虛擬存儲(chǔ)管理器的管理,Linux系統(tǒng)采用分頁(yè)(paging)的方式來(lái)載入進(jìn)程。虛擬存儲(chǔ)器由存儲(chǔ)器管理機(jī)制及一個(gè)大容量的快速硬盤存儲(chǔ)器支持。它的實(shí)現(xiàn)基于局部性原理,當(dāng)一個(gè)程序在運(yùn)行之前,沒(méi)有必要全部裝入內(nèi)存,而是僅將那些當(dāng)前要運(yùn)行的那些部分頁(yè)面或段裝入內(nèi)存運(yùn)行(copyonwrite),其余暫時(shí)留在硬盤上。程序運(yùn)行時(shí)如果它所要訪問(wèn)的頁(yè)(段)己存在,則程序繼續(xù)運(yùn)行,如果發(fā)現(xiàn)不存在的頁(yè)(段),操作系統(tǒng)將產(chǎn)生一個(gè)頁(yè)錯(cuò)誤(page fault),這個(gè)錯(cuò)誤導(dǎo)致操作系統(tǒng)把需要運(yùn)行的部分加載到內(nèi)存中。必要時(shí)操作系統(tǒng)還可以把不需要的內(nèi)存頁(yè)(段)交換到磁盤上。利用這樣的方式管理存儲(chǔ)器,便可把一個(gè)進(jìn)程所需要用到的存儲(chǔ)器以化整為零的方式,視需求分批載入,而核心程序則憑借屬于每個(gè)頁(yè)面的頁(yè)碼來(lái)完成尋址各個(gè)存儲(chǔ)器區(qū)段的工作。 linux的進(jìn)程和線程管理[2][13][7][6]、線程進(jìn)程:進(jìn)程是一個(gè)運(yùn)行程序并為其提供執(zhí)行環(huán)境的實(shí)體,它包括一個(gè)地址空間和至少一個(gè)控制點(diǎn),進(jìn)程在這個(gè)地址空間上執(zhí)行單一指令序列。進(jìn)程地址空間包括可以訪問(wèn)或引用的內(nèi)存單元的集合,進(jìn)程控制點(diǎn)通過(guò)一個(gè)一般稱為程序計(jì)數(shù)器(program counter PC)的硬件寄存器控制和跟蹤進(jìn)程指令序列。Fork:由于進(jìn)程為執(zhí)行程序的環(huán)境,因此在執(zhí)行程序前必須先建立這個(gè)能”跑”程序的環(huán)境。Linux系統(tǒng)提供系統(tǒng)調(diào)用拷貝現(xiàn)行進(jìn)程的內(nèi)容,以產(chǎn)生新的進(jìn)程,調(diào)用fork的進(jìn)程稱為父進(jìn)程。而所產(chǎn)生的新進(jìn)程則稱為子進(jìn)程。子進(jìn)程會(huì)承襲父進(jìn)程的一切特性,但是它有自己的數(shù)據(jù)段,也就是說(shuō),盡管子進(jìn)程改變了所屬的變量,卻不會(huì)影響到父進(jìn)程的變量值。父進(jìn)程和子進(jìn)程共享一個(gè)程序段,但是各自擁有自己的堆棧、數(shù)據(jù)段、用戶空間以及進(jìn)程控制塊。換言之,兩個(gè)進(jìn)程執(zhí)行的程序代碼是一樣的,但是各有各的程序計(jì)數(shù)器與自己的私人數(shù)據(jù)。當(dāng)內(nèi)核收到fork請(qǐng)求時(shí),它會(huì)先查核三件事:首先檢查存儲(chǔ)器是不是足夠。其次是進(jìn)程表是否仍有空缺。最后則是看看用戶是否建立了太多的子進(jìn)程。如果上述說(shuō)三個(gè)條件滿足,那么操作系統(tǒng)會(huì)給子進(jìn)程一個(gè)進(jìn)程識(shí)別碼,并且設(shè)定CPU時(shí)間,接著設(shè)定與父進(jìn)程共享的段,同時(shí)將父進(jìn)程的文件節(jié)點(diǎn)索引mode拷貝一份給子進(jìn)程運(yùn)用,最終子進(jìn)程會(huì)返回?cái)?shù)值0以表示它是子進(jìn)程。至于父進(jìn)程,它可能等待子進(jìn)程的執(zhí)行結(jié)束,或與子進(jìn)程各做各的。exec系統(tǒng)調(diào)用:該系統(tǒng)調(diào)用提供一個(gè)進(jìn)程去執(zhí)行另一個(gè)進(jìn)程的能力,exec系統(tǒng)調(diào)用是采用覆蓋舊有進(jìn)程存儲(chǔ)器內(nèi)容的方式,所以原來(lái)程序的堆棧、數(shù)據(jù)段與程序段都會(huì)被修改,只有用戶區(qū)維持不變。vfork系統(tǒng)調(diào)用:由于在使用fork時(shí),內(nèi)核會(huì)將父進(jìn)程拷貝一份給子進(jìn)程,但是這樣的做法相當(dāng)浪費(fèi)時(shí)間,因?yàn)榇蠖鄶?shù)的情形都是程序在調(diào)用fork后就立即調(diào)用exec,這樣剛拷貝來(lái)的進(jìn)程區(qū)域又立即被新的數(shù)據(jù)覆蓋掉。因此Linux系統(tǒng)提供一個(gè)系統(tǒng)調(diào)用vfork, vfork假定系統(tǒng)在調(diào)用完成vfork后會(huì)馬上執(zhí)行exec,因此vfork不拷貝父進(jìn)程的頁(yè)面,只是初始化私有的數(shù)據(jù)結(jié)構(gòu)與準(zhǔn)備足夠的分頁(yè)表。這樣實(shí)際在vfork調(diào)用完成后,父子進(jìn)程事實(shí)上共享同一塊存儲(chǔ)器(在子進(jìn)程調(diào)用exec或是exit之前),因此子進(jìn)程可以更改父進(jìn)程的數(shù)據(jù)及堆棧信息,因此vfork系統(tǒng)調(diào)用完成后,父進(jìn)程進(jìn)入睡眠,直到子進(jìn)程執(zhí)行exec。當(dāng)子進(jìn)程執(zhí)行exec時(shí),由于exec要使用被執(zhí)行程序的數(shù)據(jù),代碼覆蓋子進(jìn)程的存儲(chǔ)區(qū)域,這樣將產(chǎn)生寫保護(hù)錯(cuò)誤(do_wp_page )(這個(gè)時(shí)候子進(jìn)程寫的實(shí)際上是父進(jìn)程的存儲(chǔ)區(qū)域),這個(gè)錯(cuò)誤導(dǎo)致內(nèi)核為子進(jìn)程重新分配存儲(chǔ)空間。當(dāng)子進(jìn)程正確開(kāi)始執(zhí)行后,將喚醒父進(jìn)程,使得父進(jìn)程繼續(xù)往后執(zhí)行。 Linux的交叉開(kāi)發(fā)環(huán)境 [8][7][10][5]1. GNU開(kāi)發(fā)套件GNU開(kāi)發(fā)套件作為通用的Linux開(kāi)放套件,包括一系列的開(kāi)發(fā)調(diào)試工具。主要組件:GCC: 編譯器,可以做成交叉編譯的形式,即在宿主機(jī)上開(kāi)發(fā)編譯目標(biāo)上可運(yùn)行的二進(jìn)制文件。Binutils:一些輔助工具,包括objaump(可以反編譯二進(jìn)制文件),as(匯編編譯器),la(連接器)等等。Gdb: 調(diào)試器,可使用多種交叉調(diào)試方式,gabbam(背景調(diào)試工具),gabserver (使用以太網(wǎng)絡(luò)調(diào)試)。1)安裝工具鏈 Mkdir /usr/local/arm Tar zxvf Export PATH=/usr/local/arm/ :$PATH2)二進(jìn)制工具(Binutils )GNU binutils包包括了匯編工具、鏈接器和基本的目標(biāo)文件處理工具。對(duì)binutils包的設(shè)置定義了所需的目標(biāo)文件的格式和字節(jié)順序。編譯binutils$ tar –jxvf $ cd $ mkdir buildarmlinux$ cd buildarmlinux$ ../configure –target=armlinux –prefix=/usr/local/arm/$ Make$ Make install3) C編譯器GNU編譯器集GCC是通過(guò)使用一種叫做“寄存器轉(zhuǎn)換語(yǔ)言”( RTL)的方式實(shí)現(xiàn)的。假定現(xiàn)在有一種基本的機(jī)器描述性文件,它已經(jīng)能滿足大家的需要?,F(xiàn)在要做的僅僅是設(shè)置默認(rèn)情況下使用的參數(shù)和如何將文件組合成可執(zhí)行文件的方式。編譯GCC的輔助編譯器(并打上補(bǔ)丁) $ tar –jxvf $ cd $ mkdir buildarmlinux $ cd buildarmlinux $ ../configure –target=armlinux –prefix=/usr/local/arm/ –withheaders=/urs/local/ 4) 編譯生成glibc庫(kù)(并打上補(bǔ)丁) $ tar xvzf $ cd $ tar xzvf $mkdir buildarmlinux $ cd buildarmlinux $ CC=armlinuxas AS=armlinuxas LD=armlinuxld ../configure host=armlinux withheaders=/usr/local/arm/ $ make $make install5) 編譯生成完整的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 install6)制作交叉調(diào)試器 $ tar –zxvf $ cd $ mkdir buildarmlinux $ cd buildarmlinux $ ../configure target=armlinux prefix=/usr/local/arm/ $ make $ make install7)編譯gdbserver $ cd $ cd gdb/gdbserver $ chmod u+x configure $ CC=armlinuxgcc ./configure host=armlinux $ make(備注: target 指定交叉工具的目標(biāo)板體系結(jié)構(gòu)是armlinuxprefix 指定安裝路徑為/usr/local/arm/withheaders 指定內(nèi)核頭文件所在路徑為/usr/local/arm disablethreads 選項(xiàng)指定不使用線程,也不使用線程庫(kù), enablelanguages 指定僅支持的語(yǔ)言. enableaddons=linuxthread選項(xiàng)支持線程庫(kù). enableshared選項(xiàng)支持共享庫(kù).)4 U-boot在GEC2410上的移植 BootLoader的介紹[6]引導(dǎo)加載程序BootLoader 是系統(tǒng)加電后運(yùn)行的第一段代碼。我們熟悉的PC 中的引導(dǎo)程序一般由BIOS 和位于硬盤MBR 中的OS bootloader(例如LILO 或者GRUB)一起組成。然而在嵌入式系統(tǒng)中通常沒(méi)有像BIOS 那樣的固件程序(有的嵌入式CPU 有),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由bootloader 來(lái)完成。比如在一個(gè)基于ARM920T core 的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)都從地址0x00000000 開(kāi)始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的BootLoader 程序。簡(jiǎn)單地說(shuō),BootLoader 就是在操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序運(yùn)行之前運(yùn)行的一段小程序。通過(guò)這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟 硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核或用戶應(yīng)用程序準(zhǔn)備好正確的環(huán)境。
bootloader 是依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式系統(tǒng)中。不同的體系結(jié)構(gòu)需求的bootloader 是不同的;除了體系結(jié)構(gòu),bootloader 還依賴于具體的嵌入式板級(jí)設(shè)備的配置。也就是說(shuō),對(duì)于兩塊不同的嵌入式板而言,即使它們基于相同的CPU 構(gòu)建,運(yùn)行在其中一塊電路板上的bootloader,未必能夠運(yùn)行在另一塊電路開(kāi)發(fā)板上。 BootLoader啟動(dòng)模式介紹[7][6][10]大多數(shù) Boot Loader 都包含兩種不同的操作模式:?jiǎn)?dòng)加載模
點(diǎn)擊復(fù)制文檔內(nèi)容
化學(xué)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1