【Ultrascale+ MPSOC学习记录】5、PS端的RTC中断学习

【Zynq UltraScale+ MPSoC解密学习8】Zynq UltraScale+的RTC 目录 一、介绍 二、功能描述 2.1 RTC操作 2.2 原理图 ​2.3 接口和信号 2.4 秒计数器 三、时钟校准 四、RTC寄存器 ​五、配置步骤 5.1 初始化RTC步骤 5.2 设置时间 一、介绍 实时时钟(RTC)单元为整个系统和应用软件提供了一个精确的时间基准。为了提升时钟精度,RTC还包括校准电路,用来抵消温度和电压波动。 RTC由VCC_PSAUX或... 阅读详情

按照alinx的学习教程,学习了hello world,接着就是学习RTC中断了。
教程中介绍了MPSOC的各种中断基本概念,我就挑着总结了:

RTC介绍

Zynq Ultrascale+ MPSOC的RTC可以由VCC-PSBATT供电,只需要一个纽扣电池,板子断电后,它还可以继续计时。
在这里插入图片描述

中断介绍

Zynq Ultrascale+ MPSOC含有APU和RPU,也是就A53和R5。各自有个中断控制器,A53对应的是GICv2、R5对应的是GICv1。
在这里插入图片描述

RPU的中断控制器

在这里插入图片描述
图中可以看到有三种中断源:
PPI:私有外设中断,只能对固定的core有效;
SPI:共享外设中断,可不是flash那个spi哈,我第一眼看到就整混了;
SGI:软件中断,用于软件主动产生中断;
然后就是介绍一堆寄存器,具体去参考ug1085吧。

APU的中断控制器

在这里插入图片描述
GICv2将中断分成了两个组,group0和group1,其中:
group0是安全中断,由nFIQ驱动;
group1是非安全中断,由nIRQ驱动;

中断号分配如下:
在这里插入图片描述
然后就是描述什么中断优先级、分组什么的,好特么烧脑,先不管了。直接跟着后面学,用到再说。

Vitis工程搭建

吸取之前的教训,我们基于之前的vivado工程生成的xsa文件,重新建一个vitis工程文件夹,Launch Vitis IDE后,我们这次不建APP工程,先只建立一个hardware平台:
在这里插入图片描述
选择vivado工程导出的xsa文件,然后建立好后就只有platform工程:
在这里插入图片描述
然后直接找RTC的例子工程:
在这里插入图片描述
在这里插入图片描述
选择其中的周期中断例子,点击OK就导入了:
在这里插入图片描述
哎哟,不错哦,直接就有现成的工程:
在这里插入图片描述
然后直接build这个例子工程。

下载调试

接上下载器和串口线,直接右键Run As试试,发现成功运行起来了:
在这里插入图片描述
这就完了?感觉没学会啊,不行,我得看看example代码。

运行完程序回头学习

首先看main函数里面,直接调用了RtcPsuPeriodicAlarmIntrExample,传递了中断控制器实体、RTC实体、RTC设备ID、RTC中断ID参数;
跟踪RTC_ALARM_INT_IRQ_ID可以查到,这玩意儿在xparameters_ps.h中定义的,值是:26+32
为毛是这个值呢?我从ug1085找到RTC的框图:
在这里插入图片描述
发现Alarm中断号确实就是58,哎,不管了,xilinx把这些编号都写在了xparameters_ps.h文件中,以后找define名字就行,别纠结具体编号了。

然后进入example函数中,发现有以下步骤:

Config = XRtcPsu_LookupConfig(DeviceId);
Status = XRtcPsu_CfgInitialize(RtcInstPtr, Config, Config->BaseAddr);

这两步就是去初始化RTC,设置基地址什么的。
然后还做了一个自测试:

Status = XRtcPsu_SelfTest(RtcInstPtr);

大概就是去读写了一些RTC的一个寄存器,看OK不OK。
然后就是打印了:

xil_printf("\n\rDay Convention : 0-Fri, 1-Sat, 2-Sun, 3-Mon, 4-Tue, 5-Wed, 6-Thur\n\r");
xil_printf("Current RTC time is..\n\r");
CurrentTime = XRtcPsu_GetCurrentTime(RtcInstPtr);
XRtcPsu_SecToDateTime(CurrentTime,&dt0);
xil_printf("YEAR:MM:DD HR:MM:SS \t %04d:%02d:%02d %02d:%02d:%02d\t Day = %d\n\r",dt0.Year,dt0.Month,dt0.Day,dt0.Hour,dt0.Min,dt0.Sec,dt0.WeekDay);

