roboforum.ru

Технический форум по робототехнике.

Как настроить defined symbol влинкере IAR atmega1281(AVR230)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Как настроить defined symbol влинкере IAR atmega1281(AVR230)

Сообщение grek » 30 июл 2012, 10:17

Добрый день.Мучает проблема в настройки параметров definеd symbol: one per line. Хотелось переделать загрузчик для atmega1281. Не как не получается понять,от куда берутся данные цифры. Особенно непонятно с векторами прерывания. Вот например для 128 меги 35 векторов * 4 = 8С соответственно в таблице записываем IVT_SIZE=8C не понимаю почему при других мегах умножается на 2, а для 128 на 4. Мысль идет, что от объема какой то памяти. Тогда для 1281 меги,у меня получается 57 векторов * 4 = E4, и в конечном итоге получается.
BOOT_SIZE=2000
FLASH_SIZE=20000
IVT_SIZE=E4
RAM_SIZE=2000
RAM_BASE=100

я так понимаю, что есть какие то ошибки. Помогите пожалуйста понять как считаются данные значения.
и еще в настройках xcl пришлось закоментировать стороку
//=============================================================================
// RAM

//-Z(DATA)TINY_I,TINY_Z,TINY_N=RAM_BASE-FF

не критично ли это?
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение legion » 30 июл 2012, 11:08

На мк с памятью меньше 8 килобайт для перехода по вектору прерывания используется инструкция RJMP , т.к. она позволяет перейти на расстояние 8 Кб - т.е. в любую точку памяти. RJMP занимает 2 байта.
Если памяти больше 8 Кб, то для полного охвата памяти приходится использовать JMP, а она занимает 4 байта.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение grek » 30 июл 2012, 11:33

имеется ввиду SRAM память более 8 килобайт.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение legion » 30 июл 2012, 11:47

Нет, я говорил про Flash, т.е. про программную память. SRAM на таблицу векторов прерываний никак не влияет.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение grek » 30 июл 2012, 11:55

у меня получаются вот такие настройки
Код: Выделить всёРазвернуть
//=============================================================================
// Copyright (C) 2003 Atmel Corporation
//
// File:         bootldr.xcl
// Linker:         IAR Atmel AVR Linker
// Created:         14-Feb-2003   JP (Atmel Finland)
// Modified:
//
// Support Mail:   avr@atmel.com
//
// Description:      Linker file. This file is configured from
//
//                  Project Options->XLINK->#define
//
//               This version utilizes the interrupt vector table for
//               program code in order to shrink the target size.
//
// Other Info:      For more information, refer to the Application Note
//               Documentation.
//=============================================================================

-ca90
-w29


//=============================================================================
// Interrupt vectors

-Z(CODE)INTVEC=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)
-H1895 -h(CODE)(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)

//=============================================================================
// Code memory

-Z(CODE)NEAR_F,HUGE_F,SWITCH,INITTAB,DIFUNCT,CODE=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)
-Z(FARCODE)FAR_F=(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)


//=============================================================================
// RAM

//-Z(DATA)TINY_I,TINY_Z,TINY_N=RAM_BASE-FF
-Z(DATA)NEAR_I,NEAR_Z=RAM_BASE-(RAM_BASE+RAM_SIZE-1)
-Z(DATA)RSTACK+40=RAM_BASE-(RAM_BASE+RAM_SIZE-1)
-Z(DATA)CSTACK+(RAM_SIZE-40)=RAM_BASE-(RAM_BASE+RAM_SIZE-1)


Код: Выделить всёРазвернуть
BOOT_SIZE=2000
FLASH_SIZE=20000
IVT_SIZE=E4
RAM_SIZE=2000
RAM_BASE=100
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение legion » 30 июл 2012, 12:17

А откуда данные брал? В IAR ничего не понимаю, но странные цифры какие-то.

Сам нашел - http://www.atmel.com/Images/doc2589.pdf, страница 22. Но логика выбора цифр мне тоже непонятна.
legion
 
