ZYNQ开发进化史——结构体对硬件的使用

本文介绍了如何利用C语言结构体的内存分配机制优化ZYNQ FPGA设备的访问,提升代码可读性和模块化。通过定义结构体Multiplier,可以更直观地操作挂在AXI总线上的设备,并在中断处理中通过结构体指针传递设备信息,避免了直接使用地址读写带来的不便。遵循结构体内存分配规则,确保地址对齐,是编写高效且易维护的驱动的关键。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上一个篇章中,我们已经能把一个自己写的在FPGA上的设备挂在AXI总线上了,这时,其实在vivado中软件回帮你自动连接并且分配了基地址。例如,我们现在有这样一乘法器设备,它的地址对应如下:

0X43C0_0000~0X43C0_0001 A[15:0]
0X43C0_0002~0X43C0_0003 B[15:0]
0X43C0_0004~0X43C0_0007 C[31:0]

其中每个地址都是可读可写的。做过ZYNQ裸跑开发的一定知道 Xil_In8(),Xil_In16(),Xil_In32(),Xil_Out8(),Xil_Out16(),Xil_Out32(), 这些函数的存在,他们的作用就是对指定地址进行读写,虽然这些是宏函数效率也很高但是代码很不友好,可读性很差。但是既然这些挂在总线上的东西与内存无异,我们自然可以用对应大小的指针来访问他们:

unsigned short *A = 0x43C00000;
unsigned short *B = 0x43C00002;
unsigned int   *C = 0x43C00004;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值