реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Алгоритм работы ISP на LPC2xxx, Собственный бут жутко тормозит
Punk
сообщение Feb 11 2011, 07:45
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



Приветствую.
Написал свой бутлоадер для LPC2129, работает нормально, но страшно медленно. Алгоритм такой:

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

Все это работает, но ужасно медленно. Скорость UART 9600, увеличивал до 256000, толку мало. Прошивка размером 16К льется 5 минут.
Возникает вопрос: Как реализован процесс загрузки в штатном загрузчике LPC2xxx, если он те же 16К через FTDI льет несколько секунд ?
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 11 2011, 07:51
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Punk @ Feb 11 2011, 10:45) *
Девайс получает с компа через UART (интерфейс c ПК на FT232R) побайтно дамп прошивки, после приема каждого байта отвечает NOT-ом этого байта(для контроля).

Посмотрите осциллографом на линию. Может оказаться, что между байтами большие промежутки. Посылать нужно пачками побольше. Если правильно помню, у USB есть особенность, которая не позволяет посылать чаще, чем 1000 раз в секунду.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 11 2011, 08:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Punk @ Feb 11 2011, 10:45) *
через FTDI льет несколько секунд ?

Ну НЕ по байту он льет через работающий по опросу USB. Вы бы еще через IOCTL пиномаханием обменивались-бы информацией sad.gif. Забрасывайте байт по 512 и более зараз.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 11 2011, 09:02
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(Punk @ Feb 11 2011, 11:45) *
после приема каждого байта отвечает NOT-ом этого байта(для контроля)


Не надо так делать, это бессмысленно. Реализуйте лучше XMODEM и заливайте прошивки стандартной терминалкой ...
Go to the top of the page
 
+Quote Post
Punk
сообщение Feb 11 2011, 10:09
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



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

Почему бессмысленно?
Go to the top of the page
 
+Quote Post
kovigor
сообщение Feb 11 2011, 10:15
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



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


Потому что нужно проверять целостность целых блоков, а не отдельных байтов. Потому что для загрузки по вашему методу нужно уникальное ПО. Потому что это медленно. И еще потому, что это ничем не оправдано ...

Сообщение отредактировал kovigor - Feb 11 2011, 10:15
Go to the top of the page
 
+Quote Post
Punk
сообщение Feb 11 2011, 11:17
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



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

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

По поводу ответа после каждого байта и длинных посылок: Убираю ответ и синхра падает мертво, хотя когда сплошным потоком лью код только в RAM, без всяких страниц и секторов, то все хорошо.
Go to the top of the page
 
+Quote Post
scifi
сообщение Feb 11 2011, 11:57
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(Punk @ Feb 11 2011, 14:17) *
Дык...как раз хочется уникальное, и быстрое.

Все велосипеды уже изобретены до нас.
Предлагаю такой вариант: просмотрите форматы, которые поддерживает утилита SRecord. Выберите подходящий и сделайте загрузчик на нём. А SRecord поможет приводить прошивку к нужному формату.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Feb 12 2011, 08:36
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (Punk @ Feb 11 2011, 14:17) *
Убираю ответ и синхра падает мертво

Что такое "синхра падает мертво" понятно, видимо, только Вам, но ждать окончания записи переданного блока надо по любому.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 12 2011, 09:04
Сообщение #10


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



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

+1 за XMODEM. У самих так сделано.
Очень удобно, что не нужно поддерживать софтину для ПК по хрен знает какое кол-во осей.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Punk
сообщение Feb 13 2011, 08:01
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



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


X-Modem это конечно очень удобно, не спорю. Но всеже он громоздкий..мне так кажется. Сделал так:
Разбиваю прошиву на сектора по 8кб и лью их побайтно в RAM затем весь сектор копирую из RAM во FLASH, и зацикливаюсь пока все сектора не запишу. В конце передачи каждого сектора пределаю еще CRC на всякий случай. Работает стабильно и быстро.
А по поводу множества софтин под множество ОС, у меня девайс весьма узкого применения поэтому с эим даже не заморачиваюсь, достаточно одной консольной программульки под Винду.
Go to the top of the page
 
+Quote Post
Lexy_one
сообщение Feb 21 2011, 15:24
Сообщение #12


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 28-07-09
Из: Чернигов
Пользователь №: 51 621



Извиняюсь за не скромный вопрос...
Поделитеь примером бутлоадера или какой нибудь апл_ноте по бутлоадеру...
У меня LPC2368... нада сделать бут по уарт....
А с какой стороны подойти - ума не приложу...
Не могу найти толковых примеров - ПОМОГИТЕ КТО ЧЕМ МОЖЕТ.
Go to the top of the page
 
+Quote Post
Punk
сообщение Feb 21 2011, 16:46
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 242
Регистрация: 19-06-06
Из: Новосибирск
Пользователь №: 18 167



На сайте NXP скачайте исходники LPC2000_Series_Secondary_Bootloader
и аппликухи AN10256 и AN10835. Там все расписано в самом подробном виде
Go to the top of the page
 
+Quote Post
Lexy_one
сообщение Feb 22 2011, 10:17
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 90
Регистрация: 28-07-09
Из: Чернигов
Пользователь №: 51 621



Спасиба за ап ноты, - скачал, правда исходники не нашел...
будем разбираться.....
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 16:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016