平头哥玄铁 E906 编译与使用

2023-12-15 05:08:24

1、E906 概述

与玄铁 E902 一样, E906 核的 RTL 代码也是开源的,开源仓库地址:https://github.com/T-head-Semi/opene906

玄铁 E906 是一款完全可综合的中端 MCU 级处理器,兼容 RV32IMA[F][D]C[P] 指令集,提供可观的整型性能提升以及高能效的浮点性能。

在这里插入图片描述

在这里插入图片描述

性能

在这里插入图片描述

网上能找到的信息就这么多,目前也暂时没了解哪个芯片用 E906 的。

2、通用寄存器

寄存器ABI 名称描述
x0zero零值
x1ra返回地址
x2sp堆栈指针
x3gp全局指针
x4tp线程指针
x5t0临时/备用链接寄存器
x6-7t1-2临时寄存器
x8s0/fp保留寄存器/帧指针
x9s1保留寄存器
x10-11a0-a1函数参数/返回值
x12-17a2-a7函数参数
x18-27s2-s11保留寄存器
x28-31t3-t6临时寄存器

3、编译运行

  1. SDK 下载 https://www.xrvm.cn/community/download?id=658699855023046656

  2. 编译

$ cd SmartL_E906-R2S2-V1.7.10/projects/examples/hello_world
$ make
  1. 运行
    与 E902 一样,在 qemu 上运行,qemu 安装可参考前文。
$ qemu-system-riscv32 -M smartl -cpu e906 -kernel out/smartl_e906_evb.elf -nographic -m 128M
Hello World!
Hello_World runs successfully!

4、E906 与 E902 比较

虽然 E902 和 E906 是两个面向不同市场的产品,这里也做一个简单的比较,可以进一步加深印象。

相同点

  1. 总线接口一样,都采用 AMBA3 AHB-Lite 32 bit 总线协议

差异点

  1. 支持的指令集不同
  • E902 为 RV32EMC 指令集,包括标准的整型指令集(E), 乘除法指令集(M)和 压缩指令(C)
  • E906 为 RV32IMAFC[P] 指令集,包括标准的整型指令集(I), 乘除法指令集(M), 不可中断指令(Atomic)标准扩充(A), 单精度浮点标准扩充(F),压缩指令(C)和单指令多资料流(SIMD)运算标准扩充(P)。
  1. 寄存器数量
    | 芯片架构 | 寄存器数量 |
    | ------- | ------- |
    | E902 | 16 |
    | E906 | 32 |

  2. 流水线数量不同
    | 芯片架构 | 流水线数量 |
    | ------- | ------- |
    | E902 | 2 |
    | E906 | 5 |

  3. 支持中断源数量不同:
    | 芯片架构 | 中断源数量 |
    | ------- | ------- |
    | E902 | 64 |
    | E906 | 128 |

  4. cache 配置不同
    | 芯片架构 | cache 配置 |
    | ------- | ------- |
    | E902 | 只支持指令 cache,2KiB/4KiB/8KiB 可配 |
    | E906 | 支持指令cache 和数据 cache 16KB |

文章来源:https://blog.csdn.net/flyingcys/article/details/135006655
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。