前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CEO亲自写代码登上热榜,从零开始打造“裸金属”树莓派

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

作者头像
量子位
发布2023-03-01 14:44:38
8870
发布2023-03-01 14:44:38
举报
文章被收录于专栏:量子位量子位
晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI

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文件进行交叉编译。

代码语言:javascript
复制
CFILES = $(wildcard *.c)
OFILES = $(CFILES:.c=.o)
GCCFLAGS = -Wall -O2 -ffreestanding -nostdinc -nostdlib -nostartfiles
GCCPATH = ../../gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/bin
all: clean kernel8.img
boot.o: boot.S
$(GCCPATH)/aarch64-none-elf-gcc $(GCCFLAGS) -c boot.S -o boot.o
%.o: %.c
$(GCCPATH)/aarch64-none-elf-gcc $(GCCFLAGS) -c $< -o $@
kernel8.img: boot.o $(OFILES)
$(GCCPATH)/aarch64-none-elf-ld -nostdlib boot.o $(OFILES) -T link.ld -o kernel8.elf
$(GCCPATH)/aarch64-none-elf-objcopy -O binary kernel8.elf kernel8.img
clean:
/bin/rm kernel8.elf .o .img > /dev/null 2> /dev/null || true

运行make后构建内核映像kernel8.img,将镜像文件复制到SD卡中,这样就可以启动树莓派了。

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

然后就是让树莓派程序员熟悉的“Hello World”程序,但是在一台黑屏的机器上如何运行呢?这就需要用到UART串行通信。

刚刚准备的USB转TTL线这时候就派上了用场。

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

电脑上还要安装PuTTY,将链接方式选择为“Serial”,Speed设置为115200

代码语言:javascript
复制
#include “io.h”
void main()
{
uart_init();
uart_writeText(“Hello world!\n”);
while (1);
}

这里的头文件io.h也不存在,需要自己定义。

但是此时的树莓派还有没字体文件,也就是屏幕无法正常显示英文字母,也需要自定义。经过一系列操作后,这位CEO终于在屏幕上成功显示了“Hello world!”和几个几何图形。

编程并没有到此截止,这位CEO后面又实现了对蓝牙互传信息、播放音频文件等操作。他还表示,项目还在持续更新中。

关于作者

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

他的GitHub主页上目前只有一个项目,第一章内容是他在疫情隔离期间完成的,之后项目就处于休眠状态。

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 量子位 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 从启动硬件到Hello World
  • 关于作者
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档