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

正文內(nèi)容

嵌入式網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)在遠(yuǎn)程監(jiān)測中的應(yīng)用(編輯修改稿)

2024-07-25 13:35 本頁面
 

【文章內(nèi)容簡介】 源代碼都經(jīng)過了重新編寫,以緊縮和裁剪基本的代碼。這就使得uClinux的內(nèi)核同標(biāo)準(zhǔn)的Linux內(nèi)核相比非常之小,但是它仍保持了Linux操作系統(tǒng)的主要的優(yōu)點(diǎn),如穩(wěn)定性、強(qiáng)大的網(wǎng)絡(luò)功能和出色的文件系統(tǒng)支持等。uClinux包含Linux常用的API、小于512K的內(nèi)核和相關(guān)的上具。操作系統(tǒng)所有的代碼量較小。uClinux有一個(gè)完整的TCP/IP協(xié)議棧,同時(shí)對(duì)其它許多的網(wǎng)絡(luò)協(xié)議都提供支持。這些網(wǎng)絡(luò)協(xié)議都在uClinux上得到了很好的實(shí)現(xiàn)。對(duì)嵌入式系統(tǒng)而言,uClinux可以稱作是一個(gè)優(yōu)秀網(wǎng)絡(luò)操作系統(tǒng)。uClinux所支持的文件系統(tǒng)有多種,其中包括了最常用的NFS(網(wǎng)絡(luò)文件系統(tǒng))、ext2,romfs、MSDOS及FAT 16/32等[9]。 uClinux的內(nèi)存管理Linux系統(tǒng)的內(nèi)存管理至少實(shí)現(xiàn)了以下功能:⑴可以運(yùn)行比內(nèi)存還要大的程序。理想情況下應(yīng)該可以運(yùn)行任意大小的程序。⑵可以運(yùn)行只加載了部分的程序,縮短了程序啟動(dòng)的時(shí)間。⑶可以使多個(gè)程序同時(shí)駐留在內(nèi)存中提高CPU的利用率。⑷可以運(yùn)行重定位程序。即程序可以放于內(nèi)存中的任何一處,而且可以在執(zhí)行過程中移動(dòng)。⑸寫機(jī)器無關(guān)的代碼。程序不必韋先約定機(jī)器的配置情況。⑹減輕程序員分配和管理內(nèi)存資源的負(fù)擔(dān)。⑺可以進(jìn)行共享,例如,如果兩個(gè)進(jìn)程運(yùn)行同一個(gè)程序,它們應(yīng)該可以共享程序代瑪?shù)耐粋€(gè)副本。⑻提供內(nèi)存保護(hù),進(jìn)程不能以非授權(quán)方式訪問或修改頁面,內(nèi)核保護(hù)單個(gè)的進(jìn)程的數(shù)據(jù)和代碼以防止其它進(jìn)程修改它們。否則,用戶程序可能會(huì)偶然(或惡意)地破壞內(nèi)核或其它用戶程序。 uClinux的進(jìn)程和線程管理進(jìn)程:進(jìn)程是一個(gè)運(yùn)行程序并為其提供執(zhí)行環(huán)境的實(shí)體,它包括一個(gè)地址空間和至少一個(gè)控制點(diǎn),進(jìn)程在這個(gè)地址空間上執(zhí)行單一指令序列。進(jìn)程地址空間包括.可以訪問或引用的內(nèi)存單元的集合,進(jìn)程控制點(diǎn)通過一個(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ù)段,也就是說,盡管子進(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)程。如果上述說三個(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)程各做各的。uClinux沒有MMU管理存儲(chǔ)器,在實(shí)現(xiàn)多個(gè)進(jìn)程時(shí)(fork調(diào)用生成子進(jìn)程)需要實(shí)現(xiàn)數(shù)據(jù)保護(hù)。uClinux的多進(jìn)程管理通過vfork來實(shí)現(xiàn)。這意味著uClinux系統(tǒng)調(diào)用完成后,要么子進(jìn)程代替父進(jìn)程執(zhí)行(此時(shí)父進(jìn)程己經(jīng)sleep直到子進(jìn)程調(diào)用exit退出),要么調(diào)用exec執(zhí)行一個(gè)新的進(jìn)程,這個(gè)時(shí)候?qū)a(chǎn)生可執(zhí)行文件的加載,即使這個(gè)進(jìn)程只是父進(jìn)程的拷貝,這個(gè)過程也不能避免。當(dāng)子進(jìn)程執(zhí)行exit或exec后,子進(jìn)程調(diào)用wakeup,以此將父進(jìn)程喚醒,使父進(jìn)程繼續(xù)往下執(zhí)行。uClinux的這種多進(jìn)程實(shí)現(xiàn)機(jī)制同它的內(nèi)存管理緊密相關(guān)。uClinux針對(duì)nommu處理器開發(fā),所以被迫使用一種flat方式的內(nèi)存管理模式,啟動(dòng)新的應(yīng)用程序時(shí)系統(tǒng)必須為應(yīng)用程序分配存儲(chǔ)空間,并立即把應(yīng)用程序加載到內(nèi)存。缺少了MMU的內(nèi)存重映射機(jī)制,uClinux必須在可執(zhí)行文件加載階段對(duì)可執(zhí)行文件reloc處理,使得程序執(zhí)行時(shí)能夠直接使用物理內(nèi)存。 針對(duì)實(shí)時(shí)性的解決方案uClinux本身并沒有關(guān)注實(shí)時(shí)問題,它并不是為了Linux的實(shí)時(shí)性而提出的。另外有一種LinuxRTlinux關(guān)注實(shí)時(shí)問題。RTlinux執(zhí)行管理器把普通Linux的內(nèi)核當(dāng)成一個(gè)任務(wù)運(yùn)行,同時(shí)還管理了實(shí)時(shí)進(jìn)程。而非實(shí)時(shí)進(jìn)程則交給普通Linux內(nèi)核處理。這種方法已經(jīng)應(yīng)用于很多的操作系統(tǒng)用于增強(qiáng)操作系統(tǒng)的實(shí)時(shí)性,包括一些商用版UNIX系統(tǒng),Windows NT等。這種方法優(yōu)點(diǎn)之一是實(shí)現(xiàn)簡單,且實(shí)時(shí)性能容易檢驗(yàn)。優(yōu)點(diǎn)之二是由于非實(shí)時(shí)進(jìn)程運(yùn)行于標(biāo)準(zhǔn)Linux系統(tǒng),同其它Linux商用版本之間保持了很大的兼容性。優(yōu)點(diǎn)之三是可以支持硬實(shí)時(shí)時(shí)鐘的應(yīng)用。uClinux可以使用RTlinux的patch,從而增強(qiáng)uClinux的實(shí)時(shí)性,使得uClinux可以應(yīng)用于工業(yè)控制、進(jìn)程控制等一些實(shí)時(shí)要求較高的應(yīng)用。 uClinux的內(nèi)核加載方式uClinux的內(nèi)核有兩種可選的運(yùn)行方式:可以在flash上自接運(yùn)行,也可以加載到內(nèi)存中運(yùn)行。這種做法可以減少內(nèi)存需要。Flash運(yùn)行方式:把內(nèi)核的可執(zhí)行映象燒寫到flash上,系統(tǒng)啟動(dòng)時(shí)從flash的某個(gè)地址開始逐句執(zhí)行。這種方法實(shí)際上是很多嵌入式系統(tǒng)采用的方法。內(nèi)核加載方式:把內(nèi)核的壓縮文件存放在flash上,系統(tǒng)啟動(dòng)時(shí)讀取壓縮文件在內(nèi)存里解壓,然后開始執(zhí)行,這種方式相對(duì)復(fù)雜一些,但是運(yùn)行速度可能更快(ram的存取速率要比flash高)。同時(shí)這也是標(biāo)準(zhǔn)Linux系統(tǒng)采用的啟動(dòng)方式。在我們的嵌入式系統(tǒng)中,我們采用的是這種方式。 uClinux的根(root)文件系統(tǒng)uClinux系統(tǒng)采用romfs文件系統(tǒng),這種文件系統(tǒng)相對(duì)于一般的ext2文件系統(tǒng)要求更少的空間??臻g的節(jié)約來自于兩個(gè)方面,首先內(nèi)核支持romfs文件系統(tǒng)比支持ext2文件系統(tǒng)需要更少的代碼,其次romfs文件系統(tǒng)相對(duì)簡單,在建立文件系統(tǒng)超級(jí)塊(superblock)需要更少的存儲(chǔ)空間。romfs文件系統(tǒng)不支持動(dòng)態(tài)擦寫保存,對(duì)于系統(tǒng)需要?jiǎng)討B(tài)保存的數(shù)據(jù)采用虛擬ram盤的方法進(jìn)行處理 (ram盤將采用ext2文件系統(tǒng))。 uClinux的應(yīng)用程序庫 uClinux小型化的另一個(gè)做法是重寫了應(yīng)用程序庫,相對(duì)于越來越大且越來越全的libc庫,uClibc對(duì)libc做了精簡。uClinux對(duì)用戶程序采用靜態(tài)連接的形式,這種做法會(huì)使應(yīng)用程序變大,但是基于內(nèi)存管理的問題,不得不這樣做,同時(shí)這種做法也更接近于通常嵌入式系統(tǒng)的做法。 建立uClinux開發(fā)環(huán)境 移植概述1.基于處理器的移植這種類型的移植要求從一種處理器的編譯器開始。這是最主要也是最困難的一步。通常當(dāng)一個(gè)操作系統(tǒng)要運(yùn)行于一定的處理器,都需要特定的編譯器把操作系統(tǒng)(應(yīng)用程序)編譯成特定處理器可識(shí)別的字節(jié)碼。針對(duì)Linux系統(tǒng)而言,由于GNU套件支持大量的處理器。而且如前文所述,GNU編譯器GCC在設(shè)計(jì)時(shí)就已經(jīng)考慮跨平臺(tái)的問題,所以在進(jìn)行GCC移植時(shí)我們可以不考慮前端高級(jí)語言解析的部分(針對(duì)C語言等解析的過程),而只需要考慮后端的移植(主要針對(duì)處理器部分),這些后端告訴GCC在編譯時(shí)怎樣形成匯編代碼,怎樣滿足處理器體系結(jié)構(gòu)下的參數(shù)傳遞,怎樣針對(duì)處理器進(jìn)行流水線優(yōu)化等?;谔幚砥鞯囊浦策€包括操作系統(tǒng)的移植(假如嵌入式設(shè)備不需要操作系統(tǒng),則編譯器完成后就可以進(jìn)入編寫應(yīng)用的階段)。任何操作系統(tǒng)都有一定的代碼是同處理器相關(guān)的,而操作系統(tǒng)為了增加運(yùn)行效率,通??偸鞘褂昧舜罅刻囟ㄌ幚砥魈峁┑牡讓庸δ苤С?。這些與特定處理器相關(guān)的部分最終都必須修改,使其適用于新的處理器。另外從編寫應(yīng)用的角度來看,還必須提供函數(shù)庫。因此函數(shù)庫的穆植也是必須的。2.基于平臺(tái)的移植這種移植相對(duì)于處理器的移植而言所處的開發(fā)層次更高,在板級(jí)上進(jìn)行。對(duì)于一個(gè)嵌入式設(shè)備,除了處理器還要有很多周邊的器件才能正常上作。因此操作系統(tǒng)在運(yùn)行時(shí)必須初始化特定目標(biāo)板的器件。這些器件中最主要的是flash,sdram等。這些設(shè)備在系統(tǒng)啟動(dòng)后必須能夠正確尋址,從而操作系統(tǒng)能夠正常運(yùn)行。此外可能需要考慮的問題包括,打印終端,串口,以太網(wǎng)設(shè)備等。本系統(tǒng)涉及移植類型即是基于平臺(tái)的移植。我在移植uClinux時(shí),所采用的uClinux系統(tǒng)己經(jīng)有運(yùn)行于S3C44B0芯片上。所以編譯器己經(jīng)不需要做太多的上作,只需對(duì)其中有些地方加以修改,這樣將極大節(jié)省工作量。 交叉編譯環(huán)境的建立絕大多數(shù)Linux軟件開發(fā)都是以native方式進(jìn)行的,即本機(jī)開發(fā)、調(diào)試,本機(jī)運(yùn)行的方式。這種方式通常不適合于嵌入式系統(tǒng)的軟件開發(fā)。因?yàn)閷?duì)于嵌入式系統(tǒng)的開發(fā),沒有足夠的資源在本機(jī)(即板子上系統(tǒng))運(yùn)行開發(fā)工具和調(diào)試工具。通常嵌入式系統(tǒng)的軟件開發(fā)采用一種交叉編譯調(diào)試方式。交叉編譯調(diào)試環(huán)境建立在宿主機(jī)(即一臺(tái)PC機(jī))上,對(duì)應(yīng)的開發(fā)板叫做目標(biāo)板。開發(fā)時(shí)使用宿主機(jī)上的交叉編譯、匯編及鏈接上具形成可執(zhí)行的二進(jìn)制代碼,然后把可執(zhí)行文件下載到口標(biāo)機(jī)上運(yùn)行和調(diào)試。 建立宿主機(jī)開發(fā)環(huán)境在進(jìn)行嵌入式uClinux應(yīng)用開發(fā)設(shè)計(jì)之前,首先需要安裝一臺(tái)裝有指定操作系統(tǒng)的PC機(jī)作宿主機(jī)。對(duì)于嵌入式uClinux,宿主機(jī)上的操作系統(tǒng)一般要求為Redhat Linux,在本課題中用的是Redhat 。對(duì)于沒有使用類UNIX操作系統(tǒng)的設(shè)計(jì)者,安裝Redhat ,這樣可以避免在實(shí)際操作時(shí)引起不必要的麻煩。嵌入式開發(fā)通常要求宿主機(jī)配置有網(wǎng)絡(luò),支持NFS,支持tftp服務(wù)器等等。對(duì)于Redhat ,它默認(rèn)打開了防火墻。對(duì)于外來的IP訪問,它會(huì)全部拒絕,這樣其它網(wǎng)絡(luò)設(shè)備就根本不可能訪問它,即開發(fā)板無法使用NFS,無法通過tftp從它下載,無法完成telnet等。因此網(wǎng)絡(luò)安裝好后,應(yīng)關(guān)閉防火墻并且去掉ipchains和iptables兩項(xiàng)服務(wù)。NFS和tftp服務(wù)器的設(shè)置完全可以在Redhat 。由于uClinux及它的相關(guān)開發(fā)工具集大多都是來自于軟件組織的開放源代碼,大多數(shù)軟件都可以從網(wǎng)站://,來建立交叉開發(fā)環(huán)境。,在該文件所在口錄下輸入:(Host) $su(Host) (Host) sh./在宿主機(jī)上安裝armelf交叉編譯工具集。在armelf交叉編譯工具集中,主要用到armelfgcc,armelfgdb,arrnelfld和armelfas等等。make是負(fù)責(zé)從項(xiàng)目源代碼中生成最終可執(zhí)行文件和其它非源代碼文件的工具。make命令本身帶有四種參數(shù):標(biāo)志、宏定義、描述文件名和目標(biāo)文件名。make的主要工作是讀一個(gè)文本文件makefile。makefile是用shell語言寫的,主要描述了有關(guān)哪些目標(biāo)文件是從哪些依賴文件中產(chǎn)生的,是用何種命令來進(jìn)行這個(gè)產(chǎn)生過程的。有了這些信息,make會(huì)檢查磁盤文件,如果目標(biāo)文件的日期(即該文件生成或最后修改的日期)至少比它的一個(gè)依賴文件日期早的話,make就會(huì)執(zhí)行相應(yīng)命令,以更新目標(biāo)文件。嵌入式uClinux應(yīng)用程序的調(diào)試可分為以下步驟進(jìn)行:首先在宿主機(jī)上調(diào)試通過程序,移植到口標(biāo)板上;將宿主機(jī)和口標(biāo)板通過串口相連,在宿主機(jī)上運(yùn)行mini作為口標(biāo)板的顯示終端,掛載上宿主機(jī)硬盤,自接在目標(biāo)板上調(diào)試應(yīng)用??紤]到成本、習(xí)慣和方便,一般采用以下三種:⑴打印串口是嵌入式uClinux系統(tǒng)中最常用的調(diào)試手段,使用printf輸出運(yùn)行信息。⑵使用log記錄文件。使用syslog將應(yīng)用程序運(yùn)行過程中的中間信息全部記錄,在/var/log/syslog下,對(duì)照以后查出錯(cuò)誤。⑶使用gdb調(diào)試。板上移植gdbserver,通過以太網(wǎng)或串口遠(yuǎn)程進(jìn)杼調(diào)試。 編譯uCIinux內(nèi)核嵌入式系統(tǒng)應(yīng)用非常專業(yè)化,功能模塊相對(duì)比較單一。隨著uClinux內(nèi)核版本的升級(jí),內(nèi)核功能越來越強(qiáng)大,體系結(jié)構(gòu)也越來越復(fù)雜。出于存儲(chǔ)空間的限制,為了提高運(yùn)行性能,必須根據(jù)需要對(duì)內(nèi)核進(jìn)行精簡,定制為一個(gè)符合嵌入式系統(tǒng)的操作平臺(tái)。uClinux內(nèi)核采用了模塊化組織結(jié)構(gòu),通過增減內(nèi)核模塊方式來增減系統(tǒng)功能,達(dá)到對(duì)內(nèi)核功能模塊正確合理設(shè)置。設(shè)計(jì)者從只需編譯系統(tǒng)所需功能的代碼就可對(duì)系統(tǒng)的運(yùn)行進(jìn)行如下幾個(gè)方面的優(yōu)化:⑴用戶根據(jù)自身硬件系統(tǒng)的實(shí)際情況定制編譯的內(nèi)核,由于具有更少代碼,一般會(huì)獲得更高的運(yùn)行速度。⑵由于內(nèi)核代碼在系統(tǒng)運(yùn)行時(shí)會(huì)常駐內(nèi)存,因此,更精簡的內(nèi)核會(huì)獲得更多的用戶內(nèi)存空間。⑶減少內(nèi)核中不必要的功能模塊可以減少系統(tǒng)的漏洞,從而增加系統(tǒng)的穩(wěn)定性和安全性。從壓縮包。在編譯內(nèi)核時(shí)首先解壓縮uClinux源代碼壓縮包并且打上補(bǔ)?。ㄔ诮K端輸入),然后進(jìn)入uClinux源代碼所在的目錄。(Host) $tar zxvf (Host)$gzipcd (Host)$CD 內(nèi)核目標(biāo)設(shè)置然后輸入命令:make menuconfig。此時(shí)會(huì)出現(xiàn)菜單配置
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1