Здравствуйте!
Есть Atmega168, к ней прикручена FM24C04A. Хочется сделать свои макросы/функции для работы с ней как avr-libc работает с встроенным eeprom.
Код
typedef struct { uint32_t TotalKm;
uint32_t TotalPulses;
uint32_t OdoKm;
uint32_t OdoPulses;
uint8_t valid;
} Odo_t;
#define FRAM __attribute__((section(".fram")))
void FM24ReadBlock(void *addr,void *buf,size_t sz); /* Чтение блока из fram в sram */
Код
const FRAM Odo_t odometer;
Odo_t od;
void main(void)
{
.....
FM24ReadBlock((void *)&odometer,(void *)&od,sizeof(Odo_t));
.....
}
Секция .fram создается. Но начинается с адреса 0x100
Код
Sections:
Idx Name Size VMA LMA File off Algn
0 .fram 00000011 00800100 0000031a 000003ae 2**0
CONTENTS, ALLOC, LOAD, DATA
Как, не меняя скриптов линкера (я в них ничего не понимаю), сделать так чтобы эта секция лягла в свой сегмент, со смещения равного 0?
То есть чтобы &odometer было равно 0, а не 0x100?
Сообщение отредактировал Mikl Scherbak - May 31 2010, 22:58