亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

來(lái)源:量子位

CEO 親自寫的代碼是啥樣?

來(lái)自 RealVNC 公司的 CEO 說(shuō),自己長(zhǎng)年當(dāng)管理者,代碼生疏了,所以決定重拾一下程序員工作,寫一點(diǎn)樹莓派的代碼。

結(jié)果,一不小心就上了技術(shù)論壇 Hacker News 熱門。

這串代碼究竟是什么?打開這位 CEO 的 Twitter 一看,是一段小游戲。

花了一年時(shí)間就寫了個(gè)這?當(dāng)然不是,這位 CEO 可是從零開始打造的這款游戲,連系統(tǒng)啟動(dòng)文件都是自己寫的。

通常我們使用樹莓派都會(huì)在 SD 卡上刷寫好操作系統(tǒng),其實(shí)樹莓派還能從零開始打造成一款 " 裸金屬 "(Bare Metal)計(jì)算機(jī)。

所謂 " 裸金屬 " 就是沒有操作系統(tǒng)的計(jì)算機(jī),直接在邏輯硬件上執(zhí)行指令。這位 CEO 說(shuō),打造一個(gè)裸金屬系統(tǒng)是他兒時(shí)的志向。

所以就有了這串,從零開始到成功運(yùn)行 Hello World,再到運(yùn)行小游戲的程序。

從啟動(dòng)硬件到 Hello World

目前,該項(xiàng)目已經(jīng)完成了 12 章,仍在 GitHub 上繼續(xù)更新中,截至今天已經(jīng)收獲了 1.6k 星。

項(xiàng)目?jī)?nèi)容有:?jiǎn)?dòng)、構(gòu)建基本代碼、運(yùn)行 HelloWorld、調(diào)用藍(lán)牙聲音硬件等。

在編寫代碼之前先要準(zhǔn)備樹莓派 4 的周邊硬件:HDMI 線、micro-SD 卡以及USB 轉(zhuǎn) TTL 線

由于編譯過(guò)程是在電腦上進(jìn)行,而程序是在樹莓派上運(yùn)行,因此還要在電腦上安裝交叉編譯器

接下來(lái)開始引導(dǎo)樹莓派啟動(dòng):

樹莓派 4 運(yùn)行的第一個(gè)代碼需要用匯編語(yǔ)言編寫,之后由 C 語(yǔ)言來(lái)編寫內(nèi)核。

寫好啟動(dòng)代碼后,再制作 makefile 文件進(jìn)行交叉編譯。

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 [email protected]: 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

運(yùn)行 make 后構(gòu)建內(nèi)核映像 kernel8.img,將鏡像文件復(fù)制到 SD 卡中,這樣就可以啟動(dòng)樹莓派了。

不過(guò)樹莓派在這一通操作后只能運(yùn)行啟動(dòng)畫面,之后只剩下一個(gè)空的黑屏。

然后就是讓樹莓派程序員熟悉的 "Hello World" 程序,但是在一臺(tái)黑屏的機(jī)器上如何運(yùn)行呢?這就需要用到 UART 串行通信。

剛剛準(zhǔn)備的 USB 轉(zhuǎn) TTL 線這時(shí)候就派上了用場(chǎng)。

將 TTL 的 RX 引線(白色)鏈接到 GPIO 的 TXD 引腳上,TX 引線(綠色)鏈接到 GPIO 的 RXD 引腳上,地線(黑線)連接到 Ground 引腳上。

電腦上還要安裝 PuTTY,將鏈接方式選擇為 "Serial",Speed 設(shè)置為 115200

#include "io.h"voidmain ( ) {uart_init ( ) ;uart_writeText ( "Hello world!n" ) ;while ( 1 ) ;}

這里的頭文件 io.h 也不存在,需要自己定義。

但是此時(shí)的樹莓派還有沒字體文件,也就是屏幕無(wú)法正常顯示英文字母,也需要自定義。經(jīng)過(guò)一系列操作后,這位 CEO 終于在屏幕上成功顯示了 "Hello world!" 和幾個(gè)幾何圖形。

編程并沒有到此截止,這位 CEO 后面又實(shí)現(xiàn)了對(duì)藍(lán)牙互傳信息、播放音頻文件等操作。他還表示,項(xiàng)目還在持續(xù)更新中。

關(guān)于作者

" 裸金屬 " 樹莓派的作者 Adam Greenwood-Byrne 畢業(yè)于牛津大學(xué),2009 年加入 RealVNC 擔(dān)任銷售經(jīng)理,2018 年成為這家公司 CEO。

他的 GitHub 主頁(yè)上目前只有一個(gè)項(xiàng)目,第一章內(nèi)容是他在疫情隔離期間完成的,之后項(xiàng)目就處于休眠狀態(tài)。

不過(guò)從今年的活躍度來(lái)看,他從今年開始又重拾了該項(xiàng)目,開始認(rèn)真寫代碼了。

分享到:
標(biāo)簽:三星 代碼 運(yùn)行 啟動(dòng) 這位 芯片 華為 金屬
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定