最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Zeal8bit操作系統(tǒng)Build & Run In Emulator (基于Ubuntu)

2023-06-23 21:33 作者:timfang1990  | 我要投稿

0.前言

基于Ubuntu build Zeal8bit操作系統(tǒng) OS,并在Web Emulator上成功運行,踩了不少坑,給想動手嘗試一下的同學(xué)們分享下~

感謝Zeal8bit大佬帶來的基于Z80自制的開源Zeal8bit OS視頻分享:

自制8位操作系統(tǒng)【開源】

從整個視頻分享過程中我們可以看出大佬扎實的操作系統(tǒng)的知識儲備,特別是對Linux操作系統(tǒng)的深刻理解。他幾乎把Zeal8bit打造成為Z80 8位CPU量身定制的“極精簡版Linux”,讓我等圍觀群眾為之嘆服。

正好我這邊也有自制類似這種“極精簡版Linux”的需求,起因是這樣的:

  • 自己這邊正在學(xué)習(xí)RISV-CPU的設(shè)計,并在FPGA上按照開源代碼定制了一個屬于自己的RISC-V的小型SOC,添加了SPI接口訪問TF卡的IP;

  • 開發(fā)了測試代碼成功訪問到了存儲在TF中的hello_world.txt (基于FAT16文件系統(tǒng))。

心想著事情都進展到這個地步了,不移植個Linux操作系統(tǒng)說不過去了。

奈何本人沒文化,操作系統(tǒng)知識儲備幾乎為零,重新開始學(xué)發(fā)現(xiàn)能找到的資料要么過于偏向理論性,沒有實操,學(xué)習(xí)效率低下,學(xué)習(xí)興趣也會很快消耗殆盡;而有實操的學(xué)習(xí)資料又是綁定特定的SOC平臺,而且重點講述移植過程的細(xì)節(jié),對操作系統(tǒng)本身的講解并不深入。

第二個困難點是由于我的FPGA平臺是一個極小型的國產(chǎn)FPGA平臺,有沒有外接SDRAM,內(nèi)存的搭建只能使用內(nèi)置的SRAM資源,目測極限能把內(nèi)存做到16 KB。好在有個外接的32MB EEPROM和更大容量的TF卡,這樣可以把程序放在EEPROM中運行以節(jié)約寶貴的SRAM內(nèi)存資源。不過這點可憐的內(nèi)存距離放得下最精簡的Linux還相差個數(shù)量級。

皇天不負(fù)有心人,Zeal8bit大佬的這個視頻讓我隱約看到了曙光:我可以把Zeal8bit OS移植給我的RISC-V SOC。不過困難也是存在的:大佬的Zeal8bit OS是基于Z80匯編的,從移植性上給我澆了一盆冷水。不過這個已經(jīng)是我目前能看到的最接近我需求的OS了:

  • Linux的設(shè)計交互和思想;

  • 足夠精簡;

  • 有開源代碼;

  • 有Emulator供實操。

飯都喂到嘴邊了,咱們好歹動動嘴嚼兩下。咱們就努努力,啃一下Z80的匯編代碼,把整個設(shè)計思想和flow理解透徹,最后基于RISC-V平臺重新實現(xiàn)一個Zeal8bit?OS出來。

千里之行的第一步,就是要把大佬視頻中的原生開源Source Code在Emulator上運行起來,方便后續(xù)學(xué)習(xí),修改。有實操反饋,整個學(xué)習(xí)過程的效率會提高不少。

讓咱們開始吧!

1. 環(huán)境及所需工具

  • Windows 11 (或者Windows 10 版本 2004 及更高版本,WSL的要求);

  • Python 3及PIP3?Linux版;

  • z88dk-src-2.2.tgz;

2. 工具安裝

WSL安裝

WSL介紹:

開發(fā)人員可以在 Windows 計算機上同時訪問 Windows 和 Linux 的強大功能。 通過適用于 Linux 的 Windows 子系統(tǒng) (WSL),開發(fā)人員可以安裝 Linux 發(fā)行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 應(yīng)用程序、實用程序和 Bash 命令行工具,不用進行任何修改,也無需承擔(dān)傳統(tǒng)虛擬機或雙啟動設(shè)置的費用。

WSL微軟官方安裝教程:

https://learn.microsoft.com/zh-cn/windows/wsl/install

安裝完成輸入wsl可以進入Linux系統(tǒng),logout可以方便退出Linux回到Windows。

Linux進入和退出

Linux下Python 3和PIP3安裝

在Linux下安裝軟件之前先用 “sudo apt-get update” 命令把Ubuntu的apt-get更新到最新,防止后續(xù)工具安裝出現(xiàn)各種奇奇怪怪的問題。

