[an error occurred while processing this directive]
Ответ:Всем - спасибо!!! Вроде заработало... Но как все это объяснить?(+)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено АГ 26 июля 2002 г. 16:36
В ответ на: Проблема с Hi-Tech. Как это перевести на удобоваримый язык?(+) отправлено АГ 23 июля 2002 г. 18:26

По описанию http://www.telesys.ru/wwwboards/mcontrol/224/messages/103906.shtml нашел, что возмущается линкер: в начале программы есть ассемблерная вставка для бутлоадера (ну, так надо по инструкции к нему)
ORG 0x0000 ;reset vector
clrf 0x3 ;zero status
movlw 0x00 ;high byte of long jump
movwf 0xA ;zero PCLATH
goto start ;
Так вот линкер ругался по поводу этого goto - в листинге уже сформированная команда обеспечивает переход на 43А, а туда почему-то пытаются затолкать 0xFFFFF43A, что явно превышает объем памяти программ. Со всеми вытекающими... Причем в листинге start - это 043А.

Излечилось путем замены goto на ljmp. Причем, что характерно, если компилируется укороченная программа с goto или полная с ljmp - начальный кусок всегда выглядит одинаково
0000 0183 poweru clrf 0x3
0001 3004 movlw 0x4
0002 008A movwf 0xA (кой черт он туда эту 4 записал? Непонятно...)
0003 2C3A goto start
и метка старт - всегда на команде номер 043А.

А вот что происходит, когда программа не линкуется? что за 0xFFFFF43A? - кто-нибудь может пояснить? Или хотя бы предположить?

Ибо есть у меня ощущение, что они (приветы) просто затаились, и в самый неподходящий момент и повеселятся...

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru