我正在使用zynq设备,试图通过一个独立的程序(不带操作系统)将数据从DRAM传输到ARM的外围设备。在示例代码中,我发现此代码用于声明事务的源地址和目标地址。

volatile static u8 SrcBuffer[BUFFER_BYTESIZE] __attribute__ ((aligned (64)));
volatile static u8 DestBuffer[BUFFER_BYTESIZE] __attribute__ ((aligned (64)));

既然没有操作系统,地址的值是多少?我该怎么改?

最佳答案

您需要在链接器文件中定义一个节a,然后使用(对于GCC)将数据放入其中:
__attribute__ (( section ( "your_section" ) ) )
在链接器文件中(也将包含其他内容)类似于:

MEMORY
{
   ....will be other stuff here
   ....
   YOUR_MEMORY_NAME : ORIGIN = 0xWhatever, Length = a_length // Creates a memory region
}

SECTIONS
{
   ...
   ...

   .something_data :
   {
      *(your_data)
   } > YOUR_MEMORY_NAME

   ...

}

09-26 06:55