Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Error[e46]: Undefined external "?need_segment_init" referred in ...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
AndryG
Доброго.

Подскажите, пжлст, в какую сторону смотреть с этой ошибкой. В другом проекте этот файл линкуется без проблем.

Куда копать надоть?
jorikdima
в сторону того, где определена переменная need_segment_init
У вас не смешанный С/С++ проект случайно?
AndryG
Чистый С. (Остальные пункты вообще неактивны)
Проект создавал по шаблону "пустой проект".

Создал еще один проект для Tiny13.
Начал ругаться на "не хватает памяти."
Уменьшил CSTACK - перестало кричать на нехватку памяти, зато появилась эта же ошибка.
Уменьшил еще CSTACK - ошибка исчезла.
Увеличил - и больше она не появляется. (сделал clean и rebuild all)

Мдя. Моя третья попытка поменять компилятор и разобраться с IAR ... не оставляйте меня одного smile.gif

Еще раз. Новый проект с двумя файлами. Чип - Тини13
Цитата
Building configuration: test - Debug
Updating build tree...

5 file(s) deleted.
Updating build tree...
br.c
kbd.c
Linking
Error[e16]: Segment RSTACK (size: 0x20 align: 0) is too long for segment definition. At least 0x3 more bytes needed. The problem occurred
while processing the segment placement command "-Z(DATA)RSTACK+_..X_RSTACK_SIZE=_..X_RSTACK_BASE-_..X_RSTACK_END",
where at the moment of placement the available memory ranges were "DATA:83-9f"
Reserved ranges relevant to this placement:
DATA:60-60 TINY_I
DATA:61-62 TINY_Z
DATA:63-82 CSTACK
DATA:83-9f RSTACK
Error while running Linker

Total number of errors: 1
Total number of warnings: 0

Уменьшаю CSTACK до 0x1D

Блин!!! Теперь всё компилится и линкуется sad.gif Что это!?
AndryG
Ещё наблюдение.
Ошибка эта вылазит при отключении библиотек (project - options - general options - library configuration - library = none).
Может кто подскажет, что это за беда такая... мелочь, но неприятно.
Сергей Борщ
Цитата(AndryG @ Dec 22 2009, 11:08) *
Ошибка эта вылазит при отключении библиотек (project - options - general options - library configuration - library = none).
А вы их не отключайте. Перед стартом программы выполняется некоторая необходимая последовательность действий (cstartup). Инициализируется указатель стека, обнуляются неинициализированные явно переменные, инициализированным присваиваются начальные значения, вызываются конструкторы глобальных объектов (С++), вызывается функция main(). Без этих действий программа работать не будет. Вы можете написать эти действия вручную, заменив библиотечную функцию cstartup. А можете использовать готовые, но поскольку они лежат в библиотеке - библиотеку надо подключить.
AndryG
Инициализация лежит в самой библиотеке. Спасибо агромадное. Теперь стало всё на свои места.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.