国产激情久久久久影院小草_国产91高跟丝袜_99精品视频99_三级真人片在线观看

Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的因素

時間:2024-07-30 13:57:51 嵌入式培訓 我要投稿
  • 相關(guān)推薦

Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的因素

  嵌入式系統(tǒng)通常進行大量生產(chǎn),所以單個的成本節(jié)約,能夠隨著產(chǎn)量進行成百上千的放大。下面是小編收集的Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的因素,希望大家認真閱讀!

  在精簡內(nèi)核在編譯內(nèi)核之前,首先要明確需要那些驅(qū)動和模塊,然后只選擇需要的驅(qū)動和模塊,例如,如果系統(tǒng)不需要網(wǎng)絡支持,則可以去掉網(wǎng)絡模塊 。內(nèi)核一般是以壓縮方式存放的,在系統(tǒng)啟動時會自行解壓。內(nèi)核都是常駐內(nèi)存的,當需要調(diào)用應用程序時,再把需要的程序從磁盤調(diào)入內(nèi)存運行。

  構(gòu)建嵌入式Linux系統(tǒng)-構(gòu)建內(nèi)核常用的命令包括:

  make config:內(nèi)核配置,調(diào)用 ./scripts/Configure 按照 arch/i386/config.in 來進行配置。

  make dep:尋找依賴關(guān)系。

  make clean:清除以前構(gòu)建內(nèi)核所產(chǎn)生的所有目標文件、模塊文件、以及一些臨時文件等。

  make rmproper:刪除所有因構(gòu)建內(nèi)核過程中產(chǎn)生的所有文件,把內(nèi)核恢復到最原始的狀態(tài)。

  make:構(gòu)核,通過各目錄的Makefile 文件將會在各個目錄下產(chǎn)生許多目標文件。如果內(nèi)核沒有錯誤,將產(chǎn)生文件vmlinux,這就是構(gòu)建的內(nèi)核。

  make zImage:在make 的基礎(chǔ)上產(chǎn)生壓縮的內(nèi)核映象文件./arch/$(ARCH)/boot/zImage 以及在 ./arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時文件。

  make bzImage:在make 的基礎(chǔ)上產(chǎn)生壓縮比例更大的內(nèi)核映象文件./arch/$(ARCH)/boot/bzImage 以及在 ./arch/$(ARCH)/boot/compresed/目錄下產(chǎn)生臨時文件。

  make modules:編譯模塊文件,在make config 時所配置的所有模塊將在這時編譯,形成模塊目標文件,并把這些目標文件存放在modules 目錄中。

  make modules_install:把上面編譯好的模塊目標文件放置在目錄 ./lib/modules/$KERNEL_VERSION/ 中。上面的編譯內(nèi)核是在沒有改變源代碼的情況下實現(xiàn)的,如果覺得源代碼提供的功能在某些方面不能滿足要求,就要修改源代碼了。源代碼中主要有以下幾個關(guān)鍵部分:有關(guān)進程管理的task_struct 結(jié)構(gòu),這個結(jié)構(gòu)幾乎包括了與進程有關(guān)的所有文件內(nèi)容,還有任務隊列、時鐘管理和中斷管理,各種進程間的通信機制,內(nèi)存管理中各種內(nèi)存分配函數(shù)的實現(xiàn),虛擬文件系統(tǒng)。

  下面來論述了以Linux作為操作系統(tǒng)平臺的優(yōu)勢,分析了以PC104卡和CompactFlash卡構(gòu)造帶圖形用戶界面(GUI)的Linux系統(tǒng)的關(guān)鍵技術(shù). (構(gòu)建嵌入式Linux系統(tǒng))

  1) 硬件及軟件環(huán)境

  Linux系統(tǒng)的硬件環(huán)境以PC104卡為核心,卡上集成美國國家半導體公司(NS Geode)GX1 300MHz CPU,SVGA/LCD/LAN接口以及增強型IDE硬盤接口,支持CompactFlash卡。硬盤和光驅(qū)接至PC104的IDE1口,設置跳線使硬盤為主設備(master),光驅(qū)為從設備(slave),CompactFlash裝在IDE2口,設為主設備,這樣Linux識別 CompactFlah卡為/dev/hdc,而硬盤和光驅(qū)分別為/dev/had,/dev/hdb.我的Linux開發(fā)系統(tǒng)是Red Hat 7.2版,通過PC104上的光驅(qū)安裝在硬盤上。

  CompactFlash卡容量為32M,如果系統(tǒng)的BIOS支持自動檢測,應該可以直接探測到它。如果不行的話,需要自己輸入卡的各項參數(shù)。確保不要帶電插拔CompactFlash卡,因為這可能導致卡上數(shù)據(jù)的丟失。由于像Red Hat或Mandrake這樣的Linux分發(fā)版體積龐大(如果帶X-Windows基本都在1G以上),是不可能裝在容量只有32M的CompactFlash卡上的。目前有許多小型的嵌入式Linux版本,比較有名的有:

  ETLinux — 設計用于在小型工業(yè)計算機,尤其是 PC/104 模塊上運行的 Linux 的完全分發(fā)版。

  LEM — 運行在 386 上的小型(<8 MB)多用戶、網(wǎng)絡 Linux 版本。

  LOAF — "Linux On A Floppy"分發(fā)版,運行在 386 上。

  uClinux — 在沒有 MMU 的系統(tǒng)上運行的 Linux。目前支持 Motorola 68K、MCF5206 和 MCF5207 ColdFire 微處理器。

  出于深入了解Linux系統(tǒng)運行環(huán)境和機制的想法,建議自己構(gòu)建Linux系統(tǒng),這對于將來系統(tǒng)內(nèi)核版本的升級和應用功能的拓展很有好處。選擇Red Hat 7.2的Linux版本。

  2) 系統(tǒng)分區(qū)和格式化

  首先,需要在CompactFlash卡上建立分區(qū)和格式化,在Linux下用fdisk命令可以在CompactFlash卡上創(chuàng)建分區(qū),命令格式為fdisk /dev/hdc,然后用mke2fs命令創(chuàng)建ext2文件系統(tǒng).

  系統(tǒng)分區(qū)和格式化

  3)構(gòu)建嵌入式Linux系統(tǒng)-編譯內(nèi)核

  接下來要做的事情是編譯一個自己的內(nèi)核。內(nèi)核負責管理系統(tǒng)的進程、內(nèi)存、設備驅(qū)動程序、文件和網(wǎng)絡系統(tǒng),決定著系統(tǒng)的性能和穩(wěn)定性。從技術(shù)上而言, Linux 是一個內(nèi)核,而且只是一個內(nèi)核。其余我們通常稱之為 "Linux" (例如一個 shell 和編譯器)的部分實質(zhì)上只是整個軟件包的一部分,它們從技術(shù)上而言是與 Linux (內(nèi)核)分開的。選擇與開發(fā)系統(tǒng)一樣的內(nèi)核版本2.4.7,在Linux內(nèi)核版本發(fā)布的官方的網(wǎng)站上可以找到內(nèi)核源代碼。在編譯內(nèi)核的時候,由于內(nèi)核是在特定的機器上使用的,所以應該對機器的情況了如指掌。

  另一方面,為了降低過高的復雜性,可以不用kernel module支持,把所有需要的東西直接編譯到內(nèi)核里。IDE支持是必不可少的,因為Linux認CompactFlash卡為IDE硬盤,F(xiàn)rame buffer的支持也是必要的,這來源于GUI系統(tǒng)—MiniGUI的要求,網(wǎng)絡支持可以不要,但是如果認為顯示屏將來有這方面的要求也可以把它加上。

  4) 構(gòu)建嵌入式Linux系統(tǒng)-創(chuàng)建根文件系統(tǒng)(Root Filesystem)

  在編譯好內(nèi)核后,需要在CompactFlash卡上創(chuàng)建根文件系統(tǒng)。每臺機器都有根文件系統(tǒng)(一般在本地盤中,當然也可以在RAM盤或網(wǎng)絡盤中),它包含系統(tǒng)引導和使其他文件系統(tǒng)得以mount所必要的文件,根文件系統(tǒng)應該有單用戶狀態(tài)所必須的足夠的內(nèi)容。還應該包括修復損壞系統(tǒng)、恢復備份等的工具。

  如果有一個任務比其它任務更能簡化從頭構(gòu)建 Linux 根文件系統(tǒng)過程的話,那就是構(gòu)建和安裝 BusyBox 軟件包。BusyBox 是一個可執(zhí)行文件,它提供許多其它常用命令行工具的功能,所有這些功能都合為一體。BusyBox 的文檔聲稱構(gòu)建一個有效系統(tǒng)所需要的全部就是 BusyBox 和"/dev、/etc 以及內(nèi)核"— 而且他們沒有開玩笑。

  Busybox 編譯出一個單個的獨立執(zhí)行程序,就叫做 busybox。但是它可以根據(jù)配置,執(zhí)行 ash shell 的功能,以及幾十個各種小應用程序的功能。這其中包括有一個迷你的 vi 編輯器,系統(tǒng)不可或缺的 /sbin/init 程序,以及其他諸如 sed, ifconfig, halt, reboot, mkdir, mount, ln, ls, echo, cat ... 等等這些都是一個正常的系統(tǒng)上必不可少的。但是如果我們把這些程序的原件拿過來的話,它們的體積加在一起,讓人吃不消?墒 busybox 有全部的這么多功能,大小也不過 100K 左右。而且,用戶還可以根據(jù)自己的需要,決定到底要在 busybox 中編譯進哪幾個應用程序的功能。這樣的話,busybox 的體積就可以進一步縮小了。Busybox的具體編譯和配置方法請參閱Busybox的官方文檔,用戶可以在上找到.

  系統(tǒng)啟動后內(nèi)核調(diào)用的第一個進程是/sbin/init。init進程是系統(tǒng)所有進程的起點,內(nèi)核在完成核內(nèi)引導以后,即在本線程(進程)空間內(nèi)加載 init程序,它的進程號是1。init程序需要讀取/etc/inittab文件作為其行為指針,inittab是以行為單位的描述性(非執(zhí)行性)文本,inittab文件至少應該包含下面幾行:

  ::sysinit:/etc/init.d/rcS //運行系統(tǒng)公共腳本

  ::respawn:/bin/sh //立即進入shell環(huán)境

  ::ctrlaltdel:/bin/umount -a //捕捉Ctrl+Alt+Del快捷鍵,退出系統(tǒng)

  由于init進程第一個執(zhí)行的腳本文件是/etc/init.d/rcS,編輯rcS文件:

  #! /bin/sh

  mount -a

  接著還需要編寫/etc/fstab文件:

  proc /proc proc defaults 0 0

  none /var/shm shm defaults 0 0

  5) 安裝系統(tǒng)引導工具(boot loader)

  現(xiàn)在CompactFlask卡上新的內(nèi)核已經(jīng)有了,文件系統(tǒng)也已經(jīng)建好了,接著要做的事情是安裝系統(tǒng)引導工具(boot loader)。目前可以選用的引導工具很多,象LILO或GRUB都是挺不錯的,用戶可以按自己的喜好來選擇。在這里我們選用LILO,它在硬盤開始的 MBR寫入引導代碼,這些代碼不經(jīng)過文件系統(tǒng),直接從硬盤扇區(qū)號讀內(nèi)核映象(kernel image)裝入內(nèi)存。那么要如何安裝LILO呢?首先需要根據(jù)用戶系統(tǒng)的搭建情況編輯/etc/lilo.conf文件,下面是我的 /etc/lilo.conf文件,配有注釋,你可以根據(jù)自己的情況進行更改,具體你可以參考LILO mini-HOWTO:

  boot=/dev/hdc #從CompactFlash卡啟動

  disk=/dev/hdc

  bios=0x80 #使BIOS認CompactFlash卡為啟動盤

  delay=0 #可選,以秒為單位

  vga=0x311 #可選,參照Frame buffer的配置

  image=/boot/vmlinuz-2.4.7 #內(nèi)核文件位置

【Linux操作系統(tǒng)成為嵌入式操作系統(tǒng)的因素】相關(guān)文章:

Linux操作系統(tǒng)概述06-22

linux操作系統(tǒng)目錄結(jié)構(gòu)詳解07-17

Linux操作系統(tǒng)8個經(jīng)典技巧05-27

嵌入式操作系統(tǒng)的功能02-23

Linux認證基礎(chǔ)知識:linux操作系統(tǒng)目錄結(jié)構(gòu)07-10

選擇嵌入式操作系統(tǒng)的技巧08-08

ARM的十一種嵌入式操作系統(tǒng)10-30

嵌入式操作系統(tǒng)與嵌入式處理器08-15

Linux操作系統(tǒng)文件系統(tǒng)基礎(chǔ)知識07-25

Linux與Win2000操作系統(tǒng)的可靠性比較09-21