去RTC取CurrentTime,然后赋值到dt0,再打印出来;
对应这段打印:
在这里插入图片描述
接着就是去设置中断系统,再设置RTC的中断回调函数:

Status = SetupInterruptSystem(IntcInstPtr, RtcInstPtr, RtcIntrId);
XRtcPsu_SetHandler(RtcInstPtr, (XRtcPsu_Handler)Handler, RtcInstPtr);

然后就是去获取时间、设置alarm值、等待计数到10超时;

本来到这里基本就学习完毕了;
但是我发现了xilinx的一个bug,我从打印看,每次2s左右打印两行;
这不科学啊,不是应该1s打印一次,10s超时吗?
经过排查,发现应该是进中断后,未清除中断,导致重复进入中断了,修改代码后,发现打印正常了:
在这里插入图片描述

void Handler(void *CallBackRef, u32 Event)
{
	XRtcPsu *RtcInstPtr = (XRtcPsu *)CallBackRef;
	/* Alarm event */
	if (Event == XRTCPSU_EVENT_ALARM_GEN) {
		PeriodicAlarms++;
		xil_printf("%dSec Periodic Alarm generated.\n\r",PeriodicAlarms);
	}
	XRtcPsu_SetInterruptMask(RtcInstPtr, XRTC_INT_EN_ALRM_MASK );
}

在这里插入图片描述
看来xilinx也特么的不严谨 !!!

【Zynq UltraScale+ MPSoC解密学习5】Zynq UltraScale+的RPU 目录 一、简单介绍 二、Cortex-R5的结构(单核) 2.1 Data Processing Unit 2.2 Load/Store Unit 2.3 PreFetch Unit 2.4 L1 memory system 2.4.1 Icache和Dcache 2.4.2 Memory Protection Unit(MPU) 2.4.3 Tightly-Coupled Me... 阅读详情

相关推荐

Zynq MPSoC PS SYSMON裸机开发:温度电压监测与Vitis实战

在嵌入式系统开发中,实时监控芯片内部状态是确保系统稳定性和可靠性的关键环节。内存映射I/O(MMIO)作为CPU与硬件外设通信的核心机制,允许软件通过读写特定内存地址来直接控制寄存器,从而访问如ADC、温度传感器等片上监测模块。其技术价值在于提供了高效、低延迟的硬件交互方式,是裸机及底层驱动开发的基石。这一原理广泛应用于处理器内部健康监测、电源管理以及工业控制等场景。以Xilinx/AMD Zynq UltraScale+ MPSoC平台为例,其集成的PS SYSMON模块正是通过APB总线进行内存映射访问

weixin_30580341的博客 342

open_prj12_MPSoC RTC中断

/

坏孩子的诺亚方舟 920

SoC权衡设计:12种边缘AI硬件组合的刚性约束与工程实践

SoC(片上系统)是嵌入式AI落地的核心载体,其设计本质是在功耗、性能、面积(PPA)等物理约束下进行多维资源分配。理解SoC权衡,需超越参数表,深入启动流程、运行时带宽竞争、休眠功耗控制及协议栈耦合(如AXI/TileLink)等真实工程场景。尤其在边缘AI部署中,NPU算力、内存带宽、外设协同与散热边界共同构成不可回避的‘刚性约束’。本文聚焦12类典型边缘AI硬件组合,揭示从STM32 TinyML到RK3588多模态推理中,芯片子系统间必须形成的耦合关系与取舍逻辑,为选型、调试与量产提供可复用的权衡决

weixin_33826609的博客 382

【正点原子FPGA连载】第十二章PS端RTC中断实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南

RTC(Real_Time Clock)实时时钟模块是由集成电路构成,通常被称为时钟芯片。实时时钟(RTC)单元的作用一般是为系统和应用软件提供准确的时基,为了提升时钟精度,RTC还包括校准电路以抵消温度和电压波动。RTC由VCC_PSAUX或VCC_PSBATT电源供电,当辅助电源(VCC_PSAUX)可用时,RTC使用它来保持计数器工作;当辅助电源不可用时,RTC自动切换到电池电源(VCC_PSBATT)工作。

weixin_55796564的博客 1663

ZYNQ学习之旅--PS_TIMER

目录标题简介BD设计软件设计 简介 在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私 有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(GT)。除此之外,PS 中还有一个 24 位的系统看门狗定时器(SWDT)和两个 TTC(Triple Timer Counters)。系统看门狗定时器可以在系统发生灾难性的故障时(如 PS 中的 PLL 工作异常)发出信号,使得系统程序重新启动,保证了系统安全可靠的运行。T

qq_36662353的博客 1285

MPSOC上PS和PL基于bram进行数据交互(linux)

