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

 
 
 
Reply to this topicStart new topic
> bootloader
maloii
сообщение Sep 26 2009, 21:49
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Подскажите что выбрать, запутался совсем. Хочу шить контроллер (atmega168) через UART. USB=>UART имею. Поискал в инете но совсем запутался, куча предложений. Так же хотел бы бутлоадер для которого не надо резетить чип чтобы прошить(просто на плате есть только выход UART). Везде описывают что файл бутлоадера я должен сам компилить, неужели готовых хексов никто не сделал?
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 26 2009, 22:02
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(maloii @ Sep 27 2009, 01:49) *
Подскажите что выбрать, запутался совсем. Хочу шить контроллер (atmega168) через UART. USB=>UART имею. Поискал в инете но совсем запутался, куча предложений. Так же хотел бы бутлоадер для которого не надо резетить чип чтобы прошить(просто на плате есть только выход UART). Везде описывают что файл бутлоадера я должен сам компилить, неужели готовых хексов никто не сделал?


Вы изначально желаете шить МК через UART ? Или все-же сначала зальете его нормальным способом ?


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 26 2009, 22:07
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(maloii @ Sep 27 2009, 00:49) *
Так же хотел бы бутлоадер для которого не надо резетить чип чтобы прошить(просто на плате есть только выход UART).
Процессор может ресетить себя сам при помощи собаки (watchdog).
Цитата(maloii @ Sep 27 2009, 00:49) *
Везде описывают что файл бутлоадера я должен сам компилить, неужели готовых хексов никто не сделал?
А неужели чей-то чужой готовый хекс магическим образом будет работать как раз в вашем протоколе обмена?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 26 2009, 22:31
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



maloii ! Поставьте конкретный и последовательный вопрос, а то получается "желаю купить дом - но не имею возможности,
имею возможность купить козу - но не имею желания..." biggrin.gif

Как я понял из ваших слов:

1) У Вас есть пустой МК ATmega168 и вы желаете менять память программ через UART.
2) Вам придется написать основную программу которая будет опрашивать UART и по какому-то "волшебному слову" переда-
вать "бразды правления" программе бутлоадера (которую придется тоже написать самому).
3) Программа бутлоадера будет получать данные через UART и соответственно заполнять ими память основной программы,
после чего опять передаст "бразды правления" основной программе.

Сложные и заковыристые "танцы с бубнами" cranky.gif , но теоретически решаемые... smile.gif

И что это за устройство такое чудное ?


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
maloii
сообщение Sep 27 2009, 07:03
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Цитата(manul78 @ Sep 27 2009, 02:31) *
1) У Вас есть пустой МК ATmega168 и вы желаете менять память программ через UART.
2) Вам придется написать основную программу которая будет опрашивать UART и по какому-то "волшебному слову" переда-
вать "бразды правления" программе бутлоадера (которую придется тоже написать самому).
3) Программа бутлоадера будет получать данные через UART и соответственно заполнять ими память основной программы,
после чего опять передаст "бразды правления" основной программе.

Я собрал плату с мегой 168, но для упрощения схемы выходы для ISP не стал делать, но на плате есть выход UART. Кнопочек для резета не делал. К чипу просто подпоялся и залить прошивку через ISP могу. Саму программу для этого чипа написал, но на будущее охота обновлять прогу через uart. С бутлоадерами раньше не общался и поэтому возник вопрос какой же выбрать, какой прогой шить и как обойти надобность кнопочки резет которой нет на плате.
С низу приложил файл с разводкой, просто плата настолько малюсенькая что разъем для программирования там будет лишний, а вот обновлять прошивку возможно придется часто.

Сообщение отредактировал rezident - Sep 27 2009, 19:01
Причина редактирования: Излишнее цитирование.

Прикрепленные изображения
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 27 2009, 08:02
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(maloii @ Sep 27 2009, 11:03) *
Я собрал плату с мегой 168, но для упрощения схемы выходы для ISP не стал делать, но на плате есть выход UART. Кнопочек для резета не делал. К чипу просто подпоялся и залить прошивку через ISP могу. Саму программу для этого чипа написал, но на будущее охота обновлять прогу через uart. С бутлоадерами раньше не общался и поэтому возник вопрос какой же выбрать, какой прогой шить и как обойти надобность кнопочки резет которой нет на плате.
С низу приложил файл с разводкой, просто плата настолько малюсенькая что разъем для программирования там будет лишний, а вот обновлять прошивку возможно придется часто.


