VladimirYU 0 8 августа, 2008 Опубликовано 8 августа, 2008 · Жалоба Имеется: мега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 Ставлю галку - всегда сосздавать выходной файл, загружаю - не работает. Пересобираю код с перемещением его в сторону меньших адресов - с определенного момента ошибка пропадает - программа работает. В область лоадера не попадаю одназначно. Шаманство вокруг попыток настройками линкера подавить ошибку или сделать ее предупреждением само собой ничего не дает. Можно было бы плюнуть на это и опустить вниз данный код, но не хочется загонять себя в ограничения по объну приложения. Но не получается :-( Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться