结构体位操作--反汇编(二)

本文探讨了在FPGA中使用C语言结构体位域操作32位寄存器时遇到的问题。PC上执行正确,但FPGA上由于其32位编址特性导致数据丢失。解决方案涉及使用共用体以适应FPGA的内存访问方式。位域结构体在提供便利和注释的同时,也可能引发问题。

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

       有了第一篇文章的基础,现在我们来分析一个问题:假设某个FPGA的32位寄存器,我们打算用第一篇文章那样的结构体位域的形式来实现对该寄存器的读写。跟第一篇的内容类似,基本上就是结构体的声明不同,当在我们自己的PC机上测试,编译,执行,结果都没有问题。但是在FPGA上放起来时,却发现结果总是不正确。因为要用该结构体来访问寄存器,下面假定FPGA的32位寄存器地址是宏FPGA_REG_ADDR代表的地址:

PC代码如下:

    

 

FPGA代码:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值