Smartfusion2开发学习记录-开发环境搭建

开发环境

硬件平台:Smartfusion2
芯片型号:M2S010T-FG484
电脑系统: Windows 11
FPGA开发:Libero SoC v11.9
ARM开发:Keil4 uVision

由于在学习官方历程时,使用Libero SoC v2024.2.0版本,发现无法打开项目,且按照教程创建的项目出现编译错误的情况因此,使用Libero SoC v11.9版本。若使用最新版本,也可以参考此开发流程。

在使用Keil4 uVision开发ARM程序时,建议使用keil4 uviuVision。生成的keil工程在添加芯片型号时,出现了问题,因此,使用Keil4 uVision进行开发。

Libero SoC v11.9下载链接

Libero SoC可以从官网免费下载,但此版本号较低。

免费license申请

  1. 首先,注册自己的账号,若无法注册登录,请切换网络。

  2. 点击申请免费许可证和管理许可证

  3. 选择申请的许可证。
    申请许可证

  4. 在终端输入vol c:,查看C盘的序列号,与安装位置无关。

1
vol c:
  1. 填写相应信息,从填写的邮箱中获取并下载license。将下载的license文件,复制到软件安装的目录下。

注册

  1. 添加环境变量。

新建三个环境变量,依次为:
变量名: LM_LICENSE_FILE 变量值: 软件安装目录\License.dat
变量名: SNPSLMD_LICENSE_FILE 变量值: 软件安装目录\License.dat
变量名: SYNPLCTYD_LICENSE_FILE 变量值: 软件安装目录\License.dat

一定会用到Modelime,若在破解此软件时,也添加了LM_LICENSE_FILE变量值,使用;分隔两个变量值。使用此方法可以在同个变量名中同时添加多个变量值。

新建工程

修改工程信息

打开Libero开发环境,点击Project>New Project。输入工程名称,修改存放位置。
新建工程

选择芯片型号

选择芯片型号

配置器件

配置器件

设计样版与向导选择

设计样版与向导选择
主要区别在于是否生成图像化界面。

生成的工程

工程页面

配置MSS系统

选择MSS系统中的使用模块

双击Key_MSS_0或在Design Hierarchy菜单中选择Key_MSS,进入配置页面。

使能模块呈现浅蓝色,失能模块呈现灰色;只使用GPIO,只保留GPIO使能,非必要使用模块失能。

Key_MSS_0配置界面

设置MSS_CCC模块

双击MSS_CCC进入参数设置。
MSS_CCC

设置RESET_Controller模块

RESET_Controller

设置IO口模块

IO

更新配置

修改后点击保存。关闭配置界面,右键更新IP核。
更新IP核

添加CCCOSCSYSRESET模块

选择Catalog菜单,搜索CCCOSCSYSRESET,添加到主界面中。双击或拖拽都可以添加。

  1. 配置 FABRIC CCC

修改FCCC_0参数。
FCCC_0参数

  1. 配置时钟源

选择Clock&Management中的Chip Oscillators。修改OSC_0参数。
OSC_0参数

添加HDL

  1. 双击create HDL
    创建HDL

  2. 编辑并检查.v文件

1
2
3
4
5
6
7
8
module led_light (
input wire key,
output wire led
);

assign led = ~key;

endmodule
  1. 进入Design Hierarchy,双击修改文件内容,拖动到smart design中。保存后,添加的HDL文件会自动添加到smart design中。
    添加HDL

若已经创建了仿真,新增加的也会自动添加到工程中。
HDL自动添加到工程

若需要在仿真软件中添加信号线,则需要在仿真文件中添加信号端口

  1. 添加信号

将信号线添加到顶层。为后续添加管脚约束中能够找到端口。

添加信号

画布布线

为IO口添加标签,将信号添加到顶层。

IO添加标签

布线

使用工具栏的连线工具进行连线,然后点击generate Component工具,即可生成配置。

添加仿真

  1. 在设计流中,右键smart design,创建一个仿真。
    image

image

  1. 在Stimulus Hierarchy中可以看到,顶层和单独的HDL文件,都被添加到工程了。
    image

  2. 在设计流中双击仿真Simlulate,自动打开软件。
    image

  3. 开始仿真测试。

image

编译工程

添加管脚约束

编译顺序

管脚约束

文件构成

image

若后续生成Keil工程,则会新增加keil文件夹。

导出Keil工程

在使用ARM端(MSS)时,需要对MSS进行编程,因此,需要将工程导出为Keil工程。

  1. 双击Handoff Design for Firmware Development -> Configure Firmware Cores,选择需要添加的库。

  2. 双击Export Firmware,即可导出工程。
    导出keil

  3. 打开工程,选择.uvmpw后缀的文件,即可打开工程。

  • 首先编译工程文件,编译后,右键_app文件夹,将文件夹Set as Active Project

  • 打开魔术刷,将设备改为M2S010

  • 进入Debug,选择Jlink,开启Reset and Run,确认M2Sxxx 256kB

下载工程

  1. 点击Generate Bitstream,生成需要下载的文件。

  2. 将下载器连接开发板后,点击Run PROGRAM Action,进行下载。

  3. 若需要生成烧录文件,点击Export Bitstream,可以导出.stp.bat文件。

常见错误

在我们更换硬件资源,比如删除了串口后,重新执行synthesis -> compile时,会出现报错。
引脚错误
分析错误信息得之,网络列表中引脚MMUART_0_RXD_F2M -pinname T18错误。
解决方法为,打开I/O Constraint -> constraint \io\program_sb.io.pdc,手动删除被移除的引脚信息,重新编译即可。

当有时smart design配置正确,且synthesize通过时,但在编译时出现了报错。
image
image
可能是自己添加的HDL的引脚没有被操作。

1
2
3
4
5
6
//修改前
//assign port3 = port1;
//assign port4 = port2;
//修改后
assign port3 = port1;
assign port4 = port2;

添加引脚操作后,即可解决报错问题。

若添加了自己的HDL,需要将smart design设置为Root,及顶层,这样才能保证在管教约束时,自己定义的HDL核生成的引脚的引脚都能被检测到。
image

在编辑HDL时,注意名称和引脚名称不能够相同,否则会出现Generation of'program failed.See message window for details.错误。
错误代码:

1
2
3
4
5
6
7
8
module led (
input wire key,
output wire led
);

assign led = ~key;

endmodule

另一种新建工程的方法

修改工程信息和配置器件参考开发环境搭建

工程配置向导

此综合试验,采用新的配置方法,选择Create a system builder based design,使用此方法,可以依次完成时钟、引脚等配置。

工程配置向导

image

image

image

image

image

image

image

image

image

image