欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

OpenEuler UniProton 实时操作系统成功适配 RISC-V 架构 - RISC-V 架构适配工作

最编程 2024-04-24 21:11:49
...

为了补足 UniProton 在 RISC-V 架构下的能力,罗同学在以下几个方面进行了深入的适配:

  1. 中断框架方面,添加了 RISC-V PLIC(外设中断控制器)和本地中断控制器的对应驱动代码,添加了板载配置,用于指定 PLIC 和 CLINT 的基地址以及适配 UniProton 实时操作系统的硬件中断 API 框架,包括初始化相关 API 、优先级相关 API 、中断操作相关 API 以及添加外部中断处理函数分发入口 API。

  2. 异常框架方面,添加了异常 DUMP 的上下文结构体,并实现了异常函数分发入口 API,以及与软件异常相关的 API,以确保 UniProton 能够有效地处理各种异常情况。

  3. 进程框架方面,添加了 RISC-V 下的进程上下文结构体,并适配了进程初始化 API 和进程上下文切换 API,实现了 RISC-V 下的进程 CPU 信息的屏蔽。

  4. IPC 框架方面,进行了一些调度 API 的适配工作,利用 RISCV ecall 硬件特性实现 tasktrap 接口,屏蔽了 RISC-V 底层的硬件异常机制,以支持利用如信号量、信号和消息队列等 IPC 的 API 进行线程同步。

  5. 用户 API 框架方面,添加了用户使用的 trap 入口 API,并适配了用户使用的临界区 API,CPU 占用率 API,内核钩子模块 API。

在上述能力的支持下,开发者可以利用中断系列的 API 开发 RISC-V 芯片的设备驱动程序;利用异常系列的 API 开发 RISC-V 下的 Dump 工具作为内核开发的辅助调试工具,如打印出异常相关的 RISC-V 寄存器值和异常原因,利用回调处理特殊的 RISC-V 异常,并且结合 RISC-V MMU 实现 lazy_brk, cow 等类似的特性;利用进程 API 结合其他系列的 API 开发 RISC-V 架构设备驱动,开发基础组件如自定义 shell,自定义协议栈等;利用其他用户 API 如 CPU 占用率 API,钩子模块 API 等开发性能测试工具

为了帮助用户更好地理解和在 RISC-V 上探索 UniProton,罗同学还提供了相关文档、示例 Demo 以及基于 uapi 开发的应用:

  • UniProton RISC-V 文档:https://gitee.com/Jer6y/uniproton-documentation
  • RISCV64_QEMU_HelloWorld 工程:https://gitee.com/openeuler/UniProton/blob/master/doc/demoUsageGuide/riscv64_demo_usage_guide.md