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

点击关注公众号,回复“2T”获取2TB学习资源!

互联网架构师后台回复 2T 有特别礼包

上一篇:心态崩了!税前2万4,到手1万4,年终奖扣税方式1月1日起施行~

 
 
 
 
 
 

3644f0b2d25c82c80a9de8bb46a6ee9d.png

来自量子位

CEO 亲自写的代码是啥样?

来自 RealVNC 公司的 CEO 说,自己长年当管理者,代码生疏了,所以决定重拾一下程序员工作,写一点树莓派的代码。

结果,一不小心就上了技术论坛 Hacker News 热门。

78805550bac5f5da3728600ef6bcea19.png

这串代码究竟是什么?打开这位 CEO 的 Twitter 一看,是一段小游戏。搜索公众号互联网架构师回复“2T”,送你一份惊喜礼包。

2ba488bf5bca2a216755ebba2bee20a9.gif

花了一年时间就写了个这?当然不是,这位 CEO 可是从零开始打造的这款游戏,连系统启动文件都是自己写的。

通常我们使用树莓派都会在 SD 卡上刷写好操作系统,其实树莓派还能从零开始打造成一款 “裸金属”(Bare Metal)计算机。

0476be394d6c99ca5aad47dfda75a6cf.png

所谓 “裸金属” 就是没有操作系统的计算机,直接在逻辑硬件上执行指令。这位 CEO 说,打造一个裸金属系统是他儿时的志向。

所以就有了这串,从零开始到成功运行 Hello World,再到运行小游戏的程序。搜索公众号互联网架构师回复“2T”,送你一份惊喜礼包。

从启动硬件到 Hello World

目前,该项目已经完成了 12 章,仍在 GitHub 上继续更新中,截至今天已经收获了 1.6k 星。

0edc6df39cbce6c565537cf2a92a690a.png

项目内容有:启动、构建基本代码、运行 HelloWorld、调用蓝牙声音硬件等。

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

由于编译过程是在电脑上进行,而程序是在树莓派上运行,因此还要在电脑上安装交叉编译器

接下来开始引导树莓派启动:

树莓派 4 运行的第一个代码需要用汇编语言编写,之后由 C 语言来编写内核。搜索公众号互联网架构师回复“2T”,送你一份惊喜礼包。

写好启动代码后,再制作 makefile 文件进行交叉编译。

CFILES = $(wildcard *.c)OFILES = $(CFILES:.c=.o)GCCFLAGS = -Wall -O2 -ffreestanding -nostdinc -nostdlib -nostartfilesGCCPATH = ../../gcc-arm-10.3-2021.07-x86_64-aarch64-none-elf/binall: clean kernel8.imgboot.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.imgclean:/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 引脚上。

932f27976e7c28bb4bb7b23db4952a9a.png

电脑上还要安装 PuTTY,将链接方式选择为 “Serial”,Speed 设置为 115200,搜索公众号互联网架构师回复“2T”,送你一份惊喜礼包。

3b1d02fae83195f5d5ef075119c1d271.png

#include “io.h”void main(){uart_init();uart_writeText(“Hello world!\n”);while (1);}

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

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

41e30bbc636cdcdf2489a3c128c729f5.png

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

关于作者

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

9abd7d2b08eb44ba08241fa328a01bf1.png

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

3a4e689b3219fcf464c50ee503328b8c.png

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

参考链接:
[1]https://github.com/isometimes/rpi4-osdev
[2]https://www.rpi4os.com
[3]https://twitter.com/isometim_es/status/1446359865274871818
[4]https://news.ycombinator.com/item?id=2877402

感谢您的阅读,也欢迎您发表关于这篇文章的任何建议,关注我,技术不迷茫!小编到你上高速。

    · END ·

最后,关注公众号互联网架构师,在后台回复:2T,可以获取我整理的 Java 系列面试题和答案,非常齐全。

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.深圳一普通中学老师工资单曝光,秒杀程序员,网友:敢问是哪个学校毕业的?

3.从零开始搭建创业公司后台技术栈

4.程序员一般可以从什么平台接私活?

5.清华大学:2021 元宇宙研究报告!

6.为什么国内 996 干不过国外的 955呢?

7.这封“领导痛批95后下属”的邮件,句句扎心!

8.15张图看懂瞎忙和高效的区别!

a918c0379ee88ed263dcdf923671cd9e.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值