自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何將 FreeDOS 作為嵌入式系統(tǒng)使用

系統(tǒng) Linux
在 DOS 上建立一個嵌入式系統(tǒng)需要定義一個最小化的 DOS 環(huán)境來運行單個應(yīng)用程序。幸運的是,設(shè)置一個最小化的 FreeDOS 環(huán)境是非常容易的。從技術(shù)上來說,啟動 FreeDOS 并運行 DOS 應(yīng)用程序僅需要內(nèi)核和一個 FDCONFIG.SYS 配置文件。

[[436520]]

現(xiàn)在,很多嵌入式系統(tǒng)都是在 Linux 上運行的。但是,在很久很久以前,嵌入式系統(tǒng)要么在一個定制的專有的平臺上運行,要么在 DOS 上運行。

FreeDOS 網(wǎng)站 宣稱,大多數(shù)人使用 FreeDOS 來完成三項主要任務(wù):

  1. 玩經(jīng)典的 DOS 游戲
  2. 運行老式的 DOS 軟件
  3. 運行一款嵌入式系統(tǒng)

但是,運行一個“嵌入式”系統(tǒng)的意義是什么呢?

嵌入式系統(tǒng)基本上是一款非常小的系統(tǒng),專用于運行一個特定的任務(wù)。你可以把現(xiàn)在的嵌入式系統(tǒng)當作是 物聯(lián)網(wǎng)(IoT)的一部分,這包括傳感器、恒溫器和門鈴攝像頭?,F(xiàn)在,很多嵌入式系統(tǒng)都是在 Linux 上運行的。

但是,在很久很久以前,嵌入式系統(tǒng)要么在一個定制的專有的平臺上運行,要么在 DOS 系統(tǒng)上運行。在現(xiàn)在,一些基于 DOS 的嵌入式系統(tǒng)仍然在運行,例如,收銀機或電話專用交換機(PBX)系統(tǒng)。舉個例子來說,在 2017 年,酷愛列車的人發(fā)現(xiàn)一個正在運行 FreeDOS 的俄羅斯的電動列車控制系統(tǒng) (俄語: САВПЭ),它使用特殊的軟件來控制和監(jiān)控郊區(qū)列車的線路,并發(fā)布乘客通告。

在 DOS 上建立一個嵌入式系統(tǒng)需要定義一個最小化的 DOS 環(huán)境來運行單個應(yīng)用程序。幸運的是,設(shè)置一個最小化的 FreeDOS 環(huán)境是非常容易的。從技術(shù)上來說,啟動 FreeDOS 并運行 DOS 應(yīng)用程序僅需要內(nèi)核和一個 FDCONFIG.SYS 配置文件。

安裝一款最小化的系統(tǒng)

我們可以使用 QEMU 仿真器來模擬一個專用的、最小化的 FreeDOS 系統(tǒng),并給它分配很少的資源。為了更準確地反映一個嵌入式系統(tǒng),我將定義一個只有 8 MB 的存儲器和僅僅有 2 MB 的硬盤驅(qū)動器的虛擬機。

為創(chuàng)建這個微小的虛擬硬盤,我將使用這個 qemu-img 命令來定義一個 2M 的文件:

  1. $ qemu-img create tiny.img 2M
  2. Formatting 'tiny.img', fmt=raw size=2097152

下面的這行命令定義了一個 32 位的 “i386” CPU、8MB 的存儲器,使用 2MB 的 tiny.img 文件作為硬盤驅(qū)動器鏡像,使用 FreeDOS 1.3 RC4 LiveCD 作為 CD-ROM 介質(zhì)。我們也將機器設(shè)置為從 CD-ROM 驅(qū)動器啟動(-boot order=d),盡管我們只需要用它來安裝系統(tǒng)。在我們完成所有的設(shè)置后,我們將從該硬盤啟動完成的嵌入式系統(tǒng):

  1. qemu-system-i386 -m 8 -hda tiny.img -cdrom FD13LIVE.iso -boot order=d

使用 “現(xiàn)場環(huán)境模式Live Environment mode” 來啟動系統(tǒng),這將為我們提供一個正在運行的 FreeDOS 系統(tǒng),我們可以使用它來將一個最小化的 FreeDOS 轉(zhuǎn)移到硬盤上。 

