Перейти к содержанию
    

Размещение кода с произвольного адреса AVR IAR4.12

Имеется:

мега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

 

Ставлю галку - всегда сосздавать выходной файл, загружаю - не работает.

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

 

Можно было бы плюнуть на это и опустить вниз данный код, но не хочется загонять себя в ограничения по объну приложения. Но не получается :-(

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...