皋陶 发表于 2020-8-24 15:42:22

Linux 5.7 将支持国产 RISC-V 芯片 K210

本帖最后由 皋陶 于 2020-8-28 10:03 编辑

这是转载的一篇文章,文章主要内容是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。本篇完,感谢关注:RISC-V单片机中文网
页: [1]
查看完整版本: Linux 5.7 将支持国产 RISC-V 芯片 K210