今天,我们聊聊双核通信。双核通信的基础是已经建立好了双核工程,且配置完成。两个cpu之间传递数据,采用了共享内存,共享内存设置在ocm(on chip memory)内。
在没有做其他设置的情况下,zynq上电后地址空间分别如下图所示:
ocm共256kb按照64kb分为4块,其中前三块在sdk中表述为ram0占192kb处于地址空间的最开头和ddr共用地址空间,最后一块64kb处于地址空间的最后。zynq的ddr固定占地址空间的最开头1gb字节因而zynq的ddr最大容量就只有1gb。
为了避开ocm从上图可知实际使用的ddr只有1023mb(最开头的1mb被保留避开ocm的前三块)。从0x40000000到0xdfffffff的2gb空间留给了自定义ip或者其他ip的寄存器,从bsp的xparameters.h可以看出在pl部分添加的ip其基址都是从0x40000000开始的,而zynq自己的寄存器则从0xe0000000开始编制,具体寄存器内容请查阅ug585的附录b register details。
其实standalone作为基础的bsp所作的工作都是在通过指针访问各个寄存器而已,在不考虑安全性的前提下可以完全不用bsp直接操作寄存器对zynq进行操作。
需要在sdk中进行双核通信的设置,主要是程序的设置。
1、cpu1需要被cpu0启动
cpu0的配置
设置共享内存区域:
#define send_cpu1_status (*(volatile unsigned int *)(0xffff0000))
在主函数中添加:
xil_settlbattributes(0xffff0000,0x14de2);// cpu0中禁止ocm的cache属性
2、cpu1通信配置
cpu1的配置
设置共享内存区域:
#define send_cpu1_status (*(volatile unsigned int *)(0xffff0000))
在主函数中添加:
xil_settlbattributes(0xffff0000,0x14de2);// cpu0中禁止ocm的cache属性
3. 设置完成
双核之间通过对该内存区域进行读写操作完成通信功能。
电磁流量计、涡轮流量计和涡街流量计的优缺点分析
PCB电路板制造和铝基PCB
与传统封装相比嵌入式封装具有优势?
JMX系列医用塑料推拉式连接器:连接简单安全,可供医疗专业人员轻松使用
低功耗WiFi模块的技术发展
ZYNQ学习要点:双核通信
I2C总线电平转换芯片在安防产品的应用
农业机器人可以助力解决农业劳动力短缺 减少食物腐败等问题
罗德与施瓦茨新一代示波器R&S MXO业界最快的波形捕获率
华为手机新专利曝光,后摄相机搭载上单反镜头
LG旗下新款卷轴屏手机LG Rollable今年发布
哪个牌子的骨传导蓝牙耳机好、骨传导耳机品牌推荐
华硕ROG Strix PCIe延长线上架,采用EMI防电磁干扰设计
AI技术供不应求,看看公司如何在必备技能上培训员工填补空白?
人工智能在医疗领域应用风险很大
反相衰减器G= -0.1,它是否不稳定?
盘点影响FIP点胶加工产品质量的七大因素
智能大棚控制系统中的部分模块详解
高性能多通道音频编解码器AK4629的性能特点及应用电路
华为发布极简5G建设策略5G商业将成功可期