<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 從 EPROM 引導 Linux

從 EPROM 引導 Linux

作者: 時(shí)間:2011-03-12 來(lái)源:網(wǎng)絡(luò ) 收藏
從 EPROM 引導 Linux

本文簡(jiǎn)要介紹從486單板機的EPROM引導Linux。提供了一種在無(wú)硬盤(pán)的系統上運行Linux的方法。我們要介紹的應用程序是一個(gè)顯示器上的Operator Interface,它的顯示系統是由Boeing Flight Test開(kāi)發(fā)的。飛行環(huán)境需要一種可以防止突然性的電源中斷的機制。為了滿(mǎn)足這樣的要求,我們決定在無(wú)硬盤(pán)的系統上實(shí)現Operator Interface。
概況

基本的問(wèn)題包括從EPROM的SSD(solid state disk)引導,將root文件系統從EPROM拷貝至一個(gè)RAM disk,從客戶(hù)機加載Operator Interface軟件并且執行它。本文主要討論系統工作機制的細節以及它所使用的開(kāi)發(fā)技巧。

我們所選用的硬件為一臺擁有16M RAM、一個(gè)能夠容納4M

EPROM的PC104 SSD和其他一些PC104板的基于VME的單板機。它的BIOS支持SSD的使用。系統使用一個(gè)可編程的鍵盤(pán)和一塊標準的VGA顯示卡。

系統操作

引導時(shí)我們需要考慮兩個(gè)選項:

* 在DOS下使用loadlin(可以加在A(yíng)utoexec.bat文件中)引導Linux

* 安裝LILO直接引導Linux

第二種選項的好處是引導所用的時(shí)間較小。我們采用第一種方案,因為我們使用一個(gè)可編程的鍵盤(pán)——在DOS運行為鍵盤(pán)編程的軟件。

為了使系統工作,我們需要kernel-hacking。Ramdisk.c代碼被改成可以從任意的塊設備加載而不僅僅是從軟盤(pán)。另外,我們寫(xiě)一個(gè)從EPROM設備的新的塊設備驅動(dòng)程序。

實(shí)現EPROM設備驅動(dòng)程序的第一種思想是在EPROM中生成一個(gè)磁盤(pán)映像。這會(huì )為我們提供一個(gè)同EPROM相同大小的RAM disk,在這種情況下大小為3.5M(SSD的DOS分區占1/2M)。為了得到一個(gè)大的RAM disk,我們使用一個(gè)壓縮的磁盤(pán)映像。壓縮的思想很簡(jiǎn)單,相同的扇區之存貯一次。這樣的好處是磁盤(pán)映像的空白區域不占用EPROM空間。

為了自動(dòng)運行Operator interface程序,我們需要一個(gè)程序來(lái)替代getty。

這個(gè)程序(dboot.c)應該運行登錄程序,可以為指定的虛擬終端設置stdin,stdou和stderr。

引導的過(guò)程是這樣的:

l 加電后進(jìn)行內存檢測
l 加載運行AUTOEXEC.BAT的DOS
l 運行鍵盤(pán)應用程序
l 運行LOADLIN——從DOS分區中讀取Linux內核執行
l 由linux內核接管系統
l 從EPROM中加載RAM disk
l 轉換root文件系統到RAM disk
l init讀取inittab,注意inittab執行dboot 而不是getty
l 啟動(dòng)Operator interface

開(kāi)發(fā)

下一階段的任務(wù)是將EPROM的磁盤(pán)內容組織在一起。我們使

用如下分區的輔助盤(pán)來(lái)完成這項任務(wù):

* /dev/hda1 – 80M linux system
* /dev/hda2 - 6M EPROM
* /dev/hda3 - 20M DOS分區
* 使用Lilo引導
直接對EPROM進(jìn)行編程時(shí)很費時(shí)間的事。所以,我們大部分的開(kāi)發(fā)使用輻助盤(pán)來(lái)進(jìn)行。

磁盤(pán)映像的開(kāi)發(fā)首先確定需求。首先完成一個(gè)最小的系統,然后再將operator interface所需的項目加到系統中。由于我不是Unix專(zhuān)家,所以這個(gè)最小系統的完成是個(gè)試驗、糾錯的過(guò)程。我不斷的試驗,直到系統正常運行。

下一步將Linux分區的內容拷貝到6M分區中,然后在DOS下進(jìn)行如下操作:
loadlin zimage root=/dev/hda2 ro

如果系統穩定,則將6M分區載入到RAM disk。這同從EPROM中加載是相似的。為了避免對EPROM編程而測試系統,在DOS下進(jìn)行如下操作:
loadlin zimage root=/dev/hda2 ramdisk=6144 ro

因為對ramdisk.c進(jìn)行了修改,/dev/hda2磁盤(pán)映像被加載到RAM中,然后root分區轉換為RAM disk。我們需要不斷地修改disk image直到它正常工作為止。

對EPROMs編程

首先使用tar將小的disk image打包,然后解壓縮到一個(gè)干凈的文件系統。

為了打包disk image。我們從Linux引導,然后加載6M分區。不要對proc文件系統執行tar命令。我們使用以下的命令:
mount –t ext2 /dev/hda2 /mnt
cd /mnt
tar –cpf /tmp/eprom.tar *

為了生成disk image,我使用另一擁有6M RAM disk的計算機和如下的命令行:
dd if=/dev/zero of=/dev/ram count=12288
mke2fs /dev/ram 6144
mount –t ext2 /dev/ram /mnt
cd /mnt
tar –xpf ~/eprom.tar
dd if=/dev/ram of=~/eprom.dsk count=12288

這生成一個(gè)eprom.dsk文件,我們使用med.c程序將disk image(eprom.dsk)寫(xiě)入EPROMs(即對EPROMs編程)。
Med ~/eprom.dsk ~/eprom.img

然后EPROM程序員將EPROM image刻入EPROM中。
DOS boot SSD
SBC的SSD功能幫助我們構建disk image。DOS SSD disk最少需要如下的文件:DOS引導文件,command.com,autoexec.bat,鍵盤(pán)加載程序,loadlin與zImage。

結論
輔助盤(pán)上的開(kāi)發(fā)工作量很大,我們需要采取措施來(lái)減少工作量。EPROM disk在我們的應用程序中工作的很好。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>