我有一个数组和一个变量,声明如下
NextPacketRegister : array (1 .. Natural (Size)) of Unsigned_32;
PacketBufferPointer : Unsigned_32;
for PacketBufferPointer'Address use To_Address (SPW_PORT_0_OUT_REG_ADDR);
for NextPacketRegister'Address use To_Address (16#A000_0000# + Integer_Address (PacketBufferPointer));PacketBufferPointer指向硬件寄存器,您可以通过我们主板的PCI访问该寄存器。NextPacketRegister使用此寄存器的值+ 16#A000_0000#
问题是,每次我访问NextPacketRegister时,我都会在后台执行PCI访问,这些访问非常慢,我们正在努力消除这种限制。
但是我似乎找不到一种在运行时修改NextPacketRegister的地址的方法(我想读取一次PacketBufferPointer寄存器,然后只将这个值+ 16#A000_0000#添加一次,这样我就不必每次都执行PCI访问。
我环顾四周,但我不知道如何才能做到这一点。
发布于 2010-11-08 08:55:09
创建一个结构(缓冲区数组?)这就是您的数据包缓冲区集的外观,并将其放在数组开始处的地址。
从寄存器中读取数组索引。
你可以用任何语言写C,甚至是Ada。
至少它可以工作,并且你得到了一些合理的边界检查。
https://stackoverflow.com/questions/4078462
复制相似问题