В Вашем случае проще. У ATmega168 немножко другая организация памяти. Она делится на 2 части:

1) RWW (чтение при записи)
2) NRWW (нет чтения при записи)

Условно можно обозначить, что секция прикладной программы это RWW, а секция загрузчика - NRWW.

Cоответственно можно написать обработчик прерывания для UART. Т.е. получив от внешнего источника определенный
байт ("волшебное слово" например 0xFF или серию байт например "I WANT UPDATE") обработчик передаст управление
программе JMP или CALL расположенной в области NRWW. Там будет код, который будет читать информацию через
UART и писать её в область RWW. После окончания "перезаписи" осуществляем переход JMP или RET обратно в область
RWW где находится Ваша основная (обновленная) программа.

P.S. Старички меня поймут, вспомнят и улыбнутся (хотя мне всего 32 года). Раньше во времена "суперкомпьютеров"
ZX-SPECTRUM небезизвестный Bill Gilbert таким макаром защищал программы от взлома и перезаписи. Т.к. битва
шла практически за каждый байт (48 кБ оперативки) то при считывании игры с кассеты сначала считывался "заг-
рузчик" который затем считывал основную программу, и фишкой было когда программа загрузчика делала CALL
из "загрузчика" а возращалась (беря адрес возврата из стека) уже по перезаписанному в процессе загрузке адресу
тем самым стартуя основную программу (игру). Эх были времена... rolleyes.gif

Цитата(maloii @ Sep 27 2009, 11:03) *
С низу приложил файл с разводкой, просто плата настолько малюсенькая что разъем для программирования там будет лишний, а вот обновлять прошивку возможно придется часто.


Зря, Вы уважаемый сразу ударились в "миниатюры". Сначала надо было "откатать" устройство на "монтажке", потому как
в процессе разработки и отладки всегда бывают "подводные камни". Это я Вам как неоднократно "садившийся на мель"
говорю. smile.gif

Кстати, ATMEL предлагает совершенно бесплатную программу FLIP, и уже готовый фирменный бутлоадер для неё. Т.е.
Например AT90USB162 (с встроенным USB) позволяет залив сначала в чип специальный бутлоадер производить посредством
программы FLIP операции аналогичные ISP программатору только напрямую через USB. Поддерживает она (FLIP) и microLAN
и CAN и по моему даже RS-232... (!). Посмотрите даташит на нее, возможно для Вашего МК есть готовое решение, в против
ном случае Вам придется еще писать программу-терминал (для РС) обмена между компьютером и Вашим устройством.


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
maloii
сообщение Sep 27 2009, 15:58
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Ну а предположим я буду резетить чип проводком, соединив резет и VCC. То какой бутлоадер вы порекомендуете?
Go to the top of the page
 
+Quote Post
manul78
сообщение Sep 27 2009, 16:56
Сообщение #8


Местный
***

Группа: Участник
Сообщений: 403
Регистрация: 14-05-07
Из: Россия, г.Пенза
Пользователь №: 27 719



Цитата(maloii @ Sep 27 2009, 19:58) *
Ну а предположим я буду резетить чип проводком, соединив резет и VCC. То какой бутлоадер вы порекомендуете?


Соеденив Resrt и Vcc (через резистор в 47К) Вы как раз получите нормальное рабочее состояние МК, ресет происходит
посредством подачи "ноля" или проще говоря замыканием на "землю" (GND).

Ничего я Вам рекомендовать не буду, ибо встечал готовые решения типа "бутлоадер"+программа терминал для PC только
ATMEL-овского производства (FLIP), но данное решение для Вашего МК не подходит. Бутлоадер придется писать самому.
И программу-терминал для обмена самому... Возможно есть готовые проекты - но что-то не встречал... smile.gif


