Linux 5.7 将支持国产 RISC-V 芯片 K210
這是轉載的一篇文章,文章主要內容是Linux合入了一個國產芯片k210的代碼,雖然這個芯片不是很強大,但是對于學習來說非常有意義,而且,還有人在這個開發板上移植了Linux 0.11。
今天早上我在查閱 Linux 內核郵件列表的時候,看到了一封 Linus 本人的回復:
這封郵件的大概意思是說:
Palmer Dabbelt 向 Linus 大神發了一個 Linux 內核補丁的合并請求(PR), 但是大神發現這個 PR 有問題,準確的說是不規范——其中有一條提交里面混雜了一個其他功能的修改,而這個修改和他對應的 commit message 的描述不一致。
一般我們在軟件開發的流程中,有一個樸素的版本管理哲學:開發者的提交要盡量干凈,簡單。開發者要把自己的代碼修改按照功能拆分成一個個相對獨立的提交,一個提交對應一個功能,而且要在對應的 commit message 里面描述清楚。
在這個 PR 中,有條提交里面確實混雜了其他的一個修改,所以 Linus 說 Palmer 的代碼樹不干凈。
不過讓人出乎意料的是 Linus 大神沒有直接把這條 PR 打回去,而且自己親自修改了里面的問題,然后把他們合并到 Linux 5.7 mainline 上了。大神以前在 Linux kernel 開源社區是出了名的暴躁,經常因為開發者提交的一些看不順眼的代碼怒發沖冠,在郵件列表了直接回復 F**K 啊,罵對方 brain damaged 啊什么的。看來經過 2018 年的閉關自省后,大神確實變的溫潤如玉了很多。
這是我們從這封郵件里面看到的開發規范問題,其實對于很多愛好 RISC-V 或者 K210 SOC 的開發者來說,這封郵件還隱含著另外一個十分重要的信息。
這個 PR 的提交者 Palmer Dabbelt 也非等閑之輩,他 2017 于伯克利大學計算機碩士畢業,然后進入 RISC-V 領頭羊 SiFive,在這家公司他領導實現了 Linux、GCC、glibc 等基礎組件對 RISC-V 架構的支持,是這些開源項目在 RISC-V 分支的 maintainer。去年他從 SiFive 離職,加入了 Google Android 部門。
Palmer 的這個 PR 其中重要一部分內容是向 Linux 內核添加對 K210 SOC 的支持。
K210 是中國一家叫做嘉楠耘智的公司(嗯,他們最開始是做礦機的,現在開始做 AI,和比特大陸、億幫國際合稱礦機三巨頭,并于 2019 年在納斯達克上市)開發的 SOC,采用 RISC-V 架構, 雙核 CPU、64 位,臺積電 28 nm 制程,運行頻率能到 400 MHZ,還帶有神經網絡加速器 KPU,算力能到 1TOPS、主要面向音視覺等 AI 和 IOT 領域。
總體來說 K210 還是一顆 ?MCU 級別的芯片,只有 8M 的 SRAM,無法外接大容量的 DDR 等存儲器,固態存儲接口好像也只有 SPI 接口,可以接 SPI Nor Flash 這種小容量的存儲,所以在設計定位上,這是一顆只適合運行 RTOS 的 MCU。
不過還是擋不住很多充滿探索精神的 Linux Hacker,想嘗試在 K210 上運行 Linux,畢竟現在 RISC-V 這么火,可是能跑 Linux 的卻不多,SiFive 到是有一款能運行 Linux 的開發板叫做 HiFive Unleashed,但是價格讓人望而卻步。K210 的 8M SARM 以及友好的價格讓廣大愛好者看到了希望,
我還在 Github 上看到有人移植了 Linux 0.11 到 K210 上,不過在這個 Linux 5.X 的時代,0.11 還是不夠刺激。
所以我立刻更新了一把最新的 Linux mainline 代碼,查到了關于 K210 的相關提交:
可以看到代碼比較簡單,只有 5 個補丁,可以得到如下信息:
支持的功能也比較簡單,只支持 UART 通信,也就是說,按照目前的狀態,可以運行一個能夠通過命令行交互的 Linux 最小系統。
目前的代碼支持勘智的 KD233 和 Sipeed MAIX Dan 和 Sipeed MAIXDUINO 三款開發板,其他的基于 RISC-V 開發板我估計也能跑,頂多只要確認下 UART 口的差異。
不支持 MMU,雖然從 Github 上找到的一些代碼可以看出 K210 上面搭載了基于 SV39 標準的 MMU,但是勘智的官方文檔并沒有提及任何和 MMU 相關的信息。這也是國內一些 SOC 設計公司需要改進的地方,不能總是不愿意開放和自己芯片相關的詳細文檔。不過幸運的是現在的 Linux 已經支持 nommu 架構的處理器。
仔細查閱提交的代碼可以發現,K210 是基于 SiFive 和 UC Berkeley 開源的 Rocket Core 實現的,這款開源的 Rocket Core 在業界很受歡迎,流片達十多次,性能和 Arm Cortex-A5 相當。
因為 Palmer 在 Sifive 工作的時候已經把 RISC-V 的基礎支持代碼提交到了 Linux mainline,所以這次朝 Linux mainline 添加對 K210 這款 SOC 的支持就簡單了很多,可以復用大量 Palmer 提交的基礎代碼。
目前從提交記錄還可以看到,這一系列補丁大部分是西部數據的工程師貢獻的,西部數據目前是 RISC-V 處理器的超級支持者,他們已經在西數的大量產品中使用 RISC-V 處理器。
去年我就看到一份西數工程師的 PPT,描述在 K210 等處理器上運行 Linux,沒想到他們這么快就把相關成果提交到 Linux mainline 了,還是很讓人激動的。
我進一步查閱了 RISC-V 的內核郵件列表發現,這一系列補丁在提交的過程中,受到了很多極客的關注,有很多Geek 表示愿意進一步為 K210 貢獻 Linux 的支持補丁,包括 LCD 屏幕、SPI 接口的 SD 卡,以及 UART 接口的 WIFI。
這使得這款 SOC 具有了很高的可玩性,這就是開源的力量!
在目前這種狀態下,用 K210 來學習基本的 Linux 系統移植還是很不錯的,因為它簡單,不涉及太多復雜的東西,可以讓我們快速掌握給一款芯片移植 Linux 所需要做的最基本工作,堪稱一個完美的 Linux 最小系統學習平臺,除了 SRAM 太小——只有 8MB。
另外如果有同學對西數那份在 K210 上運行 Linux 的 ppt 感興趣的話,可以在公眾號后臺發送關鍵字 k210 獲取下載鏈接。
? 回復「?籃球的大肚子」進入技術群聊
回復「1024」獲取1000G學習資料
總結
以上是生活随笔為你收集整理的Linux 5.7 将支持国产 RISC-V 芯片 K210的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: js上传excel文件
- 下一篇: 【App设计】互联网+商业计划书