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

 
 
> как и где можно указать в ИАРе адрес бута, для выполнения инструкции самопрограммирования
addi
сообщение Oct 21 2012, 07:42
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Здравствуйте

Пожалуйста подскажите кто знает где и как в xcl файле указать адерс бута, чтобы потом понял меня IAR
Необходимо делать инструкции самопрограммирования из облсасти бута
Первопричина:

http://electronix.ru/forum/index.php?showtopic=107158
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Oct 21 2012, 10:36
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(addi @ Oct 21 2012, 10:42) *
Пожалуйста подскажите кто знает где и как в xcl файле указать адерс бута, чтобы потом понял меня IAR
Необходимо делать инструкции самопрограммирования из облсасти бута


Нужно изменить в xcl строки задающие стартовый адрес:
Цитата
/*************************************************************/
/* Segments in program address space (internal Flash memory) */
/*************************************************************/
-D_..X_INTVEC_SIZE=1F4 // 4 bytes * 125 vectors
-D_..X_APPLICATION_SECTION_START=401F4
-D_..X_APPLICATION_SECTION_SIZE=1E0C
-D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZE)
-D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTION_S
IZE-1)


/*
* Reset and interrupt vectors.
*
* The reset vector and interrupt vectors must be placed at address 0
* and forwards. This definition allows for up to 23 interrupt vectors
* and the reset vector.
*/
-Z(CODE)INTVEC=40000-401F4
-H1895 -h(CODE)40000-401F4 /*Fill unused interrupt vector's with RETI*/

Это для xm256.
Go to the top of the page
 
+Quote Post
addi
сообщение Oct 21 2012, 12:36
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(_Артём_ @ Oct 21 2012, 14:36) *
Нужно изменить в xcl строки задающие стартовый адрес:

Это для xm256.

извиняюсь, чегото я запутался

как я понимаю я должен выполнять инструкции по самопрограммирования в области под boot, т.е на момент выполнения самих инструкций
Подскажите пожалуйста если мой адресс бута по датащиту с 2000 по 27FF, что я должен сделать согласно Вашему примеру

Код
-D_..X_APPLICATION_SECTION_START=401F4
-D_..X_APPLICATION_SECTION_SIZE=1E0C
-D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZE)
-D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTION_S
IZE-1)


если у меня по умолчанию есть следующая конфигурация

Код
/* Code (flash) segments */
-D_..X_INTVEC_SIZE=1E8   /* 4 bytes * 122 vectors */
-D_..X_FLASH_NEND=FFFF   /* End of near flash memory */

-D_..X_APPLICATION_SIZE=40000
-D_..X_BOOT_SIZE=2000
-D_..X_APPLICATION_TABLE_SIZE=2000

-D_..X_FLASH_END=(_..X_APPLICATION_SIZE+_..X_BOOT_SIZE-1)
-D_..X_APPLICATION_START=_..X_INTVEC_SIZE
-D_..X_APPLICATION_END=(_..X_FLASH_END-_..X_BOOT_SIZE-_..X_APPLICATION_TABLE_SIZE)
-D_..X_APPLICATION_TABLE_START=(_..X_APPLICATION_END+1)
-D_..X_APPLICATION_TABLE_END=(_..X_FLASH_END-_..X_BOOT_SIZE)
-D_..X_BOOT_START=(_..X_APPLICATION_TABLE_END+1)
-D_..X_BOOT_END=_..X_FLASH_END


Сообщение отредактировал addi - Oct 21 2012, 12:37
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 21 2012, 13:08
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(addi @ Oct 21 2012, 15:36) *
Подскажите пожалуйста если мой адресс бута по датащиту с 2000 по 27FF, что я должен сделать согласно Вашему примеру

У вас иксмега какая? 32d4?
2000 - маловато.
Go to the top of the page
 
+Quote Post
addi
сообщение Oct 21 2012, 13:48
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(_Артём_ @ Oct 21 2012, 17:08) *
У вас иксмега какая? 32d4?
2000 - маловато.

угу 32d4, 4000?, по даташиту с 2000 по 27FF
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 21 2012, 14:12
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(addi @ Oct 21 2012, 16:48) *
угу 32d4, 4000?, по даташиту с 2000 по 27FF

