谷歌终止官方支持?RISC-V坎坷的安卓适配之路

2024-5-13 9:12:00
  • 谷歌终止官方支持?RISC-V坎坷的安卓适配之路

谷歌终止官方支持?RISC-V坎坷的安卓适配之路

我们看到随着更多RISC-V内核具备运行Linux系统的高性能,加之开源社区的不懈努力,RISC-V对于各种Linux发行版系统的支持已经越来越完善,RISC-V的平板、笔记本、SBC也陆续推出。然而在安卓这一用户量最大的移动端OS上,这么多年以来,RISC-V的适配进展都相对有限。

对于任何一个OS而言,完成新架构硬件的移植都不是一件易事。安卓作为一个开源操作系统,移植自由度极高,但如果有谷歌官方的开发支持自然更容易实现。好在谷歌已经参与到RISC-V的适配工作中来,提供AOSP支持并接受适配RISC-V设备的补丁。正当大家以为基于RISC-V的安卓手机近在咫尺之际,谷歌却在近日“停止”了对RISC-V的支持。

谷歌停止ACK通用内核对RISC-V的支持

近日,开发者社区发现,在AOSP项目中,一名谷歌开发者提交了一系列补丁,说明为删除ACK对risc64的支持。在详情页面中,可以看到这些补丁已经通过了审查,并将更新至Android-mainline分支中。这意味着如果想要编译RISC-V版本的安卓,将无法继续使用谷歌的ACK内核,而是要借助自己创建或开源社区的分支。

ACK(安卓通用内核)旨在提供一个统一的Linux内核版本,支持安卓设备开发的同时,解决内核碎片化的问题,减少安卓OEM在内核方面进行定制开发的工作。其中较新的版本也被称为GKI(通用内核映像),将与硬件无关的通用核心内核代码与GKI模块、硬件专用供应商模块分离开来。

可以说ACK是所有安卓产品内核的基础,缺乏这一官方支持无疑会使得RISC-V安卓的适配工作大受打击。不少人推测此举可能是谷歌打算停止对RISC-V支持的前奏,然而根据谷歌自己的说法,由于迭代速度较快,他们尚不能为所有供应商提供一个单一通用的映像。

事实上,根据开发者社区的回复,Android/riscv64在AOSP项目的工作其实并没有变化,只不过目前官方的GKI内核停止对RISC-V支持而已,他们正在转向Android/riscv64团队维护的非GKI内核,未来的目标依然是将做出的变更并入官方内核中。

谷歌对RISC-V的看法是否发生转变

随着RISC-V在嵌入式和MCU领域的飞速爆发,以及近几年开始在加速器、服务器和移动计算上的扩张,谷歌也意识到了RISC-V这一架构在行业合作下的潜力。在2022年11月举办的RISC-V国际峰会上,谷歌正式宣布接受为RISC-V准备的补丁。

谷歌深知RISC-V是一个模块化的ISA,这也意味着该架构存在大量拓展,会使得OS的适配变得极为复杂。所以谷歌确定了他们第一步支持的配置,即RVA22加上矢量和矢量加密拓展。

去年10月,高通也宣布和谷歌合作,高通将开发基于RISC-V的可穿戴硬件平台,双方合作提供Wear OS的支持,并将基于RISC-V的可穿戴设备解决方案商业化,推广至全球市场,这也就意味着下一代Pixel Watch很可能就会用上高通的RISC-V芯片。

对于谷歌来说,他们对增加新的ISA支持相当谨慎,因为这意味着需要更多的工程师,并花费更多的时间参与维护和代码审查工作,尤其是在安全补丁更新上。所以宣布对RISC-V的支持是一个不小的承诺,他们并不会轻易放弃。

从android-riscv64的项目页中也可以看到,在实际的开源代码贡献上,谷歌仍在继续支持RISC-V的安卓开发。目前开发团队使用cuttlefish虚拟安卓设备运行ART(并启用JIT)来完成启动,相关的shell和命令行工具(以及依赖库)都能够正常运行。

目前RISC-V的应用二进制接口(Android NDK ABI)还未定义,但开发团队仍在继续推进这一工作,不过用户倒是可以下载NDK的测试版本r27beta1,该版本已经对risc64做了临时支持,不过编译的代码并未充分利用RISC-V硬件性能,只是对其做了兼容而已,提前让用户下载只是为了方便找到需要修正的严重错误。而去年谷歌宣称这一工作将在2023年末完成,虽然谷歌并未放弃对RISC-V的支持,但相关的支持工作进展并不如预期。

开发社区所做的努力

对于安卓软件栈来说,主要包含系统内核、硬件抽象、运行时、框架层和应用五个层次近千个软件包,即便完成了内核支持,也还有不少的软件移植适配工作需要完成,单靠谷歌自己的开发团队是很难完成的,这也是谷歌选择开放接收补丁的原因,只有依靠开源社区的共同开发努力,才有可能实现Android on RISC-V的落地。

早在2020年,平头哥就开始了Android 10的适配工作,开发硬件为基于28nm工艺的双核玄铁C910处理器。这也是RISC-V开发社区中最早的一个安卓Demo项目,但公布初还是一个相对初级的版本,比如一开始进入启动器界面需要20分钟的时间,在改用Mterp解释器后,将启动时间缩短至10分钟,结合编译器、JIT&AOT等一系列优化工作,平头哥团队将启动时间缩短至1分钟。

2022年,平头哥又开始了Android 12的适配支持工作,而此次这是基于全新的硬件平台TH1520,并合作推出了BeagleV Ahead、Lichee Pi 4A EVB两大生态开发板。平头哥率先完成了TH1520的内核与驱动准备工作,同时将Clang12升级至针对玄铁优化的Clang15版本,并对Bionic进行了更新。

ART方面,平头哥在2023年把解释器从Mterp换成了Nterp,减少了方法调用的链路,提高频繁方法调用场景下的性能。而且Clang15增加了对玄铁扩展指令集的支持,在一系列优化下,Android 12在TH1520上开启更多服务的前提下,启动器的启动时间改善至47秒。

RISE联盟成员

同时为了解决RISC-V高性能与高能效核心运行安卓这类高级运行系统的软件生态问题,晶心科技、谷歌、英特尔、Imagination、高通、英伟达、平头哥、SiFive等厂商成立了RISE联盟。该联盟将致力于解决硬件到位后,RISC-V在智能手机、消费电子、数据中心和汽车等市场的软件问题。

写在最后

尽管RISC-V的安卓适配之路依然道阻且艰,但无论是开发社区还是谷歌官方,都没有放弃这一工作,所以说在RISC-V硬件平台上体验到流畅可用的安卓系统只是时间问题。

在Arm最新的财报中,RISC-V也首次出现架构对比的演示中,并对RISC-V的授权模式和能效做出了肯定,但在软件生态系统上仍有极大的进步空间。这也就是为何即便在安卓正式适配RISC-V后,开发工作依然不会就此结束,因为相关app的适配工作需要更大的行业号召力才能实现