文章翻譯自
我是嵌入式系統工程師。 在空閒時間,我經常尋找一些可以用於未來系統設計的東西,或者一些來自我興趣的東西。
其中一個領域是可以運行 Linux 的廉價計算機,而且越便宜越好。 所以我挖了一個深藏不露的處理器的兔子洞。
我想,“這些處理器太便宜了,幾乎可以免費贈送。” 一段時間後,我產生了以名片的形式為 Linux 製作裸卡的想法。
一旦我想到這一點,我就決定這將是一件非常酷的事情。 我已經
所以我就給自己做了一個。
這是產品的成品版本。 一台完整的最小 ARM 計算機,運行我使用 Buildroot 建立的自訂版本的 Linux。
它的角落有一個 USB 連接埠。 如果將其連接到計算機,它會在大約 6 秒內啟動,並顯示為閃存卡和虛擬串行端口,您可以透過該虛擬串行端口登入卡殼。 隨身碟上有一個自述文件、一份我的簡歷和幾張我的照片。 該 shell 包含多種遊戲,例如 Fortune 和 Rogue 等 Unix 經典遊戲、遊戲 2048 的小型版本以及 MicroPython 解釋器。
所有這一切都是使用非常小的 8 MB 快閃記憶體晶片完成的。 引導程式大小為 256 KB,核心佔用 1,6 MB,整個根檔案系統佔用 2,4 MB。 因此,還有大量的空間留給虛擬閃存驅動器。 還有一個可寫入的主目錄,以防任何人執行他們想要保存的任何操作。 這也全部保存在快閃記憶體晶片上。
整個設備的成本不到 3 美元。 它足夠便宜,可以贈送。 如果您從我這裡收到了這樣的設備,則表示我很可能是想給您留下深刻的印象。
設計與建造
我自己設計並組裝了所有東西。 這是我的工作,我喜歡它,大部分挑戰是為這個愛好找到足夠便宜的零件。
處理器的選擇是影響專案成本和可行性的最重要決策。 經過廣泛的研究,我選擇了 F1C100s,這是一款來自 Allwinner 的相對鮮為人知的處理器,它經過了成本優化(即非常便宜)。 RAM 和 CPU 位於同一包裝中。 我在淘寶上買了處理器。 所有其他組件均購自 LCSC。
我從 JLC 訂購了主機板。 他們花了 8 美元為我印了 10 份。 他們的品質令人印象深刻,尤其是價格; 不像 OSHPark 那麼整潔,但看起來還是不錯的。
我做了第一批霧面黑色。 它們看起來很漂亮,但很容易弄髒。
第一批產品存在一些問題。 首先,USB 連接器不夠長,無法牢固地插入任何 USB 連接埠。 其次,閃存軌道製作不正確,但我透過彎曲觸點解決了這個問題。
檢查一切正常後,我訂購了一批新的板子; 您可以在文章開頭看到其中一張照片。
由於所有這些小元件的尺寸都很小,我決定採用回流焊接
其他板子可以很好地在塗抹漿料時固定板。
我塗上焊膏並用手定位組件。 我確保在此過程中的任何地方都沒有使用鉛 - 所有電路板、組件和焊膏均符合標準
我在這批產品中犯了一個小錯誤,但是焊膏可以原諒錯誤,一切都進展順利
每個組件大約需要 10 秒才能定位,因此我嘗試將組件數量保持在最低限度。 有關地圖設計的更多詳細資訊可以閱讀另一篇文章
材料清單及費用
我堅持嚴格的預算。 名片的效果正如預期的那樣——我不介意把它送人! 當然,我不會把它發給所有人,因為製作每份都需要時間,而我的時間並沒有計入名片的費用中(有點免費)。
部件
Цена
F1C100s
$1.42
PCB
$0.80
8MB快閃記憶體
$0.17
所有其他組件
$0.49
在總
$2.88
當然,還有一些難以計算的成本,例如交付成本(因為它分佈在多個專案的元件中)。 不過,對於支援Linux的主機板來說,它絕對是相當便宜的。 這種細分也很好地了解了公司在最低價格段製造設備的成本:你可以肯定,公司的成本甚至比我的成本還低!
功能
說什麼? 該卡可在 6 秒內啟動嚴重剝離的 Linux。 由於外形尺寸和成本的原因,該卡沒有 I/O、網路支援或任何用於運行繁重程式的大量儲存空間。 儘管如此,我還是成功地將一些有趣的東西塞進了韌體鏡像中。
USB
使用 USB 可以完成很多很酷的事情,但我選擇了最簡單的選項,這樣如果人們決定嘗試我的名片,他們就更有可能讓它工作。 Linux 允許卡像一個「設備」一樣運行,並提供支持
殼
以root身分登入後,您可以在序列控制台上執行以下程式:
- rogue:一款經典的 Unix 地牢爬行冒險遊戲;
- 2048:控制台模式下的 2048 簡單遊戲;
- 運勢:各種造作說法的輸出。 我決定不在這裡包含整個引文資料庫,以便為其他功能留出空間;
-
微蟒 :一個非常小的Python解釋器。
快閃記憶體驅動器仿真
在編譯過程中,建置工具會產生一個小的 FAT32 映像並將其新增為 UBI 分割區之一。 Linux Gadget Subsystem 將他的 PC 呈現為儲存裝置。
如果您有興趣查看隨身碟上顯示的內容,最簡單的方法是閱讀
Ресурсы
來源
我的 Buildroot 樹發佈在 GitHub 上 -
我用了
我認為我擁有當今世界上用於F1C100 的最好的U-Boot 移植,而且它也部分基於Icenowy 的工作(令人驚訝的是,讓U-Boot 正常工作是一項相當令人沮喪的任務) 。 您也可以在 GitHub 上取得它 -
F1C100 的文檔
我發現 F1C100 的文檔相當稀疏,我將其發佈在這裡:
-
全志 F1C100s 資料表 – 一般資訊和引腳排列。 -
全志F1C600參考手冊 – F1C600 的暫存器定義,實際上與 F1C100 相同,但根據聲明的 Linux 支援進行了重命名(哈!)。 - 我主動從圖表中藉用了訊息
Sipeed 的 Lichee Nano – 我用來設定軟體的開發板。
我上傳給那些好奇的人。
結論
在這個專案的開發過程中我學到了很多東西——這是我第一個使用回焊爐的專案。 我還學習如何為文檔品質較差的元件尋找資源。
我利用了我現有的嵌入式 Linux 經驗和主機板開發經驗。 該專案並非沒有缺陷,但它很好地展示了我的所有技能。
對於那些對使用嵌入式 Linux 的詳細資訊感興趣的人,我建議閱讀我的相關文章系列:
來源: www.habr.com