4135|3

659

帖子

1

TA的资源

纯净的硅(中级)

楼主
 

【Sipeed 高云GW2A FPGA开发板】——ARM Cortex-M1软核处理器_硬件设计与点亮LED [复制链接]

 

4. TangPrimer-20K开发板上运行Cortex-M1软核处理器

4.1. 适用于GoWin FPGA的ARM Cortex-M1 DesignStart简介

ARM针对FPGA领域,利用EDA软件,对自家的Cortex-M0内核的verilog源文件进行加密,使得在保护IP源代码知识产权的情况下,终端用户可以直接采用ARM Cortex-M0内核作为FPGA的复杂逻辑控制的处理器,此时FPGA里的Cortex-M0软核处理器就被命名为Cortex-M1。

高云与ARM合作,将Cortex-M1内核,以及许多芯片内IP集成,形成一个完整功能的SoC,并以加密的形式发布,并提供了SoC的参考设计,从GoWin网站上下载 Gowin_EMPU_M1_V1.6.5.zip ,解压后其内容结构以及加密后的M1内核源文件如图:

其中给出了两种不同配置Cortex-M1内核的SoC参考设计,一种带有JTAG/SW调试功能支持,另一种则不带。前者是后者的超集,包含了后者的功能,因此本实验主要采用前者,并在后续软件测试中,利用JTAG/SW的调试功能,实现代码下载、软件调试等。

4.2. FPGA软核SoC的构建

参考设计开发包针对GoWin官方的不同系列的几个开发板进行了适配,与本实验使用的TangPrimer-20K开发板接近的是DK_START_GW2A18_V2.0。后续所有操作都是根据该开发板的项目文件来进行修改移植。

该开发板有两个适配项目,一个是ddr3_example,另一个是gowin_empu_m1,出于简便考虑,先测试后者gowin_empu_m1。

gowin_empu_m1集成了多种IP核,包括GPIO、UART、I2C、SPI,以及Ethernet(RGMII接口的)、SD卡(SPI模式)、等等,如图:

4.2.1. gowin_empu_m1项目文件的概览与综合

按照FPGA开发软件的流程,打开 ref_designFPGA_RefDesignDebug_RefDesignDK_START_GW2A18_V2.0gowin_empu_m1下的项目文件,可以看到项目层次结构,与对应的文件:

综合后,可以看到资源利用率和关键时钟信号:

4.2.2. 适配TangPrimer-20K开发板的IO引脚分配

打开FloorPlanner,对引脚进行分配,由于原项目是针对DK_START_GW2A18_V2开发板,配置的IO引脚也是跟该开发板匹配,如图:

         

为了移植到本次实验用到的开发板(TangPrimer-20K+Docker),根据FPGA项目中的引脚需求和TangPrimer-20K的板载硬件资源,除了项目中的RGMII接口无法满足外,其余均可连接至TangPrimer-20K对应的硬件资源中。其中:

  1. GPIO[3:0]分配到LED,GPIO[7:4]分配到S1~S4按键,GPIO[15:8]分配到2.54mm排母上;

  2. rstn分配到按键S0,clk为板载27MHz;

  3. JTAG分配到2.54mm排母上。

  4. sdcard和spi-flash都分配到核心板上对应的信号,多出的几个信号分配到无关的LED/IO引脚;

  5. RGMII相关信号分配到Docker底板的HDMI接口上,并确保HDMI接口留空,避免信号冲突;

  6. UART0分配到Docker底板调试器的UART上,UART1、I2C、SPI分配到2.54mm排母上。

  7. 同时需要在菜单栏的Project->中,设置SSPI、MSPI、READY、DONE等多功能引脚作为通用IO引脚功能:

4.2.3. FPGA项目的编译与下载

按照EDA软件的编译流程,完成布局布线、时序、功耗分析,最终生成bitstream文件。各项流程报告如下:

   

使用Programmer软件下载到FPGA,由于没有软件代码,Cortex-M1内核处于异常状态,开发板无运行输出。

4.3. Keil软件开发和下载调试_led例程

选用的是带有JTAG/SW调试接口的Cortex-M1软核,因此可以使用Keil等开发工具进行在线代码下载、调试。

4.3.2. Keil项目的设置、编译、下载与调试

使用Keil软件打开ref_design/MCU_RefDesign/Keil_RefDesign/led/PROJECT/led.uvprojx,按照文档说明,由于本设计采用的是片内ITCM和DTCM,因此应改为对应的地址,如图:

调试初始化文件ext_debug.ini中,也应改为对应的地址:

FUNC void Setup (void)
{
        SP = _RDWORD(0x00000000);
        PC = _RDWORD(0x00000004);
}
LOAD %L INCREMENTAL
Setup();

为适配TangPrimer-20K板载的27MHz时钟频率,需要将软件代码中,system_GOWIN_M1.c文件中的SYSTEM_CLOCK改为27000000,如下:

/*----------------------------------------------------------------------------
  Define clocks
 *----------------------------------------------------------------------------*/
#define  XTAL            (100000000UL)     /* Oscillator frequency */

// #define  SYSTEM_CLOCK    (XTAL / 2U)       /* 50MHz                */
#define  SYSTEM_CLOCK    (27000000)        /* 27MHz                */

在Keil软件中开启Debug,Keil软件读取ext_debug.ini并执行代码的下载,和SP、PC寄存器的初始化,然后可以设置断点,运行、单步调试等操作:

4.3.3. 运行效果

运行效果如下:

最新回复

[attach]720656[/attach]   按照步骤,到下载这一步,出现了这个错误,是怎么回事啊??   详情 回复 发表于 2023-8-3 12:05
点赞 关注
 
 

回复
举报

6968

帖子

11

TA的资源

版主

沙发
 
评测非常用心,感谢分享,期待精彩继续!
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

 

按照步骤,到下载这一步,出现了这个错误,是怎么回事啊??

点评

请仔细按照图中的设置。   在Keil项目设置选项里,Debug的JLink Target Option那个页面,把“DownLoad To Flash”选项取消。  详情 回复 发表于 2023-11-2 14:26
 
 
 

回复

659

帖子

1

TA的资源

纯净的硅(中级)

4
 
hongxy0635 发表于 2023-8-3 12:05   按照步骤,到下载这一步,出现了这个错误,是怎么回事啊??

请仔细按照图中的设置。

 

在Keil项目设置选项里,Debug的JLink Target Option那个页面,把“DownLoad To Flash”选项取消。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表