f9b1fc7ad66d042138decfab1e2a91c5.gif

摘要:想拥有一台能运行 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 卡。在正式开始阅读本文之前,先清楚这一点。

bb233bead7c0f588f839f22aeea5540a.png

这个小芯片看上去很像微控制器,但行为却像 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,所以就用了它。

ec0d82ab135e5caf66f11f01a68f12d6.png

难题 4:如何将 KB2040 变成 PC 和 Ox64 之间的串行桥?只需要将 RP2040 的 GPIO-4 连接到 Ox64 的 GPIO-15,将 RP2040 的 GPIO-5 连接到 Ox64 的 GPIO-14。当然,还要连接地线。具体的接线方法请参见下图。

56033a5e3341988ab053b11b0de15d40.png

接下来,我们需要在 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,如下所示。

ff9f800656e448ff5366244d6fd8eaff.png

在上图中,红色适配器可捕获运行在 T-HEAD C906 核心上 Linux 控制台的输出。粉色适配器可 对 Ox64 进行编程。二者都需要连接到 PC。Ox64 本身不需要连接到 PC,只需通过 Micro-USB 供电即可。

所以,我们将所有这些连接起来,并写入二进制文件后,系统就可以启动了!

启动速度非常快,只用了不到 0.22 秒!

e8e5538dbc14356cce358bf303d06d09.png

fffe005cab14062c207f4595625a5a46.png

评论

评论 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。它甚至还有蓝牙,不过我不太确定,毕竟是七年前的东西了。

f1654b160b87e602a1ae17abac7e5124.gif

☞IT文末福利|后疫情时代,视频会议竟然还越来越流行了?
☞下任推特 CEO 或是“卷王”?在马斯克手下 20 年,每天工作 16 个小时,还带着家人住办公室!
☞研究老式计算技术的乐趣

67bda4f06cc5aa80fe3dacf68607b95b.jpeg

Logo

20年前,《新程序员》创刊时,我们的心愿是全面关注程序员成长,中国将拥有新一代世界级的程序员。20年后的今天,我们有了新的使命:助力中国IT技术人成长,成就一亿技术人!

更多推荐