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

 
 
> Размещение кода с произвольного адреса AVR IAR4.12, Как побороть ошибку или предупреждение?
VladimirYU
сообщение Aug 8 2008, 06:12
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



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

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

Как делаю: Пишу программу, перенастраиваю файл lnkm128.xcl, т.е. меняю адрес начала области CODE, INTVEC, TINY, NEAR собираю проект, смтрю HEX. Все хорошо. Легло все по нужным адресам, как надо и все работает.
Далее: требуется усложнить данный код с подключением уже отлаженоой и проверенной не один раз библиотеки, работающей с объектами С++. И тут при компановке начинает выскакивать ошибка.

Error[e18]: Range error,
Number out of range. Valid range is -128 (-0x80) to 255 (0xFF).
File: D:\IAR Systems\EW4_12A\avr\Work\Ðàçíîå\Buses_app.h, Line: 72
Source: LDI R17, (??__vtbl) >> 8
Where $ = TBusKmspi::TBusKmspi(unsigned char) + 0x12 [0x102FA]
in module "main" (D:\IAR Systems\EW4_12A\avr\Work\Ðàçíîå\Release\Obj\main.r90),
offset 0x12 in segment part 17, segment CODE
What: 8 ? (TBusKmspi::__vtbl >> 1 & 0x7FFFFFFF) >> 8 - 1 : TBusKmspi::__vtbl [0x102]
Allowed range: 0xFFFFFF01 - 0xFF
Operand: TBusKmspi::__vtbl [0x10200]
in module Buses_app (D:\IAR Systems\EW4_12A\avr\Work\Ðàçíîå\test_lib.r90),
Offset 0x0 in segment part 31, segment NEAR_F

Ставлю галку - всегда сосздавать выходной файл, загружаю - не работает.
Пересобираю код с перемещением его в сторону меньших адресов - с определенного момента ошибка пропадает - программа работает. В область лоадера не попадаю одназначно. Шаманство вокруг попыток настройками линкера подавить ошибку или сделать ее предупреждением само собой ничего не дает.

Можно было бы плюнуть на это и опустить вниз данный код, но не хочется загонять себя в ограничения по объну приложения. Но не получается :-(
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


RSS Текстовая версия Сейчас: 17th June 2025 - 17:59
Рейтинг@Mail.ru


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