MPSOC上PS和PL基于bram进行数据交互(linux) alvin.lu@...

luhao806的专栏 2119

ZYNQ笔记(九):定时器中断

ZYNQ学习笔记

2303_76814451的博客 1286

VIL-SLAM论文翻译:Stereo Visual Inertial LiDAR Simultaneous Localization and Mapping

文章目录写在前面摘要1.引言2.相关工作3.系统概述4.视觉前端5.双目视觉惯性里程计A. IMU预积分因子B. 非结构化视觉因子C. 优化和边缘化6. 激光建图A. LiDAR扫描去畸变B. 帧到地图配准7. LiDAR增强的闭环A. 回环检测B. 回环约束C. 全局位姿图优化D. 重定位8. 实验结果A.平台和软件B.测试和结果C. EuRoCMAV数据集测试9.结论 写在前面 写作参考: robot L 开源代码: 开源代码链接 论文原文: 原文链接 摘要 SLAM是移动和空中机器人的一项基本任务

JaydenQ的博客 2320

边缘AI SoC六维权衡:功耗、带宽、内存、外设、时序与兼容性协同设计

SoC(系统级芯片)是边缘AI落地的核心载体,其性能不仅取决于标称算力,更由功耗、内存带宽、外设协同、启动时序、电源管理及固件兼容性六大物理维度的耦合关系决定。理解SoC内部子系统(如NPU、ISP、DMA、DDR控制器)间的硬件契约与数据通路重构逻辑,是实现低延迟、高能效、强鲁棒边缘推理的关键。本文聚焦‘最懂权衡的芯片SoC’这一工程实践命题,深入解析12类典型场景下经过量产验证的SoC子系统协同配置范式,覆盖工业质检、车载DMS、电池供电语音唤醒等真实用例,并融合RK3588、i.MX8MP、ESP32

weixin_34341229的博客 266

RTL8306MB交换芯片驱动开发避坑指南:从硬件接线到SDK移植全流程解析

本文详细解析了RTL8306MB交换芯片驱动开发的全流程,重点从硬件接线、SDK移植到实战调试。针对RMII模式下的常见问题,特别是TXEN与RXDV信号交叉连接等关键“坑点”,提供了清晰的排查指南和解决方案,旨在帮助嵌入式工程师高效完成网络设备开发。

274

DP_AUX辅助通道介绍

DisplayPort(简称DP)是一个由PC及芯片制造商联盟开发,视频电子标准协会(VESA)标准化的数字式视频接口标准。其中辅助通道(AUX)是一条独立双向半双工的传输通道,它也是一对差分信号线。其数据传输速率1Mbps,用来传输配置参数与指令。

cjie221的博客 5341

汇编语言随笔(10)-内中断及实验12(返回到dos的中断处理程序)

内中断的机制,以及返回到dos的中断处理程序编写

Little_ant_的博客 1302

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

先把这连个都添加到场景中,然后把kinect的depth相机拖到vision sensor中,把kinect的script也拖到vision sensor中,同时要注意修改深度相机的坐标,及修改script,删掉/rgb部分。由于需要导入到仿真场景中PDF文件不能直接导入,所以需要生成图下文件,使用windows自带的画图工具,生成以厘米为单位的图像格式,大小和标定板的设置大小一直。可以生成需要用的标定板的文件,设置标定板的大小,棋盘格的大小,等相关的参数,之后可以保存PDF文件。设置plane的大小。

hong3731的专栏 1753

Zynq 电源

fpga

sea 8475

学习记录(十一)--Pattern Recognition投稿记录

上一周特别忽然通知统计建模要答辩,确定是否晋级国赛,一直在准备答辩的事情,所以上一周没有总结周汇报,深刻检讨!!!不过结果是好的,我们组第二名晋级哦。这周主要是跟大家分享一下我投稿PR(Pattern Recognition)的一个时间线,以及投稿后的工作。一、PR从投稿到接收的时间线2025.4.3 Major Revision(ddl4.23) 当时正在弄比赛和另一个着急推进的文章2025.5.30 Minor Revision 这次小修基本上只有一些格式和简单一点点问题。

qq_54949944的博客 1913

辉芒微教程第五篇《定时器0实现LED灯闪烁》

定时器定时器,一听就跟个闹钟似的,对于嵌入式定时器大部分的应用中,也的确可以这么理解,但是这只能肤浅地这么理解,实际其功能不仅仅是用来计数定时,但是对于我们这种8位单片机,这么理解就够了。

qq_41809823的博客 722

ZYNQ UltraScale MPSOC,使用PL端AXI_UART16550IP核,且在PS端控制下实现RS485通信,接收不同帧长报文数据-----中断方式

