博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 5.7 将支持国产 RISC-V 芯片 K210
阅读量:1980 次
发布时间:2019-04-27

本文共 2788 字,大约阅读时间需要 9 分钟。

这是转载的一篇文章,文章主要内容是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学习资料

你可能感兴趣的文章
基于java的SSM框架的流浪猫救助网站的设计与实现
查看>>
基于java的SSM框架的教务关系系统的设计与实现
查看>>
别再问我什么是A/B测试了!
查看>>
如何用同期群分析模型提升留存?(Tableau实战)
查看>>
爱了,吹爆这个高颜值的流程图工具!
查看>>
一个数据项目
查看>>
基于JAVA_JSP电子书下载系统
查看>>
基于java出租车计价器设计与实现
查看>>
基于java的B2C的网上拍卖系统
查看>>
十二时辰篇:这该死的 996
查看>>
2021最新 上海互联网公司排名
查看>>
字节vs快手!取消大小周之战
查看>>
送一个闲置显示器!
查看>>
Oracle 行转列 pivot函数基本用法
查看>>
Oracle字符串分隔符替换(替换奇数个或偶数个)
查看>>
Oracle 利用 UTL_SMTP 包发送邮件
查看>>
Oracle 自定义函数实现split功能,支持超长字符串和clob类型的分隔
查看>>
Oracle 的循环中的异常捕捉和处理
查看>>
Oracle通过pivot和unpivot配合实现行列转换
查看>>
Oracle关于多行字符串根据固定的分隔符进行拆分,connect by递归查询的一些用法
查看>>