Jump to content

Простой загрузчик (BootLoader)


Starichok
 Share

Recommended Posts

я не знаю.

сейчас посмотрел коды всех команд, там такого кода нет вообще. но МК идет по этой "пустой" команде без проблем.

Протеус на 0xFFFF останавливает отладку и выдает ошибку про неправильный код. это я у себя видел, когда загрузчик отрабатывает тайм-аут и переходит на нулевой адрес, а там записано 0xFFFF.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Хорошо,  это актуально только для загрузчиков. я когда писал свои загрузчики, так и не прояснил эту ситуацию. Спасибо за ответ, теперь буду знать.

Link to comment
Share on other sites

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Hongfa для различных применений в Компэл. Большой выбор в наличии!

Компания HONGFA - это не только крупнейший в мире производитель электромеханических реле, но также производитель конденсаторов, вакуумных прерывателей, трансформаторов и низковольтного коммутационного оборудования. На складе КОМПЭЛ регулярно поддерживаются около 100 самых популярных позиций электромеханических реле. Реле Hongfa могут заместить многие изделия производства недоступных брендов. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

кушайте на здоровье!

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Секреты депассивации литиевых батареек FANSO EVE Energy

Самыми лучшими параметрами по энергоемкости, сроку хранения, температурному диапазону и номинальному напряжению обладают батарейки литий-тионилхлоридной электрохимической системы. Но при длительном хранении происходит процесс пассивации. Разберем в чем плюсы и минусы, как можно ее избежать или уменьшить последствия и как проводить депассивацию батареек на примере продукции и рекомендаций компании FANSO EVE Energy. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

выложил новую версию загрузчика, архив BootLoader14.zip.

в компьютерной программе добавлена работа с файлом BootLoader.ini.

в этом файле сохраняются параметры настройки загрузчика на тактовую частоту МК и время ожидания.

при запуске программа устанавливает эти параметры в 8 МГц и 5 секунд. если у вас другая тактовая частота, то при последующем запуске программы не придется заново задавать частоту, как это было в предыдущих версиях. придется только задать новое время ожидания.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

для тех, кому интересно иметь полный функционал, как у программатора, выложил новую версию загрузчика, архив BootLoader Full10.zip.

программа умеет записывать, сравнивать (верификация), читать и стирать.

поскольку полная версия программы и загрузчика умеет читать FLASH, программа настраивает загрузчик без использования файла загрузчика, а делает запись прямо в уже записанный в МК загрузчик. но загрузчик еще до записи его в МК уже должен быть настроен на требуемую тактовую частоту. настроить файл загрузчика на требуемую тактовую частоту следует "малой" программой, которая умеет делать только запись. полная программа настраивает только время ожидания, но нужно убедиться, что программа загрузила правильную частоту МК.

остальные подробности новых возможностей полной программы читайте в файле помощи.

полная версия также работает с файлом BootLoader.ini, где запоминаются предыдущие параметры настройки загрузчика.

 

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

ты уже упоминал верификацию. теперь не нужно МК подключать к программатору, чтобы проверить правильность записи.

 

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Быстро пробежался. По 14 версии вопросов нет, даже битый чип завелся (с 13 версии).

По фул версии: функция "сравнить" и во флеш, и в еепром ругается на ошибки, с самого начала файла, хотя проверка, через программатор на ошибки не ругается (ну кроме на начало загрузчика, который в конце флеша, потому что его нет в записываемом файле, а верификацию выделенной области в программаторе я не стал писать). При запуске "сравнить", программа подвисает на несколько секунд (3-7), а затем бежит зеленый трекбар (может так и надо?).

Фулл версия просто огонь, то что надо!

А, да и самое главное, ну чтобы была полностью законченная (абсолютно законченная) программа, не плохо было бы добавить модификацию фьюзов (кажется имеется такая возможность дотянуться до фьюзов из бутлодера)?!

Link to comment
Share on other sites

у меня никакой ругани при сравнении никогда не было.

сбой/подвисание может быть при потери связи компа с МК.

проверить наличие связи можно кнопкой "Соединить". если связь сохранилась, останется надпись про успешное соединение.

у меня тоже испорченный АТмега8, у которого не читается сигнатура, спокойно работает с загрузчиком.

из загрузчика можно только управлять локами.

а прочитать можно и локи и фьюзы.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Более плотно потестил фулл версию. Работает нестабильно, через раз. Иногда функция стереть показывает время стирания 20 сек, и не стирает, с записью таже проблема, как и с сравнить. С функцией прочитать проблем нет, несколько раз перепроверял. При чем иногда затирает бутлодер  при записи большого файла, ну и ожидаемо пропадает соединедние.

Потестил ЕЕПРОМ, замечаний нет, все работает.

