Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Bootloader для 120-го Сигнала
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > MCS51
Незнайка
Поделитесь, плз, проверенным автозагрузчиком памяти программ, работающим через UART, и управляющимся програмно от компа.

Железка уже готова, и грузится первый раз через JTAG, но поставить новую версию - проблема, тк приходится вскрывать корпус :-(
Kolia
Люди!!!
Подскажите как лучше написать bootloader для Cygnala или вообще для 51 контроллера.
В общем меня интересуют следующие вопросы:
- где в пространстве программ лучше расположить bootloader и сам загружаемый код?
- как поступить с прерываниями - нужно ли их переопределять?

Может у кого есть готовый рабочий код - поделитесь пожаййсто.

help.gif
Massi
иди и копай у Филипса...мой первый контроллер на 8051RC2+ работал по ихней проге правда загрубленной нашими програмистами...бо тама наворотили дуже...интелхекс принесет тебе счастя...
размещать...ну блин вопрос...а куда прога идет по ресету хардовому...там вектор или сама прога...прерывания на время загрузки сам решай что делать...но при переходе на исполнение машина должна быть как при ресете...
Kolia
Цитата(Massi @ Feb 13 2007, 15:49) *
у Филипса...мой первый контроллер на 8051RC2+ работал по ихней проге правда загрубленной нашими програмистами


Может быть подкините ссылочку smile.gif
mihask
Цитата(Kolia @ Feb 7 2007, 14:13) *
Люди!!!
Подскажите как лучше написать bootloader для Cygnala или вообще для 51 контроллера.
В общем меня интересуют следующие вопросы:
- где в пространстве программ лучше расположить bootloader и сам загружаемый код?
- как поступить с прерываниями - нужно ли их переопределять?

Может у кого есть готовый рабочий код - поделитесь пожаййсто.

help.gif


Нижние 0x1000 байт ПЗУ проц-а отводятся под сам bootloader. При подаче питания bootloader инициализирует timer и UART на определённую скорость приёма-передачи (например 9600) и ждёт команды с PC "начать работать" (например нажатие клавиши "пробел" на PC) определённое время (3 сек). Если такая команда приходит bootloader продолжает работать (выдает меню, типа: 1-Сбросить flash, 2-Начать загрузку HEX-файла, 3-Выход). Если нет - заканчивает свою работу (программа переходит на адрес 0x1000 ПЗУ).

Для работы с bootloader-ом по выше описанной схеме на PC предварительно необходимо открыть соответствующий COM порт (программа HyperTerminal) на соответствующей bootloader-у скорости (в нашем примере 9600). После входа в bootloader и выбора пункта "Начать загрузку HEX-файла" для загрузки HEX-файла выбрать в меню HyperTerminal-а "передача" пункт "отправить текстовый фаил" и соответствующий HEX-фаил. Дождавшись от bootloader-а сообщения "Загрузка закончена", пересбросить девайс и на этот раз не подавать команды процу войти в bootloader.

Расположение bootloader-а по адресам 0-0x1000 ПЗУ позволяет в случае неудачной "зашивки" не потерять контроль над проц-ом и повторить попытку.
Kolia
Спасибочки. Стало более-менеее понятно.
smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.