Zenq系列FPGA双核ARM裸机异步程序实现

本文介绍了在Zenq系列FPGA上,如何实现双核ARM处理器的异步程序设计。首先阐述了两个处理器的关系,接着详细讲解了实现过程,包括BootLoader和Linker Script的修改,特别是CPU0和CPU1的内存分配。CPU0启动CPU1,并在OCM区创建控制块以实现两核间的同步和互斥。
摘要由CSDN通过智能技术生成

大门牙原创,欢迎随意转载,批评,引用。

一. 两个处理器之间的关系

Zenq系列的两个ARM处理器核心可以分别工作,其公用资源有cache、DDR、所有外设、OCM存储器等。
可以将其看成是两个线程,实际使用时,可以通过线程同步、互斥的方式来实现裸机情况下的简单双核调度与使用。

二. 实现方法

准备工作

由于两个核心的内存空间是公用的,硬件上不作区分,也就是说每个核心都可以访问到完整的DDR空间。
因此,需要在逻辑上将两个核心使用的内存空间区分开来。例如
CPU DDR
CPU0 0 ~ 200MB
CPU1 200M ~ 512MB

开发时,需要建立3个application工程
1. FSBL
2. CPU0_app
3. CPU1_app

BootLoader的改动

对于ARM架构而言,不区分程序空间和数据空间,因此程序加载时也应该加载到各自对应的空间中。对于BootLoader而言,需要完成4件事情。
1. 芯片自检,加载驱动
2. 载入bit stream,并通过VCAP模块写入FPGA
3. 载入CPU0的程序和CPU1的程序
4. 将CPU0 hand off 到CPU0的用户程序上
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值