安裝過程可以到網(wǎng)上搜索,資料比較多,我這邊也就不重復(fù)推薦了。

安裝完成之后,確保python3和pip3命令能夠正確執(zhí)行:

python3及pip3正確安裝后的效果

3. z88dk Build

接下來就到了坑最多的z88dk-z80asm的bin文件build過程。眾所周知,Linux想要安裝軟件一般都需要下載source code自己build出bin文件,咱們的z80編譯器安裝也遵循這一套路。

  • 下載z88dk source code

下載地址

https://github.com//z88dk/z88dk/releases (可直接訪問github的情況下)

https://kgithub.com//z88dk/z88dk/releases (墻內(nèi)訪問github的方法,在github前加上字母k,后面默認(rèn)用墻內(nèi)訪問的網(wǎng)址)

z88dk下載地址

可以看到,mac osx和windows平臺都是build好直接可用的bin文件,只有Linux需要自己編譯,這也是噩夢的開始,各位看官準(zhǔn)備好趟本文坑最多的步驟啦~

Step 1. 把下載好的z88dk-src-2.2放到Linux的目錄下(推薦不強制)

可以在windows操作系統(tǒng)中下載好z88dk-src-2.2放到Linux目錄下,比如我就放在home目錄的tools目錄下。

把下載好的z88dk放到指定目錄下


Step 2. 解壓生成z88dk目錄

解壓生成z88dk目錄

Step 3. 執(zhí)行make來build生成z88dk-z80asm的bin文件

在z88dk目錄下執(zhí)行make命令

執(zhí)行make命令
  • Build Error 1:Can't locate AA/BB/CC.pm

找不到CPU/Z80/Assembler.pm

由于build過程中調(diào)用大量的Perl程序,并且調(diào)用大量非perl內(nèi)置的module,所以就會出現(xiàn)找不到module的錯誤,報錯形式如上圖所示。解決方法就是用cpan安裝對應(yīng)模塊即可,安裝命令格式為:sudo cpan install AA::BB::CC。

sudo cpan install CPU::Z80::Assembler

使用cpan命令可能出現(xiàn)找不到cpan命令的情況,按照提示安裝即可。

這是build過程中最大的坑,在網(wǎng)上找了好久才明白這個報錯的含義,找到解決方案又是一波三折,所幸能夠解決。

  • Build Error 2:dos2unix not found

這個錯誤表明dos2unix命令找不到,由于這個比較常用的一個工具,把windows下的文件格式轉(zhuǎn)換到linux能處理的格式,直接使用命令:sudo apt-get install dos2unix 即可安裝。

dos2unix not found
  • Build Error 3:re2c: No such file or directory

雖然不知道re2c是個什么東西,但是執(zhí)行re2c命令時,找不到的時候系統(tǒng)會提示如何安裝,解決起來也沒有啥難度。

re2c安裝
  • Build Error 4:fatal error: libxml/parser.h: No such file or directory

又是一個不知道什么意思的報錯,把報錯信息原文放到網(wǎng)上去搜索,找了半天,應(yīng)該是需要安裝libxml2-dev工具,用sudo apt-get install libxml2-dev命令安裝即可。

安裝libxml2-dev解決沒有找到parser.h問題

安裝成功后,能夠在/usr目錄下找到parser.h

libxml/parser.h成功安裝目錄

至此,應(yīng)該所有build問題都被排除,z88dk-z80asm的bin文件成功被build出來~家人們,這種痛苦誰懂啊~

z88dk-z80asm編譯成功

Step 4. source set_eviroment.sh

最后source一下set_enviroment.sh,把z88dk/bin添加到環(huán)境變量$PATH中

bin目錄添加到PATH變量

可能看官自己動手build比我順利,也更可能比我遇到的問題還多,如果遇到很多莫名其妙的問題,歡迎在評論區(qū)留言,有解決方案最佳。

4. Image Build

終于所有工具都安裝齊全了,開始進入正題build OS的bin文件了~

Step 1. git clone Zeal8bit OS Source Code

執(zhí)行: git clone https://kgithub.com/Zeal8bit/Zeal-8-bit-OS.git 把OS source code clone到local。

Get Source Code

如果git工具沒有安裝,提供會提示如何安裝,這個簡單,就不再重復(fù)敘述了。

Step 2. Get python kconfiglib

執(zhí)行:sudo pip3 install kconfiglib安裝,確保menuconfig bin文件能夠在正確的位置找到。

如下圖所示,我所安裝的menuconfig bin在/usr/local/bin/目錄下和home目錄下的.local/bin下都能找到。

menuconfig安裝路徑

然后執(zhí)行python3 -m site --user-base查看pip3下載的lib的user base安裝目錄:

pip3下載安裝lib的user base目錄

按照Zeal8bit大佬的Makefile,啟動配置menuconfig是默認(rèn)用user base目錄的menuconfig的。

Makefile中的menuconfig

如果你的user base目錄不存在或者沒有安裝menuconfig,那么建議修改這一行,比如使用/user/local/bin/menuconfig.

修改menuconfig的路徑

Step 3. Excute 'make menuconfig'?to generate os.conf file.

這一步按照視頻中所說的,執(zhí)行make menuconfig,按照默認(rèn)參數(shù)配置,按 ‘s’ 保存,把保存文件名修改成“os.conf”,按Enter保存文件,然后Esc退出即可。

配置完menuconfig之后,生成include/osconfig.asm

確保incldue目錄下能生成osconfig.asm.

Step 4. Excute 'make' 生成最終OS的bin文件

執(zhí)行make,順利的話會和視頻中展示的一樣,最終打印出OS的bin信息

生成的os.bin信息

不過大概率你不會這么順利,哈哈,會遇到這個錯誤:

找不到build/build/init_TEXT.bin文件

被坑久了,也免疫了,接著找原因,發(fā)現(xiàn)是z88dk-z80asm編譯器在target輸出目錄build下還需要再創(chuàng)建一個build目錄,然后target file init_TEXT.bin才會放到build/build/目錄下。

老規(guī)矩,還是動手修改Makefile,將target/zeal8bit/romdisk/Makefile的第25行和第29行修改成如下的內(nèi)容:

修改Makefile

保存,重新執(zhí)行make,WOW,成功咯~

成功生成os.bin

5. Run OS in Web Emulator

Web Emulator:

https://zeal8bit.github.io/Zeal-WebEmulator/

果斷打開Web Emulator來嘗試一把,emm...發(fā)現(xiàn)界面和視頻中描述的有點差別,不過沒關(guān)系,稍微試一下就知道了。

Step 1. Select ‘System binary file’

選擇OS的bin文件

Step 2. Click ‘Read file(s)'

點擊“Read file(s)”直到OS binary左側(cè)的綠色勾勾打上

Step 3. Click 'Continue' Button

點擊“Continue”按鈕運行OS

你以為就成了?不,還要再和你開最后一次玩笑:

找不到init.bin

按照視頻中Zeal8bit大佬的選擇os.bin文件,結(jié)果發(fā)現(xiàn)沒有找到init.bin文件,意味著shell交互界面出不來,就沒法愉快的玩耍了么?

其實kernel已經(jīng)成功運行了,driver也加載進來了,不就少個shell交互界面嘛,可以啦~

哈哈,開個玩笑,沒有交互界面還怎么能快樂呢?畢竟我封面的圖已經(jīng)出賣我啦。

其實再build目錄下看下,還有個os_with_romdisk.img文件,我們加載一下它看看會不會有奇跡發(fā)生?

先刷新下Web Emulator界面,把Step 1中加載‘os.bin’換成加載‘os_with_romdisk.img’,執(zhí)行后面的steps,然后奇跡就這樣降臨了~,愉快地ls和less了~

Init.bin加載成功

6. 總結(jié)

視頻中Zeal8bit大佬操作起來輕輕松松,那是人家環(huán)境和工具都是配置好的,再加上作為開發(fā)者,可以自然地避開各種坑。

但是我們自己實操一下才發(fā)現(xiàn),其中的困難有多大。

話說咱們?yōu)樯斗且H自實操一下呢?好問題,我一直覺得,能夠自己動手操作一下,哪怕是重復(fù)地操作一下,所獲得的體驗和感悟比僅僅看過一遍要深刻得多,這樣學(xué)習(xí)效率會更高,而且更不容易感到枯燥。

也許這就是“紙上得來終覺淺,絕知此事要躬行”的生動的例子~

下一期,開個坑,把整個flow再Mac OSx上Run起來~


Zeal8bit操作系統(tǒng)Build & Run In Emulator (基于Ubuntu)的評論 (共 條)

分享到微博請遵守國家法律
甘德县| 比如县| 合江县| 合肥市| 巍山| 东平县| 孟津县| 新绛县| 蕲春县| 洮南市| 江西省| 安徽省| 芷江| 巴楚县| 平谷区| 广宗县| 南木林县| 乡宁县| 湟源县| 商洛市| 北票市| 广汉市| 旬邑县| 视频| 民乐县| 元氏县| 万安县| 上高县| 仙居县| 北宁市| 深圳市| 梓潼县| 临澧县| 安化县| 金溪县| 竹溪县| 南京市| 天气| 巴林左旗| 舟山市| 高碑店市|