Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Алгоритм работы ISP на LPC2xxx
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Punk
Приветствую.
Написал свой бутлоадер для LPC2129, работает нормально, но страшно медленно. Алгоритм такой:

Девайс получает с компа через UART (интерфейс c ПК на FT232R) побайтно дамп прошивки, после приема каждого байта отвечает NOT-ом этого байта(для контроля). Как только 512байтная страничка заполнилась, проц ее пишет во флеш. Далее снова заполняет 512 байтный буфер ипишем флеш. В общем в цикле все происходит пока не запишем весь дамп.

Все это работает, но ужасно медленно. Скорость UART 9600, увеличивал до 256000, толку мало. Прошивка размером 16К льется 5 минут.
Возникает вопрос: Как реализован процесс загрузки в штатном загрузчике LPC2xxx, если он те же 16К через FTDI льет несколько секунд ?
scifi
Цитата(Punk @ Feb 11 2011, 10:45) *
Девайс получает с компа через UART (интерфейс c ПК на FT232R) побайтно дамп прошивки, после приема каждого байта отвечает NOT-ом этого байта(для контроля).

Посмотрите осциллографом на линию. Может оказаться, что между байтами большие промежутки. Посылать нужно пачками побольше. Если правильно помню, у USB есть особенность, которая не позволяет посылать чаще, чем 1000 раз в секунду.
zltigo
QUOTE (Punk @ Feb 11 2011, 10:45) *
через FTDI льет несколько секунд ?

Ну НЕ по байту он льет через работающий по опросу USB. Вы бы еще через IOCTL пиномаханием обменивались-бы информацией sad.gif. Забрасывайте байт по 512 и более зараз.
kovigor
Цитата(Punk @ Feb 11 2011, 11:45) *
после приема каждого байта отвечает NOT-ом этого байта(для контроля)


Не надо так делать, это бессмысленно. Реализуйте лучше XMODEM и заливайте прошивки стандартной терминалкой ...
Punk
Цитата(kovigor @ Feb 11 2011, 13:02) *
Не надо так делать, это бессмысленно. Реализуйте лучше XMODEM и заливайте прошивки стандартной терминалкой ...

Почему бессмысленно?
kovigor
Цитата(Punk @ Feb 11 2011, 14:09) *
Почему бессмысленно?


Потому что нужно проверять целостность целых блоков, а не отдельных байтов. Потому что для загрузки по вашему методу нужно уникальное ПО. Потому что это медленно. И еще потому, что это ничем не оправдано ...
Punk
Цитата(kovigor @ Feb 11 2011, 14:15) *
Потому что нужно проверять целостность целых блоков, а не отдельных байтов. Потому что для загрузки по вашему методу нужно уникальное ПО. Потому что это медленно. И еще потому, что это ничем не оправдано ...

Дык...как раз хочется уникальное, и быстрое.

По поводу ответа после каждого байта и длинных посылок: Убираю ответ и синхра падает мертво, хотя когда сплошным потоком лью код только в RAM, без всяких страниц и секторов, то все хорошо.
scifi
Цитата(Punk @ Feb 11 2011, 14:17) *
Дык...как раз хочется уникальное, и быстрое.

Все велосипеды уже изобретены до нас.
Предлагаю такой вариант: просмотрите форматы, которые поддерживает утилита SRecord. Выберите подходящий и сделайте загрузчик на нём. А SRecord поможет приводить прошивку к нужному формату.
zltigo
QUOTE (Punk @ Feb 11 2011, 14:17) *
Убираю ответ и синхра падает мертво

Что такое "синхра падает мертво" понятно, видимо, только Вам, но ждать окончания записи переданного блока надо по любому.
demiurg_spb
Цитата(kovigor @ Feb 11 2011, 12:02) *
Не надо так делать, это бессмысленно. Реализуйте лучше XMODEM и заливайте прошивки стандартной терминалкой ...

+1 за XMODEM. У самих так сделано.
Очень удобно, что не нужно поддерживать софтину для ПК по хрен знает какое кол-во осей.
Punk
Цитата(demiurg_spb @ Feb 12 2011, 13:04) *
+1 за XMODEM. У самих так сделано.
Очень удобно, что не нужно поддерживать софтину для ПК по хрен знает какое кол-во осей.


X-Modem это конечно очень удобно, не спорю. Но всеже он громоздкий..мне так кажется. Сделал так:
Разбиваю прошиву на сектора по 8кб и лью их побайтно в RAM затем весь сектор копирую из RAM во FLASH, и зацикливаюсь пока все сектора не запишу. В конце передачи каждого сектора пределаю еще CRC на всякий случай. Работает стабильно и быстро.
А по поводу множества софтин под множество ОС, у меня девайс весьма узкого применения поэтому с эим даже не заморачиваюсь, достаточно одной консольной программульки под Винду.
Lexy_one
Извиняюсь за не скромный вопрос...
Поделитеь примером бутлоадера или какой нибудь апл_ноте по бутлоадеру...
У меня LPC2368... нада сделать бут по уарт....
А с какой стороны подойти - ума не приложу...
Не могу найти толковых примеров - ПОМОГИТЕ КТО ЧЕМ МОЖЕТ.
Punk
На сайте NXP скачайте исходники LPC2000_Series_Secondary_Bootloader
и аппликухи AN10256 и AN10835. Там все расписано в самом подробном виде
Lexy_one
Спасиба за ап ноты, - скачал, правда исходники не нашел...
будем разбираться.....
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.