久久久久无码精品,四川省少妇一级毛片,老老熟妇xxxxhd,人妻无码少妇一区二区

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

時(shí)間:2020-08-21 09:58:02 嵌入式培訓(xùn) 我要投稿

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

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

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

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

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

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

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

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

  make:構(gòu)核,通過(guò)各目錄的Makefile 文件將會(huì)在各個(gè)目錄下產(chǎn)生許多目標(biāo)文件。如果內(nèi)核沒(méi)有錯(cuò)誤,將產(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)生臨時(shí)文件。

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

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

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

  下面來(lái)論述了以Linux作為操作系統(tǒng)平臺(tái)的優(yōu)勢(shì),分析了以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卡為核心,卡上集成美國(guó)國(guó)家半導(dǎo)體公司(NS Geode)GX1 300MHz CPU,SVGA/LCD/LAN接口以及增強(qiáng)型IDE硬盤接口,支持CompactFlash卡。硬盤和光驅(qū)接至PC104的IDE1口,設(shè)置跳線使硬盤為主設(shè)備(master),光驅(qū)為從設(shè)備(slave),CompactFlash裝在IDE2口,設(shè)為主設(shè)備,這樣Linux識(shí)別 CompactFlah卡為/dev/hdc,而硬盤和光驅(qū)分別為/dev/had,/dev/hdb.我的Linux開(kāi)發(fā)系統(tǒng)是Red Hat 7.2版,通過(guò)PC104上的光驅(qū)安裝在硬盤上。

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

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

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

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

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

  出于深入了解Linux系統(tǒng)運(yùn)行環(huán)境和機(jī)制的想法,建議自己構(gòu)建Linux系統(tǒng),這對(duì)于將來(lái)系統(tǒng)內(nèi)核版本的升級(jí)和應(yīng)用功能的拓展很有好處。選擇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)核

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

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

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

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

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

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

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

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

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

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

  由于init進(jìn)程第一個(gè)執(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)引導(dǎo)工具(boot loader)

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

  boot=/dev/hdc #從CompactFlash卡啟動(dòng)

  disk=/dev/hdc

  bios=0x80 #使BIOS認(rèn)CompactFlash卡為啟動(dòng)盤

  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-15

Linux操作系統(tǒng)盤點(diǎn)06-22

linux操作系統(tǒng)的版本介紹06-22

Linux的物聯(lián)網(wǎng)操作系統(tǒng)06-15

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

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

遠(yuǎn)程安裝Linux操作系統(tǒng)的方法06-22

嵌入式操作系統(tǒng)有哪些10-06

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