Zynq中断与AMP~双核串口环回之PS与PL通信

news2024/11/19 6:42:25

实现思路:

额外配置:通过PL配置计数器,向CPU0和CPU1发送硬中断。

        1.串口中断CPU0,在中断中设置接收设置好字长的数据,如果这些数据的数值符合约定的命令,则关闭硬中断,并将这部分数据存入AxiLite配置的ram中,完成以后发送软中断中断CPU1。

        2.CPU1收到软中断后,读取指定的ram数值,校验以后将其写入ram2中,如果这里不做换回可以写入其他的。写完以后发送中断给CPU0。

        3.CPU0接收到中断,读取ram2的数据,并且完成发送。

部分代码:

其中读写Bram的代码可参考:

Axi_Lite接口的IP核与地址与缓冲与AxiGP0-CSDN博客

CPU0中配置的Uart中断回调函数

        设置的是超时中断触发,set阈值那个不太好用。

void Uart0_IntrHandler(void *CallBackRef, u32 Event, unsigned int EventData)
{
	if (Event == XUARTPS_EVENT_RECV_TOUT) {
		TotalReceivedCount = EventData;
        if (TotalReceivedCount == 8 
        && RecvBuffer[0] == 0x55 && RecvBuffer[1] == 0x55
        && RecvBuffer[2] == 0x00 && RecvBuffer[3] == 0x01)
        {
            XScuGic_Disable(&GIC_SGI_instance_point, Interrupt_ID_Hardware_1);
            XScuGic_Disable(&GIC_SGI_instance_point, Interrupt_ID_Hardware_0);
            Axi_WriteRamA(RecvBuffer,TotalReceivedCount);
            printf("Close SPI\n\r");
            XScuGic_SoftwareIntr(&GIC_SGI_instance_point,
                                  Interrupt_ID_SGI_15,
                                  XSCUGIC_SPI_CPU1_MASK);
        }
        else if(TotalReceivedCount == 8 && RecvBuffer[0] == 0x66)
        {
            XScuGic_Enable(&GIC_SGI_instance_point, Interrupt_ID_Hardware_0);
            printf("Open SPI\n\r");
        }
	}
	XUartPs_Recv(&Uart_Instance_point, RecvBuffer, TEST_BUFFER_SIZE);
}

CPU1的软中断回调函数


void SGI_IntrHandler(void *CallBackRef){
    u32 origin_command;
	print("SG1!\n\r");
	Axi_ReadRamA(COMMAND_BUFFER,8);
    if(COMMAND_BUFFER[4]==0x04 && COMMAND_BUFFER[5] == 0x05 
    && COMMAND_BUFFER[6]==0x06 && COMMAND_BUFFER[7] == 0x07)
        {
            Axi_WriteRamB(COMMAND_BUFFER,8);
            XScuGic_SoftwareIntr(&GIC_SGI_instance_point, Interrupt_ID_SGI_14, CPU_id_0);
        }
}  

CPU0的软中断回调函数