--------------------
" Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий." (с) К.Прутков.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 27 2009, 21:34
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(maloii @ Sep 27 2009, 18:58) *
Ну а предположим я буду резетить чип проводком, соединив резет и VCC. То какой бутлоадер вы порекомендуете?
Даже если не будете ресетить, начать можете с AVR231


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
maloii
сообщение Sep 28 2009, 09:03
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Странно что нет готовова решения. Как я понял большинство шьют читы по UART, просто просматривая какое то количество проектов у меня сложилось такое впечатление. Типа перед впайкой заливают в чип бутлоадер а потом спокойно по UART его щъют, удобно и практично. Мол для экономии разводки и простоты. И я себе представлял что должна быть прога в которой будут хексы на все чипы и на все скоростя. Типа выбрал нужный хекс, залил в чип и потом запустил прогу и шьешь через неё. Просто кажется очевидным надобность такой проги, но видно никто так и не сделал sad.gif .
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 28 2009, 11:38
Сообщение #11


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(maloii @ Sep 28 2009, 12:03) *
И я себе представлял что должна быть прога в которой будут хексы на все чипы и на все скоростя.
Вы упустили ключевое слово из моего первого сообщения, которого не хватет в этом вашем предложении и которое устремляет количество этих хексов в бесконечность: и на все протоколы общения по UART, в том числе и самопальные от юных радиолюбителей. В чем великая проблема скомпилить тот же AVR231 под ваш процессор и вашу скорость?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
maloii
сообщение Sep 28 2009, 12:59
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 29-02-08
Пользователь №: 35 472



Ну вот возьмем протокол AVR231, у нас есть какое то количество чипов, какое то количество вариаций работы UART. Генерятся хексы для всех этих случаев. И именованно лежат на сайте. Зашел скачал, залил в чип. Потом скачал нужную прогу, подключился по терминалу и залил хекс самой проги. По моему логичная картина. А сейчас это как я вижу, хотя замечу что вижу я плохо пока, потому что второй день с этим играюсь. Так вот я вижу следующее, несколько разных проектов по бутлоадерам, все распространяются как проект для какой то конкретной IDE. И дело в том что для своей AVR Studio я увидел всего один, но в нем для моего 168 чипа не было настроек. Получается что чтобы понять что до как придется исучить дюжину IDE и всякие тараканы вместе с ними sad.gif .
Хотя я наверное что то недопонимаю и не вижу всей сложности задачи sad.gif.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 28 2009, 13:50
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(maloii @ Sep 28 2009, 15:59) *
Ну вот возьмем протокол AVR231, у нас есть какое то количество чипов, какое то количество вариаций работы UART. Генерятся хексы для всех этих случаев. И именованно лежат на сайте. Зашел скачал, залил в чип. Потом скачал нужную прогу, подключился по терминалу и залил хекс самой проги. По моему логичная картина.
Добавьте между "скачал" и "залил" операцию "скомпилил" и получите существующее положение вещей. Потому что почти никому кроме вас не нужен тот протокол, в котором общается загрузчик AVR231.
Цитата(maloii @ Sep 28 2009, 15:59) *
Получается что чтобы понять что до как придется исучить дюжину IDE и всякие тараканы вместе с ними sad.gif .
Нет. Надо изучить исходники и портировать их под вашу IDE. Заодно поймете что и как в них работает.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Sep 28 2009, 16:51
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



2 maloii. Похоже вы не совсем верно представляете назначение бутлоадера.
Бутлоадер предназначен, большей частью, для обновления прошивки в уже готовом и проданном изделии. Цель - устранение ошибок или неточностей, увеличение функциональности, увеличение производительности.

Для просто заливки программы пользуются обычным программатором. Их большое множество, в том числе и работающих с AVR Studio.

Частота работы камня, как правило, не влияет на работу бутлоадера. Просто сам бутлоадер пишется для определённой частоты (обычно задаётся в виде константы). Частота передачи информации от компа к камню по USART, тоже не всегда принципиальна. Существует несколько способов определения частоты передачи в сеансе связи с бутлоадером.
1) ini файл
2) запросы на разной частоте
3) автоопределение скорости камнем.

Таким образом приложение для компьютера может быть очень универсальным. То есть одно приложение может записывать код в большое колличество различных изделий.

С другой стороны, это тоже бывает не совсем удобно. Иногда я пишу специализированное приложение. Универсальность удобна разработчику, а клиенту она ни к чему.
Go to the top of the page
 
+Quote Post
woroba
сообщение Sep 29 2009, 13:25
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 18-07-05
Пользователь №: 6 871



Цитата(maloii @ Sep 28 2009, 15:03) *
Странно что нет готовова решения.

В сети полно.
Вот например http://www.microsyl.com/
Go to the top of the page
 
+Quote Post

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

 


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


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