ARM公司已经开放ARM Cortex M0 内核,直接可以在ARM官网开拓者页面进行下载,须要注册账号。
下载压缩包解压目录如下:

个中AT510-MN-80001-r2p0-00rel0\RevC\SMM_M0DS\synthesis路径下有个Quartus 实例工程,由于本文利用的是xilinx的ARTIX-7系列FPGA芯片开拓板为AX7035,以是参照实例工程进行移植。
打开Vivado 2022.1创建新的工程,创建顶层fpga_top.v,定义模块接口
利用利用时钟IP创建PLL模块
为了标识易懂方便模块名以及旗子暗记进行改名,可以根据自己的设计须要添加时钟输出路数
点击ok完成PLL模块设置,回到顶层文件fpga_top.v进行例化pll:
回到下载好的M0内核根目录下:
复制cores和logical两个文件夹内容到工程目录下并新建文件cmsdk,回到AT510-MN-80001-r2p0-00rel0\systems\cortex_m0_mcu\verilog路径将:
复制到新建cmsdk文件夹下,终极目录如下:
在工程中先添加cmsdk文件,自顶向下,添加所需文件
创建一个hex文件作为M0内核镜像文件,添加到工程,将其文件属性改为内存文件
回到顶层,在顶层列化cmsdk_mcu:
利用SWD接口。由于是在FPGA上进行移植,ROM和RAM例化需修正参数,打开cmsdk_mcu对ROM和RAM例化参数进行修正,修正原则参照自己FPGA的资源进行修正,对付内存类型参照下图文件内的注释进行理解:
由于ROM列化利用FPGA RAM模块,以是打开cmsdk_ahb_rom模块
找到cmsdk_fpga_rom #(.AW(AW), . file (filename)) u_fpga_rom
改为cmsdk_fpga_sram #(.AW(AW), .MEMFILE(filename)) u_fpga_rom
绑定干系引脚
综合剖析天生比特流下载到FPGA或者外部存储器中,
烧到FPGA完成,由于直接烧录到FPGA掉电易失落,可以烧录到FPGA外部存储芯片,至于为何参考该FPGA数据手册操作如下
创建Keil cotex M0测试工程,利用JLink SWD将对付接口连接,可以通过Keil读取到ID号
Cortex M0芯片烧录算法:
在Keil的pack包路径下有个样板,将其复制出来进行修正,
编译天生keil相应的烧录算法,将烧录算法文件复制到keil 相对付路径,添加烧录文件到上述的测试keil工程中去
编写大略测试程序
编译工程点击下载
下载成功,点击仿真
将全局变量添加到监视窗口,全速运行看变量是不是在变动
外设测试,根据参照官方给出的文档AT510-MN-80001-r2p0-00rel0\documentation下进行编写代码:
AHB地址映射为:
内存地址
功能
0x00000000-0x003FFFFF
ROM,大小为2^AW
0x20000000-0x207FFFFF
RAM,大小为2^AW
0x40000000-0x4000FFFF
APB外设挂载地址
0x40010000-0x40010FFF
GPIO #0
0x40011000-0x40011FFF
GPIO #1
0x4001F000-0x4001FFFF
系统掌握寄存器
0xF0000000-0xF0000400
系统ROM表
APB地址映射为:
内存地址
功能
0x40000000-0x40000FFF
Timer0
0x40001000-0x40001FFF
Timer1
0x40002000-0x40002FFF
Dual Timer
0x40004000-0x40004FFF
UART0
0x40005000-0x40005FFF
UART1
0x40006000-0x40006FFF
UART2
0x40008000-0x40008FFF
Watchdog
0x4000B000-0x4000BFFF
APB test slave
到此大略的移植就搞定了,砍掉官方例程VGA、SPI等,移植最大略的内核到FPGA,其他外设拓展或者优化可根据自己的想法设计好挂载上去即可。
补充内容GPIO测试:
1.创建设备头文件
2.编写设备头文件定义GPIO寄存器构造体以及地址
在main.c文件加入设备头文件进行GPIO程序编程,根据FPGA开拓板硬件事理图以下:
回到FPGA工程,查找到绑定到编号GPIOx.x 进行编程实现掌握LED闪烁;
测试代码
视频加载中...








