打印
[FPGA]

Lattice CrossLinkNX软件开发入门分享之(3)-使用RISC-V软核

[复制链接]
912|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
作者:Hello,Panda

1        创建SoC项目
Lattice CrosslinkNX内部集成了RISC-V指令集,可以支持RISC-V软核处理器,因此能够进行SoC的开发。RISC-V软核可以运行C程序,实现一些控制、调度以及接口驱动的功能,相比纯FPGA而言更加的方便,特别是在图像采集、处理应用上,可以很便捷的配置CMOS、运行一些ISP的如自动曝光、自动白平衡的控制代码。
1.1  创建SoC工程
Lattice提供了SoC开发环境Propel,其中Propel Builder用于搭建硬件工程,Propel用于开发RISC-V的C代码。本例创建一个示例工程,包括RSIC-V软核及其运行必须的RAM和定时器、中断,一个GPIO外设和一个UART外设。
Step1:新建工程
  打开Propel,选择File->New Design,将工程命名为soc_uart,并指定好保存路径。
图1 新建SoC工程
Step2:配置工程
如下图所示,选择器件为LIFCL-40,处理器类型为RISC-V MC,为了快速实现,选择“Hello World Project”工程模板,这里面包含了最小工程所必须的配置和外设。
图2 配置工程
Step3:配置其他模块
工程默认时钟频率为112.5MHz(450MHZ OSC四分频),实际布局布线能跑80MHz左右,因此按照前篇所述方法将OSC的输出频率改为最接近的75MHz。
同时,双击原理图中的uart模块,将输入时钟改为75MHz,以准确产生115200的波特率。
Step4:确认地址空间
点击原理图左上角的Address选项,如果地址没有冲突,则将地址lock项打√,如下图所示。
图3 检查地址是否有冲突
Step5:规则检查和生成文件
如下图所示,标号①所在图标为生成文件,标号②所在图标为规则检查,标号③所在图标为生成地址报告(包含外设的寄存器地址和定义),标号④为调用Radiant,标号⑤为调用Propel SDK。
在规则检查无误后点击Generate生成输出文件,然后调用Radiant对工程进行综合和布局布线。
图4 图形化工程界面
Step6:Radiant编译
点击图4所示的标号④按钮进入Radiant集成开发环境,按照前偏介绍的方法编写顶层文件调用生成的SoC工程,编写pdc约束文件,一切准备好后Export Files生成bit文件。
图5 Radiant工程
将bit文件下载到FPGA即可进行RISC-V软核C代码调试。
1.2  RISC-V软核调试
RISC-V 软核C代码调试在Propel SDK下进行,具有单步Debug、查看内存数据等功能。
Step1:分配工作区
点击图4所示标号⑤图标按钮,给Propel软核分配一个工作空间。
图6 分配工作区
Step2:配置系统环境
内存分配、外设等相关信息均包含在sys_env.xml文件中,选择先前工程生成的该文件以及目标CPU,点击NEXT。
图7 配置系统环境
Step3:配置工程类型
如下图所示,给工程命名,并配置工程类型为“Lattice C Project”,然后一路Next创建好工程。
图8 设置工程类型
Step4:修改链接脚本
可根据系统的资源来修改链接脚本,本例中代码区和数据区在同一处SRAM,因此默认就行,仅将堆栈区做修改。
图9 修改链接脚本
Step5:配置Debug选项
如下图10,选中画圈的虫子,选择Debug Configurations,选择GDB OpenOCD Debugging,取好名字。
图10 配置Debug选项
Step6:扫描器件
在线调试之前一定要先将bit文件下载到FPGA,然后在GDB OpenOCD Debugging的CableConn下,侦测Cable和扫描器件,如下图所示,找到器件后点击Apply,如无特殊需求,其他的配置项可以不修改,点击Debug进入在线仿真。
图11 扫描器件
连接设备进行入Debug后,可设置断点、查看内存值等。
图12 在线调试界面
1.3  Propel软件代码编译到SRAM
RISC-V处理器的代码在器件内部的SRAM中运行,因此需要将Propel生成的C可执行代码以内存初始化文件的形式编译到SRAM中去。
Step1:添加初始化文件
如图13所示,在Propel SDK工程目录的Debug目录下,文件扩展名为.mem的就是C可执行Hex文件。
图13 可执行文件示意图
如图13所示,在Propel Bulider的图形化工程界面下,双击内存模块,将Initialize Memeroy勾选,并选择格式为hex,将初始化文件路径指向Propel下生成的.mem文件,Generate即可。
重复前文所述的规则检查、生成文件、Radiant编译生成bit流,将bit流文件烧写固化到SPI Flash,上电重启,RISC-V软件代码即可自动运行。
图14 添加可执行文件到SRAM
2        结语
软件入门介绍到此结束,希望能够起到抛转引玉的作用。同时,也欢迎大家扫描下面的二维码加入QQ讨论群或微信公众号共同讨论或获取设计资源,共同进步。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:Hello,Panda

29

主题

63

帖子

5

粉丝