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

 
 
> Размер __no_init секции, из IDE
xelax
сообщение Oct 3 2008, 10:49
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Коллеги,

такой вопрос:

у меня есть однобайтовая __no_init переменная, при линкове выдаётся ошибка, что разммер секции слишком маленький и туда переменная не помещается. И действительно посмотрев командную строку линкера вижу такие параметры
Код
-D_..X_SRAM_END=21FF
-Z(DATA)NEAR_N=_..X_EXT_NV_BASE:+_..X_EXT_NV_SIZE
-D_..X_EXT_NV_BASE=_..X_SRAM_END
-D_..X_EXT_NV_SIZE=0


использую мегу1281. То есть насколько я понимаю линкер пытается положить переменную по адресу
0х21FF + 0 ???? Я прав????

И такой вопрос как поменять эти дефайны для линкера из IDE??? Создавать свой скрипт для линкера не хотелось бы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Oct 3 2008, 12:59
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(xelax @ Oct 3 2008, 12:49) *
Создавать свой скрипт для линкера не хотелось бы.

И совершенно зря - нормальный подход к полностью контролируемому коду и процессу работы. Использование "готовых" неведомо для чего сделанных и могущих, между прочим легко поменяться при переходе к другой версии пакета, "универсальных" решений верный путь к ненужным проблемам.
Взять "универсальный" в качестве заготовки, обдумать, понять, подправить.....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
xelax
сообщение Oct 3 2008, 13:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 370
Регистрация: 7-11-06
Пользователь №: 22 035



Цитата(zltigo @ Oct 3 2008, 16:59) *
И совершенно зря - нормальный подход к полностью контролируемому коду и процессу работы. Использование "готовых" неведомо для чего сделанных и могущих, между прочим легко поменяться при переходе к другой версии пакета, "универсальных" решений верный путь к ненужным проблемам.
Взять "универсальный" в качестве заготовки, обдумать, понять, подправить.....


smile.gif Уже осознал это. Так в итоге и сделал.
Только вот какой момент смущает, смотрю итоговый map файл и вижу:
Код
NEAR_I      DATA      00000200 - 000003F2      1F3      Relative      0
NEAR_Z     DATA     000003F3 - 00001DF5     1A03     Relative     0
RSTACK     DATA     00001DF6 - 00001E75     80     Predefined     0
CSTACK     DATA     00001E76 - 00002075     200     Predefined     0
NEAR_N     DATA     00002076 - 00002076     1     Relative     0


что стек располагает сразу после секции глобальных переменных. Почему IAR не расположил стек в конце памяти(хотя для формирования стека был указан диапазон всей памяти)? Если разнести стек и глобальные переменные в разные концы памяти, то при переполнении стека будет некий защитный буфер адресов, гарантирующий, что глобальные переменные не затруться. Очень странно....

Буду пытаться исправить вышеописанное руками в скрипте.
Go to the top of the page
 
+Quote Post



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

 


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


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