ZYNQ UltraScale MPSOC,使用PL端AXI_UART16550IP核,且在PS端控制下实现RS485通信,接收不同帧长报文数据-----中断方式。硬件环境:Xilinx ZynqMP XCZU15eg-ffvb1156-2-i软件环境:

Howe Tan 浪漫的季节的博客 7602

Android Audio音量——音频类型新增(九)

在实际开发中,经常会遇到需要新增一个音频类型(usage)的需求,这里我们简单介绍一下需要修改的代码。

小旭的专栏 1570

Ultrascale+ ZYNQ UART(二) 接收不定长数据实例

Ultrascale+ ZYNQ UART(二) 接收不定长数据实例

杰克拉力船长个人博客 1783

vue2/3 - 详细对接海康监控实时视频预览和录像回放功能,vue接入使用海康视频监控播放器实时推流等功能,支持hik/rtsp/rtmp/hls/ws取流协议(详细教程与示例代码,一键复制开箱即用

vue2,vue3,海康,vue海康视频监控,海康开放平台,如何接入海康的实时监控,海康威视,Vue实现海康监控视频播放,vue3对接海康视频监控播放、回放的方法流程,实现海康H5视频插件播放视频的实例,web网页接入海康,海康威视的视频vue的录像回放和实时预览,前端vue3项目接入海康威视h5player.js播放器,vue2接入海康威视视频监控平台,使用海康监控H5视频播放,对接海康视频监控,海康视频web插件,web前端在vue中通过海康插件嵌入视频,实现实时预览,vue3海康监控播放器组件,vue

✅ 精选推荐文章 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Xilinx ZYNQ UltraScale+系列产品介绍

关注、星标公众号,精彩内容每日送达 来源:网络素材Zynq UltraScale+MPSoC是Xilinx推出的第二代多处理SoC系统,它在第一代Zynq-7000的基础上进行了全面升级。本文主要介绍一下Xilinx ZYNQ UltraScale+系列产品知识,包括主要优势和各子系列产品的特点。一、介绍该芯片基于业内最先进的16nm FinFET+工艺制程打造,整合了64位ARM Corte...

HackEle的博客 3340

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

xilinx apu ,rpu特点 及通信

Zynq UltraScale+ MPSoC的PS有以下主要特点: 一个四核64位ARM Cortex-A53处理器,带L1和L2级缓存和ECC功能,可单独上电和关电; Cache一致性互联单元为PS和PL提供双向Cache一致性保证; SMMU(系统内存管理)单元用于PS和PL虚拟内存管理; 双核ARM Cortex-R5F处理器(带浮点扩展),可运行在锁步模式或独立工作模式,包含Cac...

暗夜 8741

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[米联客-XILINX-H3_CZ08_7100] FPGA_SDK入门篇连载-12 PS IIC-RTC实验

趁热打铁,我们刚刚在上一节课掌握了I2C利用ZYNQ I2C总线控制器读写EEPROM,本节课继续利用I2C总线控制器实现对RTC时钟芯片,DS1307的读写访问。有了前面的基础,这节课内容学习起来很轻松。 本文实验目的: 1:了解DS1307/1337的寄存器,以及通过I2C读写DS1307/1337的时序 2:掌握vitis-sdk下对DS1307/1337的编程,设置时间和读取时间

米联客(milianke) 1182

【Zynq UltraScale+ MPSoC解密学习2】Zynq UltraScale+的电源系统

目录 一、电源优化方法 1.1 功能禁用 1.2 动态功耗管理 (Dynamic Power Management) 1.3 频率缩放 1.4 时钟门控 1.5 使用PL加速 二、四大功耗域及PMU 2.1 电池功耗域 2.2 低功耗域 2.3 全功耗域 2.4 PL功耗域 2.5 PMU 一、电源优化方法 相对于上一代Zynq器件,Zynq UltraScale+更加...

xinxulsq的博客 3956

MPSOC之8——启动及错误处理

有了BOOT.BIN(fsbl+pmu+atl+uboot)、uImage、uramdisk.image.gz,dtb文件,就可以启动了。把上述文件统统拷贝到SD卡,并设置开发板为SD卡启动。 0. U-BOOT启动参数 设置启动参数,然后启动 fatload mmc 0 0x1000000 uImage;fatload mmc 0 0x2000000 uramdisk.image.gz;fatl...

weixin_30824277的博客 2591
上一篇: 【Ultrascale+ MPSOC学习记录】4、用批处理文件烧写MPSOC的QSPI
下一篇: 【Ultrascale+ MPSOC学习记录】6、从eMMC启动翻车
Ryo891012
博客等级 码龄18年 52粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值