奧推網

選單
科技

只要 8 美元,就能在 RISC-V 計算機上執行 Linux?

摘要:想擁有一臺能執行 Linux 的 RISC-V 計算機,需要多少錢?本文作者 Bram Stolk 給出的答案是:8 美元。

連結:http://thelittleengineerthatcould。blogspot。com/2022/12/the-8-linux-computer。html

宣告:本文為 CSDN 翻譯,未經允許禁止轉載。

作者 | Bram Stolk譯者 | 彎月

出品 | CSDN(ID:CSDNnews)

你沒看錯,只要 8 美元,你就可以在 RISC-V 計算機上執行 Linux。我說的可不是有 MMU 的精簡核心,而是帶有功能強大的 RISC-V 核心的 Ox64,而且還不只一個核心,總共有三個核心,每個核心都不一樣!

注意,在撰寫本文之際,它還不支援乙太網、Wi-Fi 和 SD 卡。在正式開始閱讀本文之前,先清楚這一點。

這個小晶片看上去很像微控制器,但行為卻像 UNIX 機器。我們的目標就是啟動並執行它,這絕非易事,有許多困難需要克服。

難題 1:你不能像 Arduino、ESP32、Stamp-C3 或 rPi Pico 一樣,透過 USB 對其進行刷機。這個晶片需要透過 UART TX/RX 引腳進行刷機。透過上圖,你可以看到它們連線到了 GPIO14 / GPIO15 和 GND。

難題 2:在 Ubuntu 的 Wayland 版本上執行刷機工具 Dev Cube 會在啟動時崩潰,因此你必須改用 Xorg。

$ 。/BLDevCube-ubuntu

Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome。 Use QT_QPA_PLATFORM=wayland to run on Wayland anyway。

/usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings。so: undefined symbol: g_log_structured_standard

Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libdconfsettings。so

GLib-GIO-Message: Using the ‘memory’ GSettings backend。 Your settings will not be saved or shared with other applications。

(BLDevCube-ubuntu:54646): GLib-GIO-ERROR **: Settings schema ‘org。gnome。settings-daemon。plugins。xsettings’ does not contain a key named ‘antialiasing’

Trace/breakpoint trap (core dumped)

接下來,開始 UART 程式設計。但我們需要使用一個 CH340G 介面卡。我從亞馬遜買了一個,但不好用,Dev Cube 的握手會失敗(難題 3)。

幸運的是,有些人發現可以使用 RP2040 裝置對其進行刷機,例如 rPi Pico。我手頭正好有一個 Adafruit 的 KB2040,所以就用了它。

難題 4:如何將 KB2040 變成 PC 和 Ox64 之間的序列橋?只需要將 RP2040 的 GPIO-4 連線到 Ox64 的 GPIO-15,將 RP2040 的 GPIO-5 連線到 Ox64 的 GPIO-14。當然,還要連線地線。具體的接線方法請參見下圖。

接下來,我們需要在 RP2040 上刷入 picoprobe ,只需按住 BOOT 再接通電源,然後將 picoprobe 的 uf2 檔案複製進去。

好了,下面我們可以刷機了嗎?不行,難題 5:DevCube 仍然無法刷寫 Ox64,但我們可以使用 bflb-mcu-tool 代替。

有了 bflb-mcu-tool,我們就準備好了嗎?還不行,難題 6:我們需要修改這款工具,才能正常使用。也就是說,我們需要編輯~/。local/lib/python3。10/site-packages/bflb_mcu_tool/libs/bflb_interface_uart。py file。這是我修改好的檔案(https://gist。github。com/stolk/46228d2b7ab0ca5b0ff98a4ce3b2c6fe)。

透過 MicroUSB 為 Ox64 供電,然後使用 USB-C 將 RP2040 連線到 PC,我們終於可以開始刷機了。為此,我從 bl808 linux 指南(https://github。com/bouffalolab/bl808_linux)下載了 low_load_bl808_m0。bin,並透過以下命令刷機:

$ bflb-mcu-tool ——chipname=bl808 ——port=/dev/ttyACM2 ——baudrate=2000000 ——firmware=out/low_load_bl808_m0。bin

命令執行完成後,我透過 Ox64(透過 KB2040 連線到 PC)獲得了輸出:

dynamic memory init success,heap size = 156 Kbyte

E907 start。。。

mtimer clk:1000000

psram clk init ok!

這個開端還不錯,現在 Ox64 已經可以與我的 PC 機對話了。

後來,我發現可以利用修改過的 picoprobe (下載地址:https://github。com/sanjay900/picoprobe/releases)和 Dev Cube 快閃記憶體工具來刷機,這樣就不必使用修改過的 bflb-mcu-tool 了。

此外,還有一個 PIN 定義的補丁,可以方便我們透過引腳 GPIO17/GPIO16 捕獲 D1 核心(這是一個 T-HEAD C906)的 UART。

有了修改後的引腳定義,我們就可以透過 USB 將 UART 介面卡(如 CH340G)連線到第二個 UART,如下所示。

在上圖中,紅色介面卡可捕獲執行在 T-HEAD C906 核心上 Linux 控制檯的輸出。粉色介面卡可 對 Ox64 進行程式設計。二者都需要連線到 PC。Ox64 本身不需要連線到 PC,只需透過 Micro-USB 供電即可。

所以,我們將所有這些連線起來,並寫入二進位制檔案後,系統就可以啟動了!

啟動速度非常快,只用了不到 0。22 秒!

評論

評論 1:前幾天看到 HakcerNews 上的一篇文章,採用了同樣基於 Bouffalo Lab 的 BL808 RISC-V SoC 模組的 Sipped M1,其價格也相近。但它支援WiFi/BL、802。156。4 Zigbee,還支援UART、I2C、SPI等介面:https://news。ycombinator。com/item?id=33874032。

評論 2:如果能在淘汰的 Android 裝置上執行Linux,那隻需要 8 美元就能獲得一臺支援 USB、觸控式螢幕、聲音還有數 MB 甚至數 GB 記憶體的 Linux 機器了。

評論 3:尺寸與很久以前的 Onion SBC 相似,但價格更高,功能更差。Onion 只需要 5 美元,而且帶有串列埠、SD 卡槽和 WiFi。它甚至還有藍芽,不過我不太確定,畢竟是七年前的東西了。