a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 拿起手術刀 深入剖解路由器的“心臟”技術

拿起手術刀 深入剖解路由器的“心臟”技術

作者: 時間:2018-09-06 來源:網絡 收藏

本文引用地址:http://www.j9360.com/article/201809/388544.htm

關于GNU和公共許可證協議的詳細資料,讀者可以參看GNU網站的介紹,http://www,gnu.oTgfhDmc.html。GNU開發套件作為通用的Linux開放套件,包括一系列的開發調試工具。GNU開發工具都是采用命令行的方式,用戶掌握起來相對比較困難,不如基于Windows系統的開發工具好用,但是GNU工具的復雜性是由于它更貼近編譯器和操作系統的底層,并提供了更大的靈活性。一旦學習和掌握了相關工具后,就了解了系統設計的基礎知識。運行于Linux操作系統下的自由軟件GNU gcc編譯器,不僅可以編譯Llnux操作系統下運行的應用程序,還可以編譯Linux內核本身,甚至可以作交叉編譯,編譯運行于其它CPU上的程序。所以,在進行嵌入式系統應用程序開發時,這些工具得到了日益廣泛的應用。

⑵uCIinux的打印終端

通常情況下,uClinux的默認終端是串口,內核在啟動時所有的信息都打印到串口終端(使用printk函數打印),同時也可以通過串口終端與系統交互。uClinux在啟動時啟動了telnetd(遠程登錄服務),操作者可以遠程登錄上系統,從而控制系統的運行。至于是否允許遠程登錄可以通過燒寫romfs文件系統時由用戶決定是否啟動遠程登錄服務。

⑶交叉編譯調試工具

支持一種新的處理器,必須具備一些編譯,匯編工具,使用這些工具可以形成可運行于這種處理器的二進制文件。對于內核使用的編譯工具同應用程序使用的有所不同。

路由器軟件系統的設計過程

uClinux 操作系統提供了嵌入式Web服務器、PPPOE拔號軟件、基于IPTable過濾防火墻等功能模塊的源代碼。路由器軟件系統的設計包括uClinux操作系統的裁剪、基于uClinux操作系統提供的以上功能模塊源代碼下的修改和設計,從而實現本路由器的嵌入式Web服務器、PPPOE拔號軟件、基于IPTable過濾防火墻。

1、uClinux操作系統裁剪

⑴裁剪前準備

uclinux的裁剪牽涉到對目標的硬件支持問題。要讓uClinux支持一個新硬件體系,要做的第一件事情就是收集和構建代碼的工具。然后就可以裁減和編譯內核。一旦內核支持基本的處理器功能,它就可以運作了,但是如果缺乏驅動程序的支持,就起不了多大作用。典型的驅動程序集合中包括了諸如控制臺終端、基本串行設備和一個可能包含了根文件系統的塊設備的驅動等。

在這里主要介紹針對我們剛才介紹的實例系統采用的uClinux裁剪方法。本實例中的宿主機上裝redhat9操作系統,因為redhat9具備安裝uClinux交叉編譯工具時所需要的庫。

首先必須在redhat9下建立uclinux開發環境,建立uclinux開發環境的方法有很多,而且也十分方便。可以從http://www.uClinux.org處下載最新的uClinux的源代碼、最新的gcc3的工具鏈,不過針對于不同的工具鏈在不同的操作系統下,以及目標板的MCU的不一樣,可能在編譯內核時會產生錯誤,在這里,我講解實例所使用的不是最新版本的。同樣的,針對不同的硬件開發環境要對uClinux源代碼進行不同的適當修改,修改部分通常是以代碼補丁形式實現的,一般網絡上會有各種通用模式的補丁提供使用。好了,切入正題,有了齊全的軟件包后,安裝過程如下:

(1) 下載內核和工具包

內核包 : uClinux-disc-200408.tar.gz

補丁文件:uClinux-disc-200408.patch

uclinux的源代碼和文件系統的源代碼,軟件包后的數字代表完成的日期。

工具鏈 : arm-elf-gcc-200403.sh

(2) 安裝工具包

sh arm -elf-gcc-200403.sh

(3) 解壓縮內核

tar -xzvfuClinux-dist-200408.tar.gz,生成uClinux-disk目錄。

(4)安裝補丁:

將補丁文件復制到uClinux-disk目錄下,進入該目錄,在Shell命令中使用如下命令:

patch -pl-f

⑵內核的編譯和生成

執行以下命令可以進行uClinux編譯:

make xconfig。具體的編譯選項配置過程本文不做詳細介紹。但在此給出編譯的一些基本思想:

ucLinux作為一個自由軟件,在廣大愛好者的支持下,內核版本不斷更新。新的內核修訂了舊內核的bug,并增加了許多新的特性。如果用戶想要使用這些新特性,或想根據自己的系統度身定制一個更高效,更穩定的內核,就需要重新編譯內核。

為了正確的合理地設置內核編譯配置選項,從而只編譯系統需要的功能的代碼,一般主要有下面四個考慮:

自己定制編譯的內核運行更快(具有更少的代碼)。

系統將擁有更多的內存(內核部分將不會被交換到虛擬內存中)。

不需要的功能編譯進入內核可能會增加被系統攻擊者利用的漏洞。

將某種功能編譯為模塊方式會比編譯到內核內的方式速度要慢一些。

在此需要補充說明的是內核編譯的目的是為了創建一個能夠放置在flash上支持flash讀取的完成要求功能的內核,同時也是flash讀取步驟其中一步。對uCLinux的內核進行配置和創建要對uCLinux內核的版本進行選擇:uCLinux內核的版本號有三種:主號、次號、修訂號。以2.4.10為例一般來說,主號如目前的2是很穩定的。主號的變動說明了操作系統發生了很大的變動。次號如目前的.4,用來說明內核的穩定性。當次號為偶數號((0,2, 4, 6) 時,表明現在的內核的穩定性強,而當次號為奇數號(1,3, 5) 時,表明現在的內核處于測試的階段,其穩定性值得考慮,如果你使用次號為奇數號的內核進行配置和創建時、就值得三思而行了。而修訂號的發表比較的頻繁,它主要是用來對前面的版本進行修補。開發新的版本和修改以前的版本是同時進行的,很有可能修改的修訂版本在新的版本出來之后。

依次執行以下命令完成uClinux的編譯過程:

cd/usr/local/src/uclinux=dist

make dep

make clean

make lib_only

make user_only

make romfs

make image

最終在image目錄下生成2個文件:

zImage——uClinux內核2.4.x的壓縮方式可執行映象文件;

romfs——文件系統的映象文件。

這就是我們要用來燒錄到硬件板內的最終文件了。具體燒寫可以通過使用專用的燒寫工具來實現,燒寫過程一定要參照燒寫工具的說明要求來進行。



關鍵詞:

評論


相關推薦

技術專區

關閉