void SGI_IntrHandler(void *CallBackRef){
      Axi_ReadRamB(SendBuffer,8);
      XUartPs_Send(&Uart_Instance_point, SendBuffer, 8);
	  print("SG0!\n\r");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1112589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造

在某些设计情况中,如果一些条件为真,则我们不想执行检验。换句话说,这就像是一个异步的复位,使得检验在当前时刻不工作。SVA提供了关键词“ disable iff来实现这种检验器的异步复位。“ disable iff”的基本语法如下。 disable iff (expression) <property definition> …

SystemVerilog Assertions应用指南 Chapter1.31 在属性中使用形参

可以用定义形参( formal arguments)的方式来重用一些常用的属性。属性“arb”使用了4个形参,并且根据这些形参进行检验。其中还定义了特定的时钟。SVA允许使用属性的形参来定义时钟。这样,属性可以应用在使用不同时钟的相似设计模块中。同样的,时序延迟也可以参数化,这使得属性…

微信小程序开发之自定义组件(会议OA项目其他页面搭建)

目录 前言 一、WeChat中的自定义组件 1. 基本概述 2. 包含文件及作用 3. 自定义组件的作用 4.使用步骤&#xff1a; 二、tabs组件及会议管理布局 tabs组件 1. 创建组件 准备 创建 使用组件 会议管理布局 tabs.wxml指定组件模版 tabs.wxss完成样式设计 tabs.js定义属…

Ubuntu docker安装mysql

本文介绍如何在docker中安装mysql&#xff0c;之前有尝试过先在docker中安装一个ubuntu到镜像&#xff0c;然后进去再去安装mysql相关的东西&#xff0c;发现不行&#xff0c;这边整理一下一个可行的方式。 在下载镜像的时候&#xff0c;直接下载mysql镜像。 1.搜索镜像 doc…

【C++】类和对象(初阶认识)#下篇#

目录 初始化列表 匿名 explicit、隐式类型转换、连续构造的优化 友元 类中的静态变量 类中类 话接上回 运算符重载 内置类型是祖师爷定义的&#xff0c;赋值、或 加减乘除 祖师爷自己知道这些运算符应该进行怎么样的操作&#xff0c;平常给我们直接用就好&#xff1b;但是自定义…

力扣刷题 day49:10-19

1.二进制手表 二进制手表顶部有 4 个 LED 代表 小时&#xff08;0-11&#xff09;&#xff0c;底部的 6 个 LED 代表 分钟&#xff08;0-59&#xff09;。每个 LED 代表一个 0 或 1&#xff0c;最低位在右侧。 例如&#xff0c;下面的二进制手表读取 "4:51" 。 给你…

根据SpringBoot Guides完成进行示例学习(详细步骤)

目录 1.打开Spring | Guides官网&#xff0c;或者直接搜索springboot都可 2.选择要学习的内容 3.根据提示的网址&#xff0c;Git到本地 4.将文件用IDEA打开&#xff0c;根据教程完成示例&#xff0c;这里不做细致讲解 5.运行项目 6.在终端查看运行结果 以Scheduling Task…

蓝桥每日一题(day2 暴力)扫雷 easy

ac代码&#xff1a; #include <iostream> using namespace std; const int N 110;int n, m; int arr[N][N]; int dx[8] {0, 1, 0, -1, -1, 1, -1, 1}; int dy[8] {1, 0, -1, 0, -1, 1, 1, -1}; int main() {cin >> n >> m;for(int i 0; i < n; i )fo…

ESP32出现喂狗失败处理办法

前言 &#xff08;1&#xff09;今天在使用ESP32S3的时候&#xff0c;做移植测试的时候&#xff0c;不知道为什么出现了看门狗报错。简单查了一下&#xff0c;测试发现是任务阻塞导致的。 报错 &#xff08;1&#xff09;报错信息如下&#xff1a; <1>E (5368) task_wdt:…

tcp专题

目录 一.TCP的连接建立 1.1面向连接 1.2TCP报文结构 1.3TCP三次握手 1.4TCP的状态变化 1.5为什么必须是三次握手&#xff0c;而不是两次或者四次 二.TCP的连接断开 2.1TCP的"四次挥手 2.2TCP的状态变化 2.3为什么要有TIME_WAIT状态 2.4为什么TIME_WAIT状态的时…

[Hive] explode

在 Hive 中&#xff0c;explode 函数用于将数组&#xff08;Array&#xff09;或者Map类型的列拆分成多行&#xff0c; 每个元素或键值对为一行。这允许我们在查询中对数组或 Map 进行扁平化操作。 下面是使用 explode 函数的示例&#xff1a; 假设我们有一个包含数组字段的表…

【牛客网】另类加法

题目 思路 考虑使用位运算进行解决两个数异或的结果是两个数相加不考虑进位的结果(不考虑进位) 两个数与左移一位的结果,是两个数相加之后进位的结果(只考虑进位)结论:两个数相加,如果不需要进位,即与左移等于0,则这个给值就是两个数相加 的值 代码 import java.util.*;publ…

npm 执行命令时报错npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve

npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: vue-office/docx1.3.0 npm ERR! Found: vue-demi0.14.6 npm ERR! node_modules/vue-demi npm ERR! vue-demi“^0.14.6” from the root project npm ERR! vue-demi“*” from …

C++初阶--C++入门(2)

C入门&#xff08;1&#xff09;链接入口 文章目录 内联函数auto关键字注意事项 基于范围的for循环(C11)nullptr 内联函数 以inline修饰的函数叫做内联函数&#xff0c;编译时C编译器会在调用内联函数的地方展开&#xff0c;没有函数调用建立栈帧的开销&#xff0c;内联函数提…

运筹优化 | 分支定界算法(Branch and Bound)Python求解整数规划

from gurobipy import * import copy import numpy as np import matplotlib.pyplot as plt plt.rcParams[font.sans-serif][SimHei]定义了一个线性松弛问题&#xff0c;并用Gurobi求解 initial_LP Model(initial LP) # 定义变量initial_LP&#xff0c;调用Gurobi的Model&…

运机转债上市价格预测

运机转债-127092 基本信息 转债名称&#xff1a;运机转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;7.3亿元。 正股名称&#xff1a;运机集团&#xff0c;今日收盘价&#xff1a;16.2元&#xff0c;转股价格&#xff1a;17.67元。 当前转股价值 转债面…

【AIGC核心技术剖析】基于大规模弱监督的鲁棒语音识别【附源码】

论文研究了语音处理系统的能力&#xff0c;该系统只是为了预测互联网上的大量音频成绩单而训练的。当扩展到 680,000 小时的多语言和多任务监督时&#xff0c;生成的模型可以很好地推广到标准基准&#xff0c;并且通常与先前的完全监督结果竞争&#xff0c;但在零镜头传输设置中…

【ArcGIS绘图系列1】在ArcGIS中制作柱状图与饼状图

成图展示 图形出处&#xff1a;J2023-Assessment of agricultural drought based on multi-source remote sensing data in a major grain producing area of Northwest China 实现步骤 第一步 查看数据信息 数据输入到ArcGIS中&#xff1a;包含数据表和shp文件 1、shp文件…

ZXing.Net 的Core平台生成二维码

一、引用 二、代码 帮助类 /// <summary>/// ZXing.NET 二维码帮助类/// </summary>public class ZXingHelper{/// <summary>/// 站点二维码的目录/// </summary>private static string QRCodeDirectory "QRCode";/// <summary>/// 使…

KingBase服务器参数配置(Kylin)

主配置文件/KingbaseES/V8/data/kingbase.conf # 可通过find查找 [默认存储在database cluseter目录中] find / -name kingbase.conf辅助参数文件kingbase.auto.conf # 可通过find查找 [默认存储在database cluseter目录中] find / -name kingbase.auto.conf查看当前会话的参…