[an error occurred while processing this directive]
Дело было так
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Джавдет 09 марта 2005 г. 17:11
В ответ на: Конвертни хекс в бинарник и глянь что там отправлено ASDFS 09 марта 2005 г. 16:33

Bootloader взял из Self_128C. Bootloader пишу в m128 с помощью AS2. Бутлодер сидит где надо (0x1FC00) и работает как надо. С AVRprog и прикладными программами < 64К.
Но, зделав через AVRprog операцию ReadFlash, увидел, что младшие 64К побайтно равны старшим, как будто два раза прочитал младшие 64К (?!). Никаких кодов бутлодера естественно не прочиталось, т.к. он с 1FC00.
Решив проверить что это за эффект, я в прикладной программе (16К) с помощью #pragma location="MYSEGMENT" по адресу 0x0FFF8 заделал некоторую фальшивую функцию, байт под 100, которая пересекает границу 64К байт. Смотрю в обычном программаторе-все нормально, лежит где надо. Подсовываю ее hex-код к бутлодеру. Пишет до границы 64К затем ошибка верификации. Делаю ReadFlash - действительно, по второму кругу пошел писать младшие 64К.
Где ошибка? Грешил на бутлодер. Смотрю листинг - стоят ELPM. Только RAMPZ не увидел. Перехватываю все обращения к памяти > 0x7fff и принудительно ставлю RAMPZ=1. Не помогает. Далее. В бутлодере cразу после получения от AVRprog АДРЕСа ставлю ловушку, если адрес >0x7fff (слов). НИКОГДА не попадается, т.е. от AVRprog никогда не приходит адрес >0x7fff. Что за хуня?

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

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


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

E-mail: info@telesys.ru