啟動到 LiveCD 環(huán)境之中(Jim Hall, CC-BY SA 4.0

我們需要在虛擬硬盤驅(qū)動器上為我們的程序創(chuàng)建一個分區(qū)。為此,從命令行中運行 FDISK 程序。FDISK 是 FreeDOS 上的一個標準的 磁盤分區(qū) 實用程序。使用 FDISK 來創(chuàng)建一個單個硬盤驅(qū)動器分區(qū),占用整個(2 MB)硬盤驅(qū)動器。 

FDISK,在創(chuàng)建 2 MB 分區(qū)后(Jim Hall, CC-BY SA 4.0

但是,在你重新啟動 FreeDOS 之前,F(xiàn)reeDOS 不會看到新的硬盤驅(qū)動器分區(qū) — FreeDOS 僅在啟動時讀取硬盤詳細信息。退出 FDISK ,并重新啟動 FreeDOS 。

在重新啟動后,你需要在新的硬盤驅(qū)動器上創(chuàng)建一個 DOS 文件系統(tǒng)。因為這里只有一個虛擬硬盤,F(xiàn)reeDOS 將識別其為 C: 驅(qū)動器。你可以使用 FORMAT 命令來在 C: 驅(qū)動器上創(chuàng)建一個 DOS 文件系統(tǒng)。使用 /S 選項將把操作系統(tǒng)文件(內(nèi)核,外加一個 COMMAND.COM shell 的副本)轉(zhuǎn)移到新的驅(qū)動器上。 

格式化新的驅(qū)動器來創(chuàng)建一個 DOS 文件系統(tǒng)(Jim Hall, CC-BY SA 4.0   你已經(jīng)創(chuàng)建了硬盤驅(qū)動器并將其格式化,現(xiàn)在,你可以安裝應(yīng)用程序,這些應(yīng)用程序是將會在新安裝的嵌入式系統(tǒng)上運行的。

安裝專用的應(yīng)用程序

嵌入式系統(tǒng)實際上只是一個運行在一個專用系統(tǒng)上的單一用途的應(yīng)用程序。這些應(yīng)用程序通常是為其將要控制的系統(tǒng)而自定義構(gòu)建的,例如,一臺收銀機、顯示終端、或控制環(huán)境。在這個演示中,讓我們使用一個來自 FreeDOS 1.3 RC4 安裝光盤中的程序。它需要足夠小,以適應(yīng)我們?yōu)槠鋭?chuàng)建的 2 MB 微型硬盤驅(qū)動器。這可以是任何東西,所以,為了好玩,讓我們把它變成一個游戲。

FreeDOS 1.3 RC4 包含一些有趣的游戲。我喜歡的一個游戲是一個名稱為 “Simple Senet” 的棋類游戲。它是一個基于 Senet 的古埃及棋類游戲。游戲的細節(jié)對這個演示并不重要,我們將安裝它,并將其設(shè)置為嵌入式系統(tǒng)的專業(yè)應(yīng)用程序。

為安裝應(yīng)用程序,在 FreeDOS 1.3 RC4 LiveCD 上,進入 \PACKAGES\GAMES 目錄。你將在其中看到一個很長的軟件包列表,而我們想要的 SENET.ZIP 。 

來自 FreeDOS 1.3 RC4 的一個游戲軟件包列表(Jim Hall, CC-BY SA 4.0

為解壓縮 “Simple Senet” 軟件包到虛擬硬盤上,使用 UNZIP 命令。所有的 FreeDOS 軟件包都是 Zip 文件,因此,你可以使用任意與 Zip 兼容的檔案實用程序來管理它們。FreeeDOS 1.3 RC4 包含創(chuàng)建 Zip 檔案文件的 ZIP 和提取 Zip 檔案文件的 UNZIP 。它們都來自 Info-Zip 項目 。

  1. UNZIP SENET.ZIP -d C:\FDOS

通常,使用 UNZIP 來提取 Zip 文件到當前目錄中。在命令行結(jié)尾的 -d C:\FDOS 選項將告訴 UNZIP 來提取 Zip 文件到 C:\FDOS 目錄之中。(-d 指的是“目的地”)。 

解壓縮 Simple Senet 游戲(Jim Hall, CC-BY SA 4.0

為了讓嵌入式系統(tǒng)啟動時運行 “Simple Senet” 游戲,我們需要告訴 FreeDOS 來使用 Senet 作為系統(tǒng)的 “shell” 。 默認的 FreeDOS 的 shell 是 COMMAND.COM 程序,但是,你可以在 FDCONFIG.SYS 內(nèi)核配置文件中使用 SHELL= 指令來定義一個不同的 shell 程序。我們可以使用 FreeDOS 的 Edit 來創(chuàng)建新的 C:\FDCONFIG.SYS 文件。 

(Jim Hall, CC-BY SA 4.0

如果你需要定義其它的參數(shù)來支持嵌入式系統(tǒng),你可以將其添加到 FDCONFIG.SYS 文件之中。例如,你可能需要使用 SET 動作來設(shè)置環(huán)境變量,或者使用 FILES= 或 BUFFERS= 語句來調(diào)整 FreeDOS 內(nèi)核。

運行嵌入式系統(tǒng)

在全面地完成嵌入式系統(tǒng)的定義之后,現(xiàn)在,我們可以重新啟動計算機來運行嵌入式應(yīng)用程序。運行一個嵌入式系統(tǒng)通常僅需要有限的資源,因此,在這個演示中,我們需要調(diào)整 QEMU 命令行來只從硬盤驅(qū)動器(-boot order=c)中啟動,而不再定義一個 CD-ROM 驅(qū)動器:

  1. qemu-system-i386 -m 8 -hda tiny.img -boot order=c

當 FreeDOS 內(nèi)核啟動時,它將讀取 FDCONFIG.SYS 文件以獲取啟動參數(shù)。然后,它將使用 SHELL= 行的定義來運行 shell 。這將自動地運行 “Simple Senet” 游戲。 

作為一個嵌入式系統(tǒng)運行 Simple Senet(Jim Hall, CC-BY SA 4.0

我們已經(jīng)使用了 “Simple Senet” 來演示如何在 FreeDOS 上設(shè)置一個嵌入式系統(tǒng)。根據(jù)你的需要,你可以使用任何你喜歡的獨立應(yīng)用程序。在 FDCONFIG.SYS 中使用 SHELL= 行將其定義為 DOS 的 shell ,F(xiàn)reeDOS 將在啟動時自動地啟動該應(yīng)用程序。 

不過,在這里有一個限制。嵌入式系統(tǒng)通常不需要退回到一個命令行提示符之中,因此這些專用應(yīng)用程序通常不允許用戶退出到 DOS 之中。如果你設(shè)法退出了嵌入式應(yīng)用程序,你可能會看到一個 “Bad or missing Command Interpreter” 的提示,你將需要在其中輸入一個新的 shell 的完整路徑。對于一個以用戶為中心的桌面系統(tǒng)來說,這將是一個問題。但是在一個嵌入式系統(tǒng)上,它只專注執(zhí)行一種工作的,那么,你也永遠不需要退出嵌入式應(yīng)用程序。

 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2024-07-26 08:00:00

2020-06-15 07:00:00

Linux嵌入式系統(tǒng)

2011-05-25 09:08:23

MeeGo平板電腦

2021-12-19 22:34:45

Linux容器系統(tǒng)

2022-01-03 23:33:40

Linux組件系統(tǒng)

2021-10-26 21:50:10

Rust嵌入式開發(fā)

2022-02-14 23:17:16

Gitlab嵌入式工具

2022-07-20 21:03:05

FreeDOS文本編輯器

2009-06-26 16:18:40

Windows Emb

2009-12-17 18:38:56

Fedora 7嵌入式

2009-04-11 15:22:24

Linux 2.6內(nèi)核應(yīng)用

2021-12-24 17:01:29

Linux工具系統(tǒng)

2020-07-03 07:00:00

Linux組件

2011-01-06 15:11:09

嵌入式linux

2017-12-21 10:43:44

Linux嵌入式終端

2011-04-25 10:25:43

OpenEmbedde嵌入式Linux

2023-09-18 14:39:39

2024-02-28 08:00:54

Web嵌入式嵌入式系統(tǒng)

2010-01-12 17:32:40

ARM平臺

2011-01-14 13:13:23

嵌入式Linux開發(fā)
點贊
收藏

51CTO技術(shù)棧公眾號