我正在使用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
...
}