跳转到主要内容

基于openE902的smart soc 的FPGA测试

本文转载自:<span id="profileBt"><a href="https://mp.weixin.qq.com/s/TM4v_FWUVsXsP48-bBKWag">芯设计微信公众号</a></span&gt;

<strong>写在前沿</strong>

玄铁E902是一款面向低功耗端侧MCU,IOT应用的cpu,支持RISC-V RV32EMC ISA,开源版本openE902的配置缺少指令cache以及TEE功能。

本文基于平头哥半导体公司开源的openE902 core、以及smart soc代码,做了FPGA的软件测试。

<strong>准备工作</strong>

1: 下载openE902的core,smart soc,以及仿真文件:

https://github.com/T-head-Semi/opene902

按照README.md可以先跑一下仿真环境。

2: CDK工具包(剑池CDK集成开发环境V2.12.1):

https://occ.t-head.cn/community/download?id=5759974197753282563

3: E902软件库SDK(SmartL_E902M_RV32EMC-R2S0P0-V1.7.3):

https://occ.t-head.cn/community/download?id=582560116612956160

4: vivado(2017.01), FPGA(Xilinx Artix-7 XC7A200T), Putty, CLINK调试工具。

5: E902的产品手册, PPA数据:

https://img.102.alibaba.com/1623743224121/7a98153360599adc281c32f258a3c…

<strong>硬件SOC部分工作</strong>

smart soc的架构如下图1所示(E906 core替换为openE902):
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240155-1.p…; alt=""></center>
<p align="center"><strong>图1</strong></p>

openE902的文件目录结构如图2:
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240156-2.p…; alt=""></center>
<p align="center"><strong>图2</strong></p>

将图2中的cpu core、及smart soc代码添加到新建的vivado工程中。

添加工程约束xdc:对时钟复位,jtag接口,gpio[7:0] 和uart信号进行约束, 时钟约束选择了20Mhz。

布局布线后的资源情况(其中ITCM, DTCM, SYS_SRAM,约1MB存储),如图3:
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240157-3.p…; alt=""></center>
<p align="center"><strong>图3</strong></p>

生成bit 文件烧录到FPGA板子上。

<strong>软件SDK部分工作</strong>

在xxx\SmartL_E902M_RV32EMC-R2S0P0-V1.7.3\projects\examples\driver目录中有对uart、timer、gpio的CDK工程。

打开CDK工程: compile,build project,start debugger。

这里我重写了C代码,可以调用timer、gpio、uart、以及算术运算函数,如图4:
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240158-4.p…; alt=""></center>
<p align="center"><strong>图4</strong></p>

第一次代码测试的时候,程序挂了,经过单步debug发现程序在trap_c.c文件中不断循环。

这里我把图5框中部分代码注释掉就没问题了(system.c代码),不知道会不会影响其他功能。
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240159-5.p…; alt=""></center>
<p align="center"><strong>图5</strong></p>

main函数的FPGA测试没问题,串口测试效果如图6所示:
<center><img src="http://xilinx.eetrend.com/files/2022-01/wen_zhang_/100557122-240160-6.p…; alt=""></center>
<p align="center"><strong>图6</strong></p>

<strong>写在最后</strong>
基于openE902、smart soc,以及配套的SDK工程,芯片设计同学可以在底层硬件做一些数字IP RTL逻辑开发,软件同学也可以在上层软件做一些应用开发。

免责声明:本文转载于网络,转载此文目的在于传播相关技术知识,版权归原作者所有,如涉及侵权,请联系小编删除(联系邮箱:service@eetrend.com )。