Сообщения: 736
Зарегистрирован: 24 апр 2010, 14:47
Откуда: Уфа
прог. языки: avr asm

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение grek » 30 июл 2012, 13:18

цифры нормальны байтовые, но вот в правильности их я не уверен
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение grek » 31 июл 2012, 08:43

Настроить вроде удалось,данные передаются. Но появилась новая проблема. Данные передаются, но не пишутся в контроллер.Такое ощущение, что модуль SPM неправильно работает. Может кто направит на путь,подскажет чего искать,и где.
Код: Выделить всёРазвернуть
//=============================================================================
// Copyright (C) 2003 Atmel Corporation
//
// File:         bootldr.xcl
// Linker:         IAR Atmel AVR Linker
// Created:         14-Feb-2003   JP (Atmel Finland)
// Modified:
//
// Support Mail:   avr@atmel.com
//
// Description:      Linker file. This file is configured from
//
//                  Project Options->XLINK->#define
//
//               This version utilizes the interrupt vector table for
//               program code in order to shrink the target size.
//
// Other Info:      For more information, refer to the Application Note
//               Documentation.
//=============================================================================

-ca90
-w29

-DSRAM_BASE=200    /* Start of ram memory */
-DSRAM_TEND=100    /* End of tiny ram memory */

-DSRAM_END=21FF    /* End of ram memory */


//=============================================================================
// Interrupt vectors

-Z(CODE)INTVEC=1E000-(1E0CC-1)  // 0-(IVT_SIZE-1)    ///(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)   //

//=============================================================================
// Code memory

-Z(CODE)NEAR_F,HUGE_F,SWITCH,INITTAB,DIFUNCT,NEAR_ID,CODE=(1E000+IVT_SIZE)-1FFFF   //    (FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)   //
-Z(FARCODE)FAR_F=(1E000+IVT_SIZE)-1FFFF   //(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-1)   //

-H1895 -h(CODE)1E000-1E0CC //-h(CODE)00000-1E000   //(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)  //(1E000-1E0CC)  //

//-H7777    //(FLASH_SIZE-BOOT_SIZE)-(FLASH_SIZE-BOOT_SIZE+IVT_SIZE-1)

//=============================================================================
// RAM

//-Z(DATA)TINY_I,TINY_Z,TINY_N=RAM_BASE-FF
-Z(DATA)NEAR_I,NEAR_Z=RAM_BASE-SRAM_END   //(RAM_BASE+RAM_SIZE-1)

//-Z(DATA)RSTACK+40=RAM_BASE-SRAM_END  /* ,_..X_EXT_SRAM_BASE-_..X_EXT_SRAM_END */   //(RAM_BASE+RAM_SIZE-1)
//-Z(DATA)CSTACK+200=RAM_BASE-SRAM_END  /* ,_..X_EXT_SRAM_BASE-_..X_EXT_SRAM_END */  //(RAM_BASE+RAM_SIZE-1)

-Z(DATA)RSTACK+40=(RAM_BASE)-(RAM_BASE+RAM_SIZE-1)
-Z(DATA)CSTACK+(RAM_SIZE-60)=200-21FF    //RAM_BASE-(RAM_BASE+RAM_SIZE-1)   //200=RAM_BASE-(RAM_BASE+RAM_SIZE-1)  //

Код: Выделить всёРазвернуть
BOOT_SIZE=2000
FLASH_SIZE=10000
IVT_SIZE=CC
RAM_SIZE=2000
RAM_BASE=200


может, что то все таки не так?
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас

Re: Как настроить defined symbol влинкере IAR atmega1281(AVR

Сообщение grek » 16 авг 2012, 02:36

Может кто все-таки подскажет как переделать загрузчик AVR230 или AVR231 под атмегу1281. Не как не получается, вроде как что то шьется, а в микросхеме ничего нет.Но пробовал пока только AVR230 :cry:.
grek
 
Сообщения: 159
Зарегистрирован: 16 сен 2009, 15:41
Откуда: Арзамас


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12