Ну, вобщем, как-то так...

Link to comment
Share on other sites

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

и файл прошивки не должен быть больше доступной области. а доступная область на 1 кБ меньше полного размера флеши.

я хотел сделать проверку на длину прошивки, но забыл.

я сейчас уезжаю погостить у детей и внуков, ноут остается дома. там, естественно, заниматься загрузчиком не смогу.

приеду 22 апреля, тогда смогу заново перепроверить полную версию у себя. хотя, у меня всё прекрасно работало и на АТмега8 и на АТмега88.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Если не правильно выбран МК, связь с бутлодером не установится.... Счастливо отдохнуть!

Link to comment
Share on other sites

Несколько изменив программы, можно отказаться от выбора МК. В моих бутлодерах (ATtiny24, ATtiny44, ATmega88) присутствует команда чтения идентификатора чипа. При считывании известного идентификатора программатор сам устанавливает модель взаимодействия с бутлодером.

Link to comment
Share on other sites

я уже у дочки, могу общаться.

связь не зависит от выбора МК. в "малом" же загрузчике у меня нет выбора МК, а связь работает.

я в даташитах не видел, чтобы можно было прочитать сигнатуру или еще какой-то идентификатор.

подскажи эту команду мне.

20 секунд или другое большое время означает потерю связи.

программа отправляет команду и на приеме ждет ответа. если после истечения тайм-аута нет ответа, функция чтения файла порта завершает работу.

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

без связи общее время ожидания приема на весь размер флеши вполне может набежать и 20 секунд.

сейчас у меня один раз установили соединение, и считается, что соединение не будет потеряно.

вернусь, добавлю проверку ответа после каждой отправленной команды.

в случае неправильного ответа от МК или вообще отсутствия ответа программа сразу прервет начатую операцию и попросит заново установить соединение.

я подозреваю, что ты опять занялся некорректными действиями, как в прошлый раз. и как в прошлый раз, ты в этом не признался.

мало я на тебя блокировок сделал, придется добавлять еще.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

  • 3 weeks later...

А я считал, что ВЫ появитесь не раньше 23 апреля.

Выяснил, почему последний купленный чип (ATmega88), такой дешевый. При записи в ЕЕПРОМ по СРИАЙ постранично (4 байта на страницу) в некоторых страницах не записываются некоторые байты.

 

Хотя при записи по одному байту все пишется без ошибок.

Link to comment
Share on other sites

По поводу времени ожидания последовательного порта. В случае обмена пакетами разной длинны, времени ожидания последовательного порта изменяется в соответствии с длинной пакета. Ну и подразумевается, что байты в пакете передаются без пауз (обусловлено тем, передача ведется через контроллер прямого доступа к памяти [ПДП]).

А учитывая, что бутлодер только тем и занят, что принимает данные с последовательного порта, а затем записывает во флеш или еепром (время записи не более 5 мс),  ответ МК на пакет данных от ПС не должен составлять большого времени (<10мс). мне кажется здесь кроется какое-то логическое несоответствие.

 

Link to comment
Share on other sites

у меня длина пакетов туда и обратно составляет фиксированные 12 байт: 8 данные, 1 команда или флаги операций, остальные контрольная сумма и кодеры пакета (шифрование). И тройной перезапрос со стороны ПС в случае отсутствия ответа от МК. При сборе статистики обмена, в среднем на 70 транзакций приходится один перезапрос, но не более 2 раз.

После трех безуспешных перезапросов, программа выдает ошибку соединения.

Link to comment
Share on other sites

я вернулся 22 апреля.

существенное влияние времени ожидания появляется только в полной версии программы, когда нужно при чтении памяти получить пакет данных (у меня 128 байт).

если прием не идет, то на 128 байт получается большое время ожидания. а на весь объем чтения получится вообще до хрена секунд.

а при записи программа передает пакеты без задержки. но там все равно появляется время ожидания, так как после выполнения операции МК дает ответ.

у меня команда состоит из 4 байт, и МК в ответ отправляет эти же 4 байта команды.

мне было просто лень делать на каждую команду сравнение ответа с отправленной командой.

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

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

но без контроля ответа приходилось долго ждать окончания операции.

а с контролем ответа выполнение операции прервется сразу, если ответ не поступит.

по поводу сигнатуры - такая возможность есть не у всех МК. поэтому чтение сигнатуры для определения типа МК я сделать не могу.

у всех старых нет и у АТмега48/88/168 тоже нет. а у АТмега48Р/88Р/168Р и у АТмега48РА/88РА/168РА такая возможность уже есть.

и у АТмега328/328Р тоже есть.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Так, ну ладно,... забудем про сигнатуры....

И так,... как я вижу Программу.

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