По даташиту: 4000-47FF.

Если не ошибся, то как-то так:
Код
-D_..X_APPLICATION_SECTION_START=80E8
-D_..X_APPLICATION_SECTION_SIZE=F18
-D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZE)
-D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTION_S
IZE-1)

Z(CODE)INTVEC=8000-80E8 // 4 *122
-H1895 -h(CODE)8000-80E8 /*Fill unused interrupt vector's with RETI*/
Go to the top of the page
 
+Quote Post
addi
сообщение Oct 21 2012, 15:12
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 679
Регистрация: 9-08-06
Пользователь №: 19 422



Цитата(_Артём_ @ Oct 21 2012, 18:12) *
По даташиту: 4000-47FF.

Если не ошибся, то как-то так:
Код
-D_..X_APPLICATION_SECTION_START=80E8
-D_..X_APPLICATION_SECTION_SIZE=F18
-D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZE)
-D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTION_S
IZE-1)

Z(CODE)INTVEC=8000-80E8 // 4 *122
-H1895 -h(CODE)8000-80E8 /*Fill unused interrupt vector's with RETI*/

спасибо большое за пример!

Но к сожалению теперь я чтото напутал со вставкой Вашего примера

Вот так почемуто тоже не получается
моя редакция файла конфигурации памяти который теперь подгружаю вместо стандартного:
Цитата
//////////////////////////////////////////////////////////////////////////////
//
// Contains resource definitions of Atmel ATxmega32D4
//
// File version: $Revision$
//
// The '_..X_' prefix is used by C-SPY as an indication that the label should
// not be displayed in the dissassembly window.
//

//////////////////////////////////////////////////////////////////////////////
// Code (flash) segments
-D_..X_INTVEC_SIZE=16C // 4 bytes * 91 vectors

-D_..X_APPLICATION_SIZE=8000
-D_..X_BOOT_SIZE=1000
-D_..X_APPLICATION_TABLE_SIZE=1000


-D_..X_FLASH_END=(_..X_APPLICATION_SIZE+_..X_BOOT_SIZE-1)
////////////////////////////////////////////////////
////////////////////////////////////////////////////
-D_..X_APPLICATION_SECTION_START=80E8
-D_..X_APPLICATION_SECTION_SIZE=F18
-D_..X_APPLICATION_START=(_..X_APPLICATION_SECTION_START+_..X_INTVEC_SIZE)
-D_..X_APPLICATION_END=(_..X_APPLICATION_SECTION_START+_..X_APPLICATION_SECTION_S
IZE-1)

Z(CODE)INTVEC=8000-80E8 // 4 *122
-H1895 -h(CODE)8000-80E8 /*Fill unused interrupt vector's with RETI*/
/////////////////////////////////////////////////
/////////////////////////////////////////////////
-D_..X_APPLICATION_TABLE_START=(_..X_APPLICATION_END+1)
-D_..X_APPLICATION_TABLE_END=(_..X_FLASH_END-_..X_BOOT_SIZE)
-D_..X_BOOT_START=(_..X_APPLICATION_TABLE_END+1)
-D_..X_BOOT_END=_..X_FLASH_END

-D_..X_FLASH_NEND=_..X_FLASH_END // End of flash memory

//////////////////////////////////////////////////////////////////////////////
// Data (SRAM, external ROM or external NV RAM) memory
-D_..X_SRAM_BASE=2000 // Start of ram memory
-D_..X_SRAM_TBASE=0 // Start of tiny ram memory
-D_..X_SRAM_TSIZE=0 // Size of the tiny ram memory
-D_..X_SRAM_END=2FFF // End of ram memory

//////////////////////////////////////////////////////////////////////////////
// Internal EEPROM
-D_..X_EEPROM_START=0
-D_..X_EEPROM_END=3FF // End of eeprom memory
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Oct 21 2012, 15:22
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(addi @ Oct 21 2012, 18:12) *
Вот так почемуто тоже не получается

На первый взгляд - правильно...разве что векторов меньше чем я написал, но это не так важно.
Проект не собирается?
Какие ошибки выдаются?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 20:17
Рейтинг@Mail.ru


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