CEO 亲自写代码登上热榜,从零开始打造“裸金属”树莓派

10 月 10 日消息CEO 亲身写的代码是啥样?来自 RealVNC 公司的 CEO 说,本人长年当经管者,代码陌生了,因此决意重拾一下程序工作人员作,写一点树莓派的代码。

后果,一不当心就上了技术论坛 Hacker News 热点。

这串代码究竟是甚么?翻开这位 CEO 的 Twitter 一看,是一段小游戏。

花了一年时间就写了个这?固然不是,这位 CEO 不过从零首先打造的这款游戏,连体系启动文件都是本人写的。

平时我们应用树莓派都邑在 SD 卡上刷写好操纵体系,其实树莓派还能从零首先打造成一款“裸金属”(Bare Metal)计算机。

所谓“裸金属”即是没有操纵体系的计算机,干脆在逻辑硬件上执行指令。这位 CEO 说,打造一个裸金属体系是他儿时的抱负。

因此就有了这串,从零首先到胜利运转 Hello World,再到运转小游戏的程序。

从启动硬件到 Hello World

当前,该项目曾经实现了 12 章,仍在 GitHub 上继续更新中,停止本日曾经收成了 1.6k 星。

项目内容有:启动、构建根基代码、运转 HelloWorld、挪用蓝牙声响硬件等。

在编写代码以前先要筹办树莓派 4 的周边硬件:HDMI 线、micro-SD 卡以及 USB 转 TTL 线。

因为编译历程是在计算机长举行,而程序是在树莓派上运转,因此还要在计算机上安置穿插编译器。

接下来首先指导树莓派启动:

树莓派 4 运转的初次个代码需求用汇编说话编写,以后由 C 说话来编写内核。

写好启动代码后,再制作 makefile 文件举行穿插编译。

CFILES=$(wildcard*.c)FILES=$(CFILES:.c=.o)GCCFLAGS=-Wall-O2-ffreestanding-nostdinc-nostdlib-nostartfilesGCCPATH=../../gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/binall:cleankernel8.imgboot.o:boot.S$(GCCPATH)/aarch64-none-elf-gcc$(GCCFLAGS)-cboot.S-oboot.o%.o:%.c$(GCCPATH)/aarch64-none-elf-gcc$(GCCFLAGS)-c$<-o$@kernel8.img:boot.o$(OFILES)$(GCCPATH)/aarch64-none-elf-ld-nostdlibboot.o$(OFILES)-Tlink.ld-okernel8.elf$(GCCPATH)/aarch64-none-elf-objcopy-Obinarykernel8.elfkernel8.imgclean:/bin/rmkernel8.elf.o.img>/dev/null2>/dev/null||true

运转 make 后构建内核映像 kernel8.img,将镜像文件复制到 SD 卡中,如许便启动树莓派了。

不过树莓派在这一通操纵后只能运转启动画面,以后只剩下一个空的黑屏。

而后即是让树莓派程序员谙习的“Hello World”程序,不过在一台黑屏的机械上怎样运转呢?这就需求用到 UART 串行通讯。

方才筹办的 USB 转 TTL 线这时候就派上了用处。

将 TTL 的 RX 引线(白色)链接到 GPIO 的 TXD 引脚上,TX 引线(绿色)链接到 GPIO 的 RXD 引脚上,地线(黑线)持续到 Ground 引脚上。

计算机上还要安置 PuTTY,将链接方法选定为“Serial”,Speed 配置为 115200

#include“io.h”voidmain(){uart_init();uart_writeText(“Helloworld!\r”);while(1);}

这里的头文件 io.h 也不存在,需求本人定义。

不过此时的树莓派另有没字体文件,也即是屏幕无法平常表现英笔墨母,也需求自定义。经过一系列操纵后,这位 CEO 终于在屏幕上胜利表现了“Hello world!”和几个几多图形。

编程并无到此停止,这位 CEO 背面又实现了蓝牙互传消息、播放音频文件等操纵。他还显露,项目还在持续更新中。

对于作者

“裸金属”树莓派的作者 Adam Greenwood-Byrne 毕业于牛津大学,2009 年加入 RealVNC 担任贩卖司理,2018 年景为这家公司 CEO。

他的 GitHub 主页上当前惟有一个项目,初次章内容是他在疫情断绝时代实现的,以后项目就处于休眠状况。

不过从今年的活跃度来看,他从今年首先又重拾了该项目,首先认真写代码了。

项目 GitHub 链接:

您可能还会对下面的文章感兴趣: