SylixOS RISC-V 移植最新进展和技术分析

RISC-V 是什么?

  • RISC-V (读作“RISC-FIVE”)是基于精简指令集计算(RISC)原理建立的开放指令集架构(ISA),V 表示为第五代 RISC(精简指令集计算机),此前已经有四代 RISC 处理器原型芯片。每一代 RISC 处理器都是在同一人带领下完成,那就是 U.C. Berkeley(加州大学伯克利分校)的 David Patterson 教授。

    为什么 RISC-V 这么火?

    与大多数 ISA 相反,RISC-V ISA 可以免费用于所有希望的设备中,允许任何人设计、制造和销售 RISC-V 芯片和软件。虽然它不是第一个开源的指令集(ISA),但它却是第一个被设计成可以根据具体应用场景而选择适合的指令集的指令集架构。基于 RISC-V 指令集架构可以设计服务器 CPU、家用电器 CPU、工控 CPU 和用在比指头还小的传感器中的 CPU。

    除了可伸缩性极好、开源免费外,RISC-V 还有一个特点,那就是架构简洁,RISC-V 基础指令集则只有40多条,加上其他的模块化扩展指令总共几十条指令。 RISC-V 的规范文档仅有145页,而“特权架构文档”的篇幅也仅为91页。

    RISC-V 的优点这么多,吸引了很多来自工业界和学术界甚至政治界的关注(印度已经把 RISC-V 定为了国家指令集),很快 RISC-V 就有大量的参考设计实现和丰富的软件支持(比如 GCC、GDB、glibc、newlib、qemu、Linux、以及我们后面要介绍的 SylixOS 实时操作系统)。

    SylixOS 与 RISC-V 的初次合体

    2018年3月31日,SiFive 公司( SiFive 是由 U.C. Berkeley 开发 RISC-V 的主力开发人员孵化出的一家高科技公司)发布全球了首款多核全功能 RISC-V 处理器——Freedom U540,此款处理器也是全球第一颗有能力运行标准 Linux 的 RISC-V CPU。

  • Freedom U540

    同时 SiFive 公司通过众筹的方式同步发售了全球首批的 Freedom U540 开发板——HiFive Unleashed。翼辉信息公司很有幸成为 HiFive Unleashed 的首批用户。

  • HiFive Unleashed

    经过漫长的“海淘”过程,2018年4月8日,HiFive Unleashed 终于来到了翼辉信息公司工程师之手。

    在翼辉信息公司工程师的努力之下,13天后,SylixOS 成功在 HiFive Unleashed 上运行起来,SylixOS 成为全球第一款在多核 RISC-V 真机上运行的实时操作系统!(SylixOS 同时支持32位与64位运行模式)。

  • SylixOS running on HiFive Unleashed

    SylixOS 是什么?

    下面让小编隆重地为大家介绍一下 SylixOS 实时操作系统:

  • SylixOS 是一个开源的跨平台的大型实时操作系统(RTOS),SylixOS 诞生于2006年,经过十多年的持续开发,SylixOS 已成为功能最为全面的国产操作系统之一。目前已有众多产品和项目应用案例,行业涉及航空航天、军事防务、轨道交通、智能电网、工业自动化等诸多领域。SylixOS 完全符合 POSIX 规范,有丰富的开源软件可供使用。

  • SylixOS 优势:

    1. 处理器跨平台支持,支持 ARM、MIPS、PowerPC、x86、SPARC、DSP、RISC-V、C-SKY 等架构处理器,便于用户在升级硬件平台或跨平台开发的时候,能做到应用程序的无缝迁移;

    2. 支持对称多处理器(SMP)平台,具有实时进程及动态加载机制,满足多部门分布式软件开发需求,支持各部门应用软件在操作系统上的集成;

    3. 编程接口兼容性高,SylixOS 符合 IEEE、ISO、IEC 相关操作系统编程接口规范,用户已有应用程序可方便的迁移到 SylixOS 上;SylixOS 同时也符合 GJB7714-2012《嵌入式实时操作系统应用编程接口》规范;

    4. 实时内核,调度算法先进高效,性能强劲;

    5. 集成标准设备模块,提供丰富的设备支持,众多文件系统,完善的驱动框架;

    6. 支持国家标准可信计算;

    ......

    SylixOS 目前由翼辉信息(ACOINFO)主导开发,ACOINFO 同时提供了一整套 SylixOS 的开发工具,包括集成开发环境 IDE、仿真环境 Simulator、编译器 Compiler、Qt 图形开发包、TpsFs 文件系统(掉电安全)访问工具等。

  • 目前已有众多产品和项目应用案例,行业涉及航空航天、军事防务、轨道交通、智能电网、工业自动化等诸多领域。其中大部分产品都要求7x24小时不间断运行,当前很多 SylixOS 系统节点甚至不间断运行已超过七万小时( 8年时间)。

  • OK,看完上面的 SylixOS 介绍,相信大家已经对 SylixOS 有着比较感性的认识,没错这就是一套功能丰富、性能卓越、稳定可靠、开发方便、应用广泛、开源、Design in China、能上天能下海的大型实时操作系统。

    SylixOS 与 RISC-V 的强势结合

    能运行只是我们移植工作的第一步,了解 RTOS 原理的朋友应该都知道,移植一款 RTOS 到一款新的处理器构架上,往往只需要编写 CPU 寄存器上下文保存、恢复及异常处理的代码就可以了。但距离完全发挥 Freedom U540 功能和性能的目标,还有比较远的距离。比如 SylixOS 支持动态加载内核模块和共享库(动态链接库)及应用程序、支持多核 SMP、支持 Qt4 和 Qt5 这样的大型开源图形界面框架、支持网络或串口调试 C/C++ 应用程序等等这些高大上的功能特性。

    要在 RISC-V 处理器上实现这些功能特性,意味着还需要编写大量的 RISC-V architecture 层代码。

  • SylixOS RISC-V architecture 层代码

    不过嘛,写代码,一直都是翼辉信息公司工程师最最最擅长的事啦,给他们一个键盘,他们能撬起整个地球。

    首先被支持起来的是多核 SMP 特性,由于 SylixOS 已经是一个 SMP RTOS,所以让支持 RISC-V 多核 SMP 并不需要对 SylixOS 做任何改造工作,主要的工作是:多核核间中断 IPI 的发送与响应,CACHE 同步、MMU TLB 同步、多核启动等等。

  • RISC-V 多核 SMP

    接下来被支持起来的动态加载内核模块和共享库(动态链接库)及应用程序,它们都是 ELF(Executable and Linking Format,可执行可链接文件格式),需要在 RISC-V 的 architecture 层代码里实现对不同的 ELF 节区进行重定位。

  • 动态加载内核模块

    由于共享库(动态链接库)和应用程序使用 PIC(Position Independent Code,位置无关代码)编译,及需要链接 PIC 版本的 GCC 库和数学库,所以翼辉信息公司工程师还改造了 riscv64-unknown-elf-gcc 编译器,为其增加了 PIC 版本的 GCC 库和数学库。

  • riscv64-unknown-elf-gcc 编译器

    再接下来被支持起来的是 C++ 应用程序,由于 C++ 的全局对象、局部对象、静态对象需要在恰当的时机进行多线程安全的构造或释构,C++ 异常的捕捉,这些都需要对编译器进行改造,通过 SylixOS 的锁功能实现 C++ 运行时可重入(多线程安全)。

  • C++ 对象被正确构造和释构

    有了 C++ 的支持,在 RISC-V 上跑 Qt 图形界面就有戏了,SylixOS 早在2013年便支持 Qt 图形界面。通过修改 Qt 的源代码,添加 RISC-V 的支持,使用我们改造过的 riscv64-unknown-elf-gcc 编译器编译 Qt 源代码,很快 RISC-V 的 Qt 共享库就编译出来了。

  • RISC-V 的 Qt 共享库

    由于 Freedom U540 和 Qemu sifive_u 虚拟机都没有显示控制器,没办法直观地看到 Qt 的运行效果,翼辉信息公司工程师便为 Qemu sifive_u 虚拟机添加了 LCD 屏、触摸屏等设备:

  • RISC-V 上运行 Qt

    最后被支持起来的就是 C/C++ 应用程序调试功能,SylixOS 已经内建了调试服务器功能,所以主要的工作是实现获取、设置寄存器的接口、分析当前指令(特别是跳转和分支指令)计算跳转到下一条指令的位置、断点指令的异常处理等,难点主要是分析当前指令计算跳转到下一条指令的位置。

  • 调试 SylixOS 应用程序

    结语

    有了一个功能这么强大的多核 SMP RTOS 的支持,中高端 RISC-V 芯片无可用的大型实时操作系统已经成为过去,使用 SylixOS,中高端 RISC-V 芯片可将其功能和性能发挥极致;同时 SylixOS 开发环境的完善和易用,也将为中高端 RISC-V 芯片的软件开发提供了极大的便利性。

    此外 SylixOS 还为低端的 RISC-V 芯片(Machine level only、不带 MMU)提供了裁减版本的 SylixOS Lite,却依然保留着丰富的系统组件(包含 Shell、TCP/IP、掉电安全文件系统、GUI、DataBase 等)和完善的驱动框架,为复杂的应用开发提供了强有力的系统支持。

    由于近期将发布的 SylixOS 的 new feature 已经冻结,预计在2018Q3中期发布包含 RISC-V 支持的 SylixOS 和 RealEvo-IDE。


    2018年06月20日