Linux操作系統成為嵌入式操作系統的因素

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

    Linux操作系統成為嵌入式操作系統的因素

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

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

      構建嵌入式Linux系統-構建內核常用的命令包括:

      make config:內核配置,調用 ./scripts/Configure 按照 arch/i386/config.in 來進行配置。

      make dep:尋找依賴關系。

      make clean:清除以前構建內核所產生的所有目標文件、模塊文件、以及一些臨時文件等。

      make rmproper:刪除所有因構建內核過程中產生的所有文件,把內核恢復到最原始的狀態。

      make:構核,通過各目錄的Makefile 文件將會在各個目錄下產生許多目標文件。如果內核沒有錯誤,將產生文件vmlinux,這就是構建的內核。

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

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

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

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

      下面來論述了以Linux作為操作系統平臺的優勢,分析了以PC104卡和CompactFlash卡構造帶圖形用戶界面(GUI)的Linux系統的關鍵技術. (構建嵌入式Linux系統)

      1) 硬件及軟件環境

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

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

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

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

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

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

      出于深入了解Linux系統運行環境和機制的想法,建議自己構建Linux系統,這對于將來系統內核版本的升級和應用功能的拓展很有好處。選擇Red Hat 7.2的Linux版本。

      2) 系統分區和格式化

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

      系統分區和格式化

      3)構建嵌入式Linux系統-編譯內核

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

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

      4) 構建嵌入式Linux系統-創建根文件系統(Root Filesystem)

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

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

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

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

      ::sysinit:/etc/init.d/rcS //運行系統公共腳本

      ::respawn:/bin/sh //立即進入shell環境

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

      由于init進程第一個執行的腳本文件是/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) 安裝系統引導工具(boot loader)

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

    【Linux操作系統成為嵌入式操作系統的因素】相關文章:

    Linux操作系統概述06-22

    linux操作系統目錄結構詳解07-17

    Linux操作系統8個經典技巧05-27

    嵌入式操作系統的功能02-23

    Linux認證基礎知識:linux操作系統目錄結構07-10

    選擇嵌入式操作系統的技巧08-08

    ARM的十一種嵌入式操作系統10-30

    嵌入式操作系統與嵌入式處理器08-15

    Linux操作系統文件系統基礎知識07-25

    Linux與Win2000操作系統的可靠性比較09-21

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      在线永久观看国产精品电影 | 亚洲第一成年网站在线观看 | 亚洲日韩欧美综合一区 | 思思久久96热在精品国产高清 | 在线播放麻豆嫩草影院AV | 尤物在线永久免费观看视频 |