Можно выбрать номер кома и его скорость, тип МК, а также другие вспомогательные парметры,..... и ...

большая красная кнопка "сгенерировать Бутлодер", при нажатии которой, создается файл Бутлодера, с соответствующим именем.

Внутри файла Бутлодера несколько байт выделено для названия МК, которые возможно считать Программой, и которые в дальнейшем определяют модель работы Программы с Бутлодером, чтобы не путать пользоваетля.

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

Добавить команду считывания названия МК из Бутлодера, что кажется мне самым важным.

Да, как я организую процесс записи флеш: заполняю буфер несколькими командами, запускаю команду записать страницу. МК принимает данную команду, декодирует и запускает стирание страницы, дожидается окончания процесса стирания страницы (<5 мс, ЦПУ остановлено), запускает запись страницы (<5 мс, ЦПУ остановлено), осуществляет проверку записанных данных на странице(верификация) и посылает ответ ПК с флагом проверки данных.(Это все из дата шита).

Запись в еепром производится побайтно в каждой комманде. (ну мы же никуда не спешим). При записи в еепром считываются данные из ячейки, и если они совпадают с теми, что нужно записать, то запись не осуществляется. В противном случае запускаем запись данных в ячейку (<5 мс), ждем окончания записи , осуществляем проверку записанных данных в еепром(верификация) и посылаем ответ ПК с флагом проверки данных.

Ну как-то так крупными мазками.

 

 

И да, существует два типа Бутлодеров, написанных с применением прирываний, и без прирываний. объем без прерываний как ни странно меньше.

Link to comment
Share on other sites

у меня уже сгенерировано несколько загрузчиков под разные МК.

из старых МК я не сделал только для АТмега16 и АТмега32.

сейчас имеется 4 вида полных загрузчиков: АТмега8, АТмега88, АТмега168, АТмега328. наличие в конце разных буковок значения не имеет.

а для неполных загрузчиков тип МК вообще не нужен.

не нужна никакая кнопка в программе для генерации загрузчика. нет никаких проблем, чтобы в исходниках загрузчиков сразу прописать название МК, а в комповой программе добавить команду прочитать название МК.

у меня структура функций записи и чтения построены так:

при записи:

1а. команда принять пакет данных.

1б. передача в МК пакета, 128 байт.

1в. прием ответа от МК.

2а. команда задания начального адреса.

2б. прием ответа от МК.

3а. команда записать принятый блок данных.

3б. прием ответа от МК.

при чтении:

1а. команда задания начального адреса.

1б. прием ответа от МК.

2а. команда прочитать блок данных, 128 байт.

2б. прием ответа от МК.

3а. команда передать в комп блок данных, 128 байт.

3б. прием блока данных, 128 байт.

под приемом ответа от МК везде имеется в виду, когда МК передает принятую команду.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

У меня нет команд приема от МК, я использую транзакцию "передал 12 байт / принял 12 байт" всегда. Если не принял 12 байт за отведенный промежуток времени с перезапросами(не более 3х раз), то "ошибка связи".

команды:

1 -16. Записать в буфер по адресу "А" 8 байт, ответ те-же 8 байт для проверки. буфер 128 байт. Чтобы заполнить буфер в 128 байт необходимо 16 транзакций.

17. Прочитать из буфера 8 байт по адресу "А", данные любые, ответ 8 байт. Необязательная команда, используется для проверки.

18. Записать во флеш буфер по адресу "Е", ответ: данные любые, флаг верификации записи либо 0 (без ошибок), либо 1 (ошибка записи).

19. Прочитать 8 байт из флеш по адресу "Е", ответ: данные из флеш для верификации. Необязательная команда.

20. Записать в ЕЕПРОМ один байт по адресу "Р", ответ: данные любые, флаг верификации записи либо 0 (без ошибок), либо 1 (ошибка записи).

21. Прочитать 8 байт из ЕЕПРОМ по адресу "Р, ответ: данные из ЕЕПРОМ для верификации. Необязательная команда.

22. Прочитать версию, дату бутлодера, название используемого МК, начальный адрес бутлодера для ATtiny 24/44/84.

 

Link to comment
Share on other sites

выложил новые версии загрузчиков, архивы BootLoader15.zip и BootLoader Full20.zip.

в оба загрузчика добавлены проверки ответа от МК после каждой команды.

это понадобилось для своевременного обнаружения потери связи между МК и компьютером, а не ждать пока программа пытается впустую закончить выбранную операцию.

 

в "легкой" версии я верификацию не делаю. если при записи на каждую команду пришел ответ от МК, я считаю, что всё сделано правильно.

в полной версии есть верификация прочитанного отдельной кнопкой.

Мудрость приходит вместе с импотенцией...

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...