реклама на сайте
подробности

 
 
> Создание своего сегмента в WinAvr
Mikl Scherbak
сообщение May 31 2010, 22:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 22-05-09
Из: Харьков, Украина
Пользователь №: 49 413



Здравствуйте!
Есть 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
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 20:00
Рейтинг@Mail.ru


Страница сгенерированна за 0.01343 секунд с 7
ELECTRONIX ©2004-2016