網頁最後修改時間:2021/03/10
2014 年 12 月 31 日萬聖節當日,Alan Cox 透過 Google+ 宣布了 Fuzix OS,一個主要為 Zilog Z80 處理器架構而設計的作業系統(小型 V 核心系統)。
最近,David Given 成功的將 Fuzix OS 移植到了 ESP8266 和板載 RP2040 的 Raspberry Pi Pico(下面簡稱 RPi-Pico)上,您可以在這些板子上面執行 Unix 指令和程式。
參考頁面:
而本篇,將主要針對 RPi-Pico 安裝 Fuzix 的部分來做說明:
*********************************************************************************
若須購買 Pico,可參考:Raspberry Pi Pico RP2040 開發板分類賣場
-
{5V}整合型{4/8BIT,IIC,4SPI}1602英文字型藍底白字LCD螢幕(附排針與可變電阻)-可用於微控制器
- {3V3} 整合型{4/8BIT,IIC,4SPI}1602英文字型藍底白字LCD螢幕(附排針)-適用於樹莓派,微控制器
- 驅動 128x64 繁體中文 LCD 點、線和面 #MicroPython #ST7920 #ESP8266
*********************************************************************************
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
寫在前頭:
Fuzix OS 移植到 Pico 開發板在 2021/03/03 有了重大的進展!除了原先的 Boot-from-SD card 版本,新增了 Boot-from-NAND filesystem 版本。新的版本不再需要記憶卡放置檔案系統,而是將整個整個 Fuzix OS 直接放置在 Pico 的 Flash 中執行,但同時也支援外接記憶卡作為外接磁碟使用。
下文將以 2021/03/05 之後發佈的 Fuzix OS for RPi-Pico 版本, 說明編譯以及安裝的步驟。
/*-/--*-*/*/*/*/***//-*-*-**-*/*-*-/*/*/*-*-/-////--/**/**--**/--///--//**----**//--**//**----***//*-**//*
** Fuzix OS for RPi-Pico 還在開發階段,因此執行時或許會有一些怪怪的地方或是掛機,所以若是選擇跟著本文來做安裝使用,請斟酌後確定自己搞定這些問題再來做!
【(01)參考接線】
Fuzix OS for RPi-Pico 起初版本(又可稱為 Boot-from SD card filesystem 版本)是分為兩個檔案來做安裝:fuzix.uf2 和 filesystem.img。前者,安裝在 RPi-Pico;後者,要先分割記憶卡的磁區,然後再把 filesystem.img 整個映像檔拷貝到指定的分割磁區中(這個動作要在 Linux 作業系統下完成?)。由於這個版本安裝的關係,參考接線就如下圖所示。
Fuzix OS for Pico 參考接線圖 |
由於上述的安裝過程對於 Windows 作業系統下的用戶很不友善,因此在初版發佈不久後的一段時間,該移植版本的作者又發佈了 Boot-from-NAND 版本(根據論壇發佈紀錄的時間為 2021/03/05)。這個版本同樣可沿用了上面的參考接線圖,但不同的是:
- 記憶卡變成是外接磁碟,可由作業系統掛載使用,但只支援 32MB 的磁碟大小(DOS Partition)而且不支援熱插拔(It's not hot swappable as the SD card is only probed at boot time);
- 支援 console 由 UART0(@ 115200 bps)和 RPi-Pico 連接 USB 到 PC 同時輸出,但有一點要注意:不要同時在兩個地方同時輸入,會出現奇怪的事!
- 作業系統的安裝跟燒錄的動作一樣,只要切換兩次 RPi-Pico 到 USB Mass Storgae 模式安裝兩個檔案(fuzix.uf2 和 filesystem.uf2)即可。
所以說,Boot-from-NAND 版本的接線圖,就是完全不需要接線,只需要一條 Micro-USB 線就可以!
由於 RPi-Pico 開發板上面並沒有系統重置按鈕,所以如果每次重置都需要插拔 Micro-USB 線,就會很不方便!因此強烈建議您,一定要在麵包板上加入一個重置按鈕(如網頁開頭照片所示),它會讓您在測試的過程中,保持心情的愉悅!
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
*
(01-01)材料清單:
基本上,使用 Fuzix OS for RPi-Pico Boot-from-NAND 版本的最簡接線,所需要的材料都可在 Raspberry Pi Pico MicroPython 入門學習套件 找到:
- 【Raspberry Pi Pico 開發板】
- 【透明全尺寸麵包板】
- 【麵包板專用單芯插線】
- 【觸動開關(Tact Switch)按鈕】
如果是使用 Fuzix OS for RPi-Pico Boot-from SD card filesystem 版本(或是做為上述版本的擴充),那麼額外需要的材料有:
- 【USB 轉 TTL(UART)線或模組】
-
【記憶卡讀寫模組】
文中使用的是 DC 5V 電壓輸入、其他通訊接腳可適用於 DC 3V3 和 5V 電壓準位的記憶卡讀寫模組。 - 【記憶卡】
不管使用的記憶卡多大,用於 Fuzix OS 的: - Boot-from-SD card filesystem 版本:2MB(swap space)+ 32MB(filesystem)
- Boot-from-NAND 版本:32MB
- 【麵包板連接測試跳線(公對公)】
【(02)編譯給 RPi-Pico 用的 FUZIX 作業系統】
只要是編譯給 RPi-Pico 要用的程式,那麼就要預先安裝好它所需要的開發工具(這部分可以參考官網裡的文件 Getting started with Raspberry Pi Pico 或是部落格網頁 Raspberry Pi Pico-C/C++ 開發環境建置(命令列和 Visual Studio Code) 裡的說明)。
RPi-Pico 的編譯環境可以建置在 Linux 類的作業系統或是 Windows 作業系統下,本文則是選擇 在 Ubuntu (20.04.1) 作業系統下,完成 RPi-Pico for Fuzix OS 的編譯。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
*
(02-01)Boot from SD card filesystem:
Boot-from SD card filesytem 版本的編譯,是最早的一個版本,編譯的過程和說明可以參考 How to get started with FUZIX on Raspberry Pi Pico;網頁裡除了編譯過程的說明之外,對於製作給 Fuzix OS 用的記憶卡的磁區分割也說得很清楚,可做為參考和值得一看的網站。
/*--*//**---/*///**---*-*////***--*/*///***----*///--*/*///**--*/*//**--**/*//
*
(02-02)Boot from NAND:
Boot-from-NAND 版本的編譯步驟與前一版本並無太大不同,差別在於最後編譯燒錄檔案的部分。Boot-from-SD card filesystem 版本的編譯,最終會產生 fuzix.uf2 和 filesystem.img 兩個檔案;而 Boot-from-NAND 版本的編譯,最終是產生 fuzix.uf2 和 filesystem.uf2 兩個檔案。
*.uf2,就是能直接用拖拉的方式進行燒錄的檔案,下面就來看看怎麼編譯 Fuzix OS for RPi-Pico Boot-from-NAND 版本。
首先,打開一個終端機介面,再切換目錄到使用者的 ~/Downloads 資料夾。
- 進入資料夾後,輸入 git clone https://github.com/davidgiven/FUZIX.git 下載 Fuzix OS 的原始碼;
- 下載完成後,切換目錄到 FUZIX 資料夾;
- 接著,將下載的 FUZIX 的分支切換到 rpipico,這樣才能用到 Fuzix OS for RPi-Pico 的原始碼;
- 切換目錄到 Kernal/platform_rpipico;
- 由於編譯時會用到 Makefile 文件,而且需要修改並指定 RPi-Pico SDK 的路徑,為了避免檔案被修改亂了沒原始檔可恢復,所以先將原始檔案做備份;
- 打開 Makefile 進行修改;
修改 Makefile 文件開頭處的 export PICO_SDK_PATH =(後面反白的區域就是實際的路徑)。
修改完成後,Ctrl+O 儲存檔案;Ctrl+X 離開。
編譯之前,先列出資料夾中的檔案,等一下編譯之後就可以看到,到底產生了哪幾個檔案?
輸入 make image -j 開始編譯;-j 選項不帶參數,make 將不會限制可以同時執行的作業(jobs)數量。
注意指令執行一開始,會先輸出 pico-sdk 的路徑(如下畫線處)。大部分編譯出現錯誤,都是這部分設定錯誤。所以若是出現編譯錯誤,請先檢查這個地方,是否沒有在 Makefile 裡正確的設定好?
編譯需要一些時間,但也不會太久,耐心等等 ...
編譯完成後,會在兩個地方建立檔案:
-
~/Downloads/FUZIX/Kernal/platform_rpipico/build/
此目錄會建立 fuzix.uf2。 -
~/Downloads/FUZIX/Kernal/platform_rpipico/
此目錄主要是建立 filesystem.uf2。
下面是編譯前後,資料夾檔案文件的變化。
到此,就完成 Fuzix OS for RPi-Pico Boot-from-NAND 版本的編譯,所建立的兩個 uf2 檔案,將在下一節說明如何同時燒錄進 RPi-Pico。
【(03)在 RPi-Pico 安裝 Fuzix OS 】
要 "同時" 將 fuzix.uf2 和 filesystem.uf2 這兩個檔案燒錄進 RPi-Pico,不難也不簡單!因為 "同時" 這個詞的關係,大部分的人都會在切換 RPi-Pico 進入到 USB Mass Storage 模式後,就會直接把兩個檔案拖拉到 RPI-RP2 磁碟中,所以就會開始鬼打牆,一直重複、一直重複 ... 的無止盡的拖拉,然後一直弄不起來、弄不起來 ... 。如果您曾真的這樣做過,那麼其實您並不孤單,因為論壇上一堆人一開始都是這麼做,ME TOO!
先這樣想,只要有檔案被拖拉到 RPI-RP2 磁碟,一但完成其中一個檔案的複製,RPi-Pico 其實就會自動燒錄韌體並重啟。所以不管一次拖拉多少個檔案,只有首先完成複製的檔案會被燒錄而已,其餘的就是不會被成功複製過去;也就是說,沒被完全複製的就不會被自動燒錄。
「那要怎麼同時燒錄呢?」
「其實不是 "同時" 燒錄,而是兩個都要 "同時" 間都在 RPi-Pico 裡」
fuzix.uf2 啟動時會去尋找 Fuzix OS 的檔案系統(也就是 filesystem.uf2),所以我的方式是:
- 插上 USB (同時按下 <BOOTSEL>),RPi-Pico 切換到 USB Mass-Storage 模式後,拖、拉 filesystem.uf2 到 RPI-RP2 磁碟中,並等待完成燒錄和自動重啟後,拔掉 USB。
- 再次(同時按下 <BOOTSEL>),RPi-Pico 切換到 USB Mass-Storage 模式後,拖、拉 fuzix.uf2 到 RPI-RP2 磁碟中,並等待完成燒錄和自動重啟後,就完成 Fuzix OS 的安裝。
根據作業系統所取得的 COM Port 號碼,設定並打開序列埠軟體,有兩種情況:
-
直接使用 Micro-USB 線連接 RPi-Pico:
開啟序列埠軟體時並不會看到什麼訊息輸出,因為插上 USB 的同時就已經開始執行,所以請先多按幾次 ENTER,應該就可以看到輸出。 -
使用 USB 轉 TTL(UART)線或模組:
先把它插到電腦後取得 COM Port 號碼,然後再把 RPi-Pico 通電執行,直接就能看到輸出。
由於 RPi-Pico 通電啟動的速度很快,MicroUSB 的通訊方式應該不可能取得到通電之後馬上的輸出,所以只能採 USB 轉 TTL 線或模組的方式,這樣就能(在通電後)看到如下的輸出:
如果改採用 MicroUSB 線通訊的方式,連線軟體開啟後要先多按幾次 ENTER ,這時就會出現游標並停留在 Enter new data: 的地方,直接再按下 ENTER,就會跳至 login: 處,直接輸入 root(不用密碼)就能登入。
登入之後的第一件事,要先讓刪除的功能能在終端機中可用,請先輸入:stty erase '^?',接著就請跟著下面畫線的部分自己做練習,熟悉一下指令。
裡面也附加了幾個簡單的遊戲,如下圖所示。
到此就完成 Fuzix OS 在 RPi-Pico 的安裝和測試,更多詳細的說明請參考 Fuzix 分支 rpipico。
【(04)結論】
Fuzix OS for RPi-Pico 還在持續開發當中,不過對於作者將原本記憶卡儲存檔案系統的部分,變更為直接能在 RPi-Pico 開發板執行的這一步,表示高度的讚許!相信後續還會有更多功能應用被釋放出來,到時我們再來看看。
.
.
<<部落格相關文章>>
-
Raspberry Pi Pico-MicroPython, CircuitPython 開發環境建置
-
Raspberry Pi Pico-C/C++ 開發環境建置(命令列和 Visual Studio
Code)
- Raspberry Pi Pico - 使用 MicroPython 驅動整合型 LCD 顯示 Pico 內部溫度感測器值
- 如何安裝 FUXIZ OS 在 Raspberry Pi Pico?
.
.
沒有留言:
張貼留言
留言屬名為"Unknown"或"不明"的用戶,大多這樣的留言都會直接被刪除掉,不會得到任何回覆!
發問問題,請描述清楚你(妳)的問題,別人回答前不會想去 "猜" 問題是什麼?
不知道怎麼發問,請看 [公告] 部落格提問須知 - 如何問問題 !