
zynq_axitimer 中断裸跑和linux下驱动实验
5星
- 浏览量: 0
- 大小:None
- 文件类型:DOCX
简介:
在Zynq-7000 SoC平台上实施AXI时钟的直接运行,并对Linux驱动进行功能实现测试。
在Xilinx Zynq-7000 SoC架构中,AXI timer 被视为一种高效实现定时器功能的外围设备。该计时器能够产生多种定时器信号,并通过中断机制实现对实时任务的高效调度。文章旨在深入探讨AXI timer在Zynq-7000 SoC架构中的应用,涵盖从硬件基础到基于Linux操作系统的完整实现过程。本研究的实验环境设置如下:硬件配置包括...
* Zynq实验板芯片型号为7010
* 采用 Vivado 2015.4 工具进行开发设计
* 设备树配置使用 device-tree-xlnx-xilinx-v2017.1 参数设置以优化运行效率
* 预装内置于 Uboot 系统中的版本为 u-boot-xlnx-xilinx-v2017.1,支持高效的 boot 过程管理
* 开发板预装的 Linux 核心内核版本为 xlnx-xilinx-v2015.4,该内核基于基础版本 linux4.0.0 进行了相应优化和调整以提升性能表现
二、无约束优化实验流程
1. 构建Vivado工程,并配置AXI timer中断 irq_f2p[15:0] 以及Zynq相关参数设置。
2. 在Vivado中生成bitstream后进行下载至开发板上。
3. 在SDK环境中搭建驱动工程并完成试验下载流程。
三、Linux驱动的开发与实现
1. 搭建一个新的 Linux 驱动工程,并集成 AXI timer 的驱动代码。
2. 在开发过程中,使用了 Xilinx 提供的驱动库,并包含以下头文件:xscugic.h、xil_types.h 和 xscutimer.h 等。
3. 开发出了 Timer_InterruptHandler 函数,以有效处理 AXI timer 发来的中断请求。
4. 驱动代码中采用了 Xil_In32 和 Xil_Out32 这两个函数来访问和操作 AXI timer 的寄存器信息。
四、驱动实现细节 本部分将详细阐述如何通过系统机制确保各项功能的顺利运行。
在驱动代码中,我们声明了一个XScuGic结构体作为中断控制器配置参数的存储空间,并随后定义了Timer_InterruptHandler函数用于处理AXI定时器中断请求。该函数首先读取当前计时器值并将其与最大值LOAD_VAL进行比较,若达到最大值,则将计时器设置为无效状态并输出相应的计时器工作状态信息。
本节将汇报实验结果分析的具体情况及评估指标的表现数据基于裸机运行及Linux系统驱动的实验,我们得以实现AXI计时器的功能,并通过实验手段成功验证了Zynq-7000 SoC系统中AXI计时器的功能特性。六、总结与结论AXI定时器是Zynq-7000 SoC中一种高效定时器模块,支持生成各种定时器信号并配备中断机制以实现实时任务调度功能。通过本文的实验,我们掌握了在Zynq-7000 SoC上使用AXI定时器的方法,实现了从裸机态到基于Linux驱动的完整过程。
全部评论 (0)


