12.25 真工程師:20塊錢做了張「名片」,可以跑Linux和Python

機器之心報道

參與:思源、杜偉、澤南

對於一個工程師來說,如何在一張名片上宣告自己的實力?在上面製造一臺完整的計算機說不定是個好主意。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

最近,美國一名嵌入式系統工程師 George Hilliard 的名片引發了眾人的關注。他以自己的名片為「主板」,在小小的空間裡打印了計算機系統所需的所有元器件,使其可以成為了一臺可以運行 Linux 的電腦。上面還有一個簡化版的 Python 解釋器。

這一頗具極客風的創意引來了社交網絡上人們的廣泛推崇,他的文章在 HackerNews 上出現還不到一天,點贊量就超過了 2000。

製作這樣一張名片,除了需要有足夠的理論知識以外,所需的零件可以在淘寶上買到(是的,這位美國小哥就是這麼做的),一張名片的成本大約 20 元人民幣

讓我們看看他是如何做到的。

作為一名嵌入式系統工程師,George Hilliard 一直在追尋完美的設計,其中之一就是最簡潔的 Linux 系統計算機。他一直在海量處理器型號中尋找最優解,最終發現了新的大陸。他對自己說:「這些處理器便宜得就像白送。」很快產生了用它們來製作可以運行 Linux 的名片的想法。

此前,不少極客先驅曾經在名片上發揮了自己的創意,其中包括 U 盤名片、帶閃光燈的名片,甚至帶無線電首發功能的名片。不過還從來沒有可以運行 Linux 系統的名片。

所以 George 自己動手做了一個:

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

成品看起來是這個樣子的,它是一臺完整的 ARM 架構計算機,運行由 Buildroot 構建的定製 Linux 固件。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python


所以如何讓它跑起來呢?名片的左下角是一個 USB 接口,如果你把它插入一臺計算機,它將在 6 秒鐘啟動,顯示為 USB 閃存,以及虛擬串行端口,你可以使用卡片的 shell 登陸。閃存驅動器裡有一個 README 文件、個人簡歷的副本以及一些照片。而 shell 上有很多遊戲,比如 Unix 上經典的 fortune and rogue、2048 以及一個小型的 MicroPython 解釋器。

所有這些都是在一個容量僅有 8MB 的閃存卡上實現的。Bootloader 的大小為 256KB,內核為 1.6MB,整個根文件系統用掉了 2.4MB。所以裝一個系統綽綽有餘。它還包含了一個可寫入的主目錄,以備有人想在上面存入什麼東西。

最後,一張名片的成本被控制在人民幣 20 元左右,對於一臺電腦來說,這顯得足夠便宜。

名片設計是件「技術活」

George Hilliard 自己設計並製作了整張名片,這雖然是作者的本職工作,但要找到足夠便宜的元件還是非常麻煩的。

處理器的選擇是最重要的部分,它會控制成本並確定整個項目是可行的。在一系列調研後,George 選擇了 F1C100s,它是 Allwinner 出品的一塊賊便宜的芯片,它在成本優化上下足了功夫。這塊芯片集成了 RAM 與 CPU,在功能上至少已經滿足要求了。

沒想到的是,George 小哥哥竟然是在淘寶上買的 F1C100s,其它元器件都是在 LCSC 上買的。

George 使用 JLC 製作了 PCB 板子,大概只需要

56 塊錢就能做 10 份。George 表示他對 JCL 製作的板材印象深刻,它們雖然不像 OSHPark 製作的那麼好,但是質量也還不錯,重點是價格實惠。第一次做出來的電路板是啞光的黑色,它帶有一點指紋的磁感。
在第一次製作電路板時還遇到了一點麻煩:首先,USB 端口不夠長,因此很難與更多的 USB 接口連接;其次,flash footprint 是錯誤的,George 通過手動把針腳壓到元件後面。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

在我們驗證了各個部分後,再製作一次板材就能得到文章上面的實力。因為線路板尺寸很小,George 決定立即使用一個便宜的

迴流焊迴流所有的部件。因為他能使用激光切割機,所以可以用激光切割壓模機壓制的焊錫模板。模板的效果非常好,芯片的 0.2 毫米針腳需要特別注意才能保持光潔:激光功率與焦距是非常重要的。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

其它空白的 PCB 板是非常好的夾具,用來固定板材以處理針腳,固定可以通過透明膠完成。George 使用焊錫手動焊接元器件

,他確保板材和元器件的處理都是無鉛、無害的,因此用來作為名片也是沒什麼問題的。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

上面這張圖展示的處理結果有點偏離,但焊錫其實還是挺容易使用的,而且組裝起來也非常容易。每一個元器件大概需要 10 秒鐘裝配,所以作者儘量減少元器件的數量。

這樣的名片多少錢?

前面 George 已經儘可能降低成本了,他認為現在已經足夠便宜,即使將名片發給別人也不會心疼。當然,也只有重要的結識對象才會收到這樣的名片,畢竟所有元件都要你一個個裝配。下面所有的成本都沒有考慮裝配時間,動手能力強的讀者們可以考慮自己做一個。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python


