Делаю как-то так:
fpga.h:
Код
/// Структура регистров ПЛИС.
struct fpga_regs_s
{
union ctrl_regs ctrl; ///< Регистры управления.
union led_regs leds; ///< Регистр управления светодиодов.
};
extern volatile struct fpga_regs_s FPGARegs; // Регистры управления ПЛИС.
fpga.c
Код
#include "fpga.h"
__attribute__ ((section(".FPGARegsFile")))
volatile struct fpga_regs_s FPGARegs;
В файле линкера headers.ld прописываю
Код
/* Расположение периферии в памяти */
MEMORY
{
FPGA_CNTRL : ORIGIN = 0x40050000, LENGTH = 0x000B0000
}
SECTIONS
{
.FPGARegsFile (NOLOAD) : {KEEP(*(.FPGARegsFile))} > FPGA_CNTRL
}
Ну и также есть расположение другой периферии. Остальные секции генерируемые компилятором и карта памяти в другом файле.
Линкеру потом подсовываю этот файл -Theaders.ld
Сообщение отредактировал doublekey - Dec 20 2012, 14:52