在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 14640|回复: 42

[原创] 使用DE2-115简单实现CortexM0_DesignStart并Keil调试成功

[复制链接]
发表于 2021-7-12 14:10:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 Pasingen 于 2021-7-16 11:24 编辑

经过试验,将ARM官方网站上的CortexM0_DesignStart系统,即下载文件AT510-MN-80001-r2p0-00rel0.tgz,进行处理后,在DE2-115平台上实现。当前版本运行时钟50MHz,仅GPIO连接到LEDR上,进行跑马灯试验。
微信图片_20210712134421.jpg
硬件平台照片。KeilMDK调试器Ulink连接到JP4,LED_red进行跑马灯。
基本上没有增加功能,占用资源如下图:
微信图片_20210712134518.png
即一共使用了8600多个LE。由于设置ROM和RAM均为16Kx32,共使用了128KB(1Mbits)memory资源。
原则上以文件修改最少的方式。修改的RTL代码的比较如下图,左边为官方下载、右边为修改:

RTL修改

RTL修改


另,使用Keil进行调试时,需要自行做一个flash download的算法,以便让Keil知道怎样将程序下载到FPGA中CortexM0的ROM中。范例参见Keil\ARM\Flash\。
由于使用FPGA的MegaMem来作为CortexM0的程序ROM,因此算法采用直接写入无等待的方式。

由于CortexM0 DesignStart仅提供SWD调试、没有提供JTAG调试,设计的FPGA也使用了ULink2的SWD调试功能。
先做一个这样的经简单原型吧。后续有时间,再逐渐增加外设,将DE2-115的更多板上资源集成到CortexM0上。

嗯,没有使用niosII的sopc,也没有使用Cyclone V的A9双核系统,而是傻傻的使用CortexM0来试验,耗脑子而且笨拙,当作ASIC的简单系统集成来学习吧。
==============================
注:启动SWD的修改:
(1)cmsdk_mcu_system.v文件,加入SWD连接
(2)cmsdk_mcu.v关闭JTAG,另最好加入同步采样抗噪声
修改代码如下附件:
cmsdk_mcu_system.zip (10.68 KB , 下载次数: 157 )





 楼主| 发表于 2021-7-15 22:26:01 | 显示全部楼层
本帖最后由 Pasingen 于 2021-7-29 01:28 编辑


我是用DE2-115开发板和Ulink/SLink调试器,进行开发调试的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-16 00:17:24 | 显示全部楼层
本帖最后由 Pasingen 于 2021-7-16 00:24 编辑


   
舀二两爱 发表于 2021-7-15 23:07
我没有DE2-115开发板,下载器是有的,FPGA只有Xilinx的kcu105,难道这个DesignStart版本的M0必须和Altera ...


(1)当然可以是其它开发板,如我在DE2-115,在Kintex7-420T上都实现成功。你的这个kcu105很高档,肯定更没有问题;
(2)Keil下载器必须找到CortexM0,找不到的话Keil的Debuge内是空的。我是从CortexM0 Start的RTLSim环境下移植的
(3)RTL环境里,SWD没有连接。找到cmsdk_mcu_system.v文件里的这两行:  .CDBGPWRUPREQ  (),  .CDBGPWRUPACK  (1'b0),,修改为:  .CDBGPWRUPREQ  (CDBGPWRUPREQ),  .CDBGPWRUPACK  (CDBGPWRUPACK),
(4)memory使用FPGA的宏来定义,注意用作程序的存储器,引入写功能,以便Keil能够通过SWD端口来调试;
(5)Keil的flash编程器,按照MDK Keil的flash下例子来修改,注意分配的CortexM0的程序存储器地址空间和数据存储器地址空间

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-16 10:45:07 | 显示全部楼层
本帖最后由 Pasingen 于 2021-7-16 11:25 编辑

(1)cmsdk_mcu_system.v文件,加入SWD连接
(2)cmsdk_mcu.v关闭JTAG,另最好加入同步采样抗噪声

cmsdk_mcu_system.zip

10.68 KB, 下载次数: 19

回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-22 21:08:18 | 显示全部楼层
本帖最后由 Pasingen 于 2021-7-23 07:27 编辑


   
2006_forks 发表于 2021-7-22 13:54
请问flash算法是怎么弄的呀?我试着改了下但是一直报错,“Cannot Write to RAM for Flash Algorithms !” ...


回答重复,删除


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-22 21:12:42 | 显示全部楼层
本帖最后由 Pasingen 于 2021-7-23 07:26 编辑


   
2006_forks 发表于 2021-7-22 13:54
请问flash算法是怎么弄的呀?我试着改了下但是一直报错,“Cannot Write to RAM for Flash Algorithms !” ...


回答重复,删除


回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-22 21:17:29 | 显示全部楼层


   
2006_forks 发表于 2021-7-22 13:54
请问flash算法是怎么弄的呀?我试着改了下但是一直报错,“Cannot Write to RAM for Flash Algorithms !” ...



我是用SRAM作为Flash的,就是很简单的写入。如下附件:
FPGADEMO.zip (21.66 KB , 下载次数: 55 )

========================================
觉得报错,可能出现的情况有:
(1)Flash编程算法;
(2)FPGA的程序存储器不能编程写入;
(3)地址分配错误。
请做以上三者的检查。



回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-5 09:28:23 | 显示全部楼层


   
LuiLui 发表于 2021-10-1 09:30
请问flash download算法的范例在哪


18楼
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-9-16 15:00 , Processed in 0.020647 second(s), 5 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表