當然,作者也表明還有很多成本並不能量化,例如運費和試錯等等。但 20 塊 RMB 已經非常低了,尤其是對於一塊能運行 Linux 系統的板子。這其實也體現了企業製作端設備的成本,元器件成本要比我們想象中的低很多。

名片的性能怎麼樣

嗯,它在 6 秒內就啟動了一個超級簡化的 Linux 系統。因為格式和成本等因素,該名片是沒有 I/O、聯網模塊,以及其它佔資源比較大的程序。不過不管怎麼樣,George 還是將一些有趣的應用拷進了固件鏡像文件。

USB

我們能通過 USB 做很多有意思的事,但作者特意令名片保持非常精簡的狀態,我們可以在電腦上做一些嘗試。Linux 可以讓我們像設備一樣使用一些小工具,作者將該芯片之前的一些開發工作也傳到了名片內,所以能有 USB 小工具框架的完整功能。George 決定模擬一個預生成的閃存驅動器,並通過虛擬串行端口提供 shell 服務。

Shell

在登錄為 root 用戶後,我們可以運行所有模擬串行控制檯:

  • rogue:經典的 Unix 遊戲《地牢爬蟲》;
  • 2048:控制檯版的 2048 遊戲;
  • fortune:各種名人名言,為了給其它應用節約空間,其並不包含完整的數據庫;
  • micropython:一個非常輕量的 Python 解釋器。

模擬閃存驅動

在編譯的過程中,構建工具可以生成一個很小的 FAT32 鏡像,並將其加到 UBI 分區中。正如之前描述的,Linux 小工具子系統會將其作為一個儲存設備提供給 PC。如果你希望看看閃存驅動到底發生了什麼,那麼最簡單的就是看看源代碼,它裡面有作者的一些簡歷與介紹。

閃驅源碼地址:https://github.com/thirtythreeforty/businesscard-linux/tree/master/package/businesscard-flashdrive/files

製作這種名片需要哪些資源?

在製作電路板名片的過程中,George 使用了 F1C100s 芯片,並在上面運行主流的 Linux 5.2 版本。此外,他還提供了一些有關 F1C100s 芯片的文檔,供讀者借鑑。

源代碼

George 已經在 GitHub 上開源了 Buildroot tree,讀者可以自行查看。Buildroot tree 包含生成 NOR flash 鏡像的代碼,然後通過處理器的 USB 下載模式進行安裝。此外,Buildroot tree 還包含遊戲和其他好用的軟件包,比如為 Buildroot 添加 fortune 軟件。

如果你想在項目中使用 F1C100s 芯片,則是一個很好的開始(如有問題,請隨時聯繫)。

Buildroot tree 項目地址:https://github.com/thirtythreeforty/businesscard-linux

此外,George 重定了 Icenowy 發佈的 F1C100s 開發工作,其可以運行 Linux 4.9 版本。George 的名片在接近主流的 5.2 版本上運行,其中對補丁進行了修補和調試。

  • Icenowy/linux 項目地址:https://github.com/Icenowy/linux/tree/f1c100s
  • thirtythreeforty/linux 項目地址:https://github.com/thirtythreeforty/linux/tree/f1c100s-v5.2.4

對於 F1C100s 芯片,George 相信自己擁有目前最好的 U-Boot 配置編譯端口,這些再次基於 Icenowy 的部分工作。

U-Boo 項目地址:https://github.com/thirtythreeforty/u-boot/tree/f1c100s-v2019.04

F1C100s 文檔

George 找到了以下一些關於 F1C100s 的文檔:

  • Allwinner F1C100s Datasheet (提供插腳引線和一般信息):https://www.thirtythreeforty.net/media/F1C100s_Datasheet_V1.0.pdf;
  • Allwinner F1C600 Reference Manual(提供 F1C600 的寄存器定義,它是 F1C100s 重貼商標後的改進版,支持 Linux):https://www.thirtythreeforty.net/media/Allwinner_F1C600_User_Manual_V1.0.pdf;
  • schematic for Sipeed's Lichee Nano(這是 George 使其軟件順利運行所使用的開發板):http://dl.sipeed.com/LICHEE/Nano/。

最後,如下圖所示,George 上傳了製作電路板名片的原理圖。

真工程師:20塊錢做了張「名片」,可以跑Linux和Python

電路板名片原理圖。

有網友評論道:「對我來說令人難以置信的是,這樣一塊成本 1.42 美元(約合人民幣 10 元)的芯片幾乎包含了帶動 Linux 的所有必要硬件:500MHz 的 CPU、32MB SDRAM、2D GPU、SD/MMC 支持以及 USB 控制器。他們都封裝在一塊 10mm×10mm 的微小芯片裡。這讓我不由得想入坑嵌入式開發。」

項目感悟

George 表示自己從這個名片項目中學到了很多,這是他首次使用迴流焊來回流元器件的項目。此外,對於一些缺少文檔的元器件,George 還必須學習找到必需的資源。

在項目開展過程中,George 借鑑了其有關嵌入式 Linux 和設計 PCB 的經驗。項目並非完全沒有瑕疵,但體現了他的能力。此外,George 表示他正致力於如何從零開始為電路板名片等小型、廉價的 Linux 系統構建硬件和軟件。


分享到:


相關文章: