я уже где-то говорил, что найденный в инете загрузчик, написанный на Си, я переделал, и с тем же функционалом длина загрузчика стала примерно в 3,5 раза меньше. соответственно, мой загрузчик потребовал в 4 раза меньше загрузочную область - 512 байт против 2 кБ. так что, сказки про выигрыш в 10-15% - брехня. а 250%, как у меня получилось, не хотите?
Ну и я тебе, кажись, говорил. Оптибут, тот который в большинстве Ардуин, в 512 помещается. Написан на Си.
Оптибут без автоматического определения скорости порта. и если я правильно помню, Оптибут пишет только флешь. поэтому Оптибут - это "огрызок" загрузчика, а не нормальный загрузчик. а я нашел загрузчик с автоматическим определением скорости порта, а блок кода, вычисляющий скорость порта занимает очень много места в общем объеме кода. и несмотря, что я сохранил этот большой блок кода, вычисляющий скорость порта, общий размер кода у меня так сильно сократился. и как я уже сказал, я полностью сохранил функционал найденного загрузчика : определением скорости порта, запись флеши, запись еепрома. потом я решил, что такой урезанный загрузчик, который умеет только писать, меня не устраивает. поэтому я для себя сделал загрузчик на фиксированную скорость порта (250000 бод), который пишет, стирает, читает и сравнивает и флешь и еепром. а размер этого загрузчика также помещается в область 512 байт.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Оптибут без автоматического определения скорости порта ... поэтому я для себя сделал загрузчик на фиксированную скорость порта
То есть автоопределение скорости порта все-таки не нужно даже вам. Вот так неожиданность.
Starichok51 писал(а):
который пишет, стирает, читает и сравнивает и флешь и еепром.
То есть всей разницы - что вы добавили чтение и запись eeprom. При этом потеряв такую важнейшую вещь, как совместимость со стандартными программами-прошивальщиками. Пока что ардуиновский загрузчик безусловно выигрывает.
COKPOWEHEU, не надо читать через строчку и по диагонали. я ясно сказал, что сначала я сделал с тем же функционалом, то есть, с автоопределением. и на forum.cxem.net есть моя тема, где выложены две версии с автоопределением - одна урезанная, которая только пишет флешь и еепром и одна полная, которая пишет, читает, сравнивает и стирает. если я создаю тему, то это делаю для людей, чтобы работа загрузчика не зависела от тактовой частоты МК. а автоопределение скорости порта дает эту независимость от тактовой частоты. а моя ЛИЧНАЯ версия на фиксированную скорость сделана лично для меня, так как все мои проекты имеют фиксированную тактовую частоту 8 МГц. и также моя личная версия исключает несколько операций на компе, в отличие от версии с автоопределением. а нахера мне совместимость, если мой загрузчик не зависит от стандартных программ? и я нигде не заявлял, чтобы ардуинщики пользовались моим загрузчиком. полно НЕардуинщиков, которые хотят иметь удобный и понятный загрузчик. и поэтому моя тема там достаточно популярна.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
сначала я сделал с тем же функционалом, то есть, с автоопределением.
А потом код автоподстройки частоты выкинули, что сказалось на размере кода.
Starichok51 писал(а):
а нахера мне совместимость
Лично вам - наверное, не нужна. Но я бы таким пользоваться не стал. Уж лучше бутлоадер, занимающий вдвое больше места, но работающий со стандартными, проверенными утилитами. А не с непонятно чем без исходников.
вот именно, сказалось на размере кода. а я тебе не предлагал и даже тебя не уговаривал пользоваться моим загрузчиком. но на том форуме нашлось достаточно людей, с тобой не согласных.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Напомню: твое высказывание было о том, что на ассемблере удалось обойти Си. На практике же видим обратное: ардуиновский загрузчик (причем ни для кого не секрет, что ардуина - отнюдь не эталон качественного кода) при сравнимом размере обладает большей функциональностью.
а я тебе не предлагал и даже тебя не уговаривал пользоваться моим загрузчиком.
Ах да, чуть не забыл: лично мне безразличны что ардуиновский загрузчик, что твой: со времен, пока я занимался AVR-ками, у меня остались как ISP-программаторы, так и, скажем, самодельный загрузчик (тоже несовместимый с существующими), умещающийся в минимальный размер (128 слов, кажется) и написанный на ассемблере еще в 2014 году.
ардуина - отнюдь не эталон качественного кода) при сравнимом размере обладает большей функциональностью.
прошу перечислить функционал, который превышает мой функционал.
COKPOWEHEU писал(а):
самодельный загрузчик (тоже несовместимый с существующими), умещающийся в минимальный размер (128 слов, кажется) и написанный на ассемблере еще в 2014 году.
прошу перечислить функционал твоего загрузчика в 128 слов.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
прошу перечислить функционал, который превышает мой функционал.
Умеет прошивать флеш. Умеет читать флеш. Совместим со стандартным софтом. Исходный код что загрузчика, что прошивальщика, открыт. В общем-то, это минимум, который нужен для хорошего загрузчика.
Starichok51 писал(а):
прошу перечислить функционал твоего загрузчика в 128 слов.
Прошивка контроллера. Все. Даже чтения не делал. Просто игрушка под какую-то конкретную задачу, уже точно не вспомню какую. --- Вообще, если браться за бутлоадеры сейчас, то скорее для ch32v003 - чтобы им хоть как-то можно было пользоваться, поскольку тот, что идет с завода, нерабочий.
а еепром не умеет? а сравнивать и стирать умеет? если на оба вопроса НЕТ, то ты соврал и мой функционал больше. а открытость исходников - не показатель функциональности загрузчика.
COKPOWEHEU писал(а):
Прошивка контроллера. Все. Даже чтения не делал. Просто игрушка под какую-то конкретную задачу
так зачем сравнивать игрушку с полнофункциональным загрузчиком7
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Starichok51, бутлоадер с сайта chip45, о котором вы говорите, хотя может у вас была первая версия, на github выложен, он intel hex в мк шлет, именно в виде текста, что сложнее, не уверен, что у вас то же самое. Еще там есть поддержка команд через терминалку, например: ewAAAADD - write byte to eeprom address. Соответственно добавлен код для отправки чисел:
И работает chip45boot2 с любыми мегами, включая xmega, а у вас поддержка только mega8/88/168/328. Опять же ваш бутлоадер в 512 байт не вмещается, о чем в хелпе к клиенту и написано. Для mega88 у вас размер прошивки 630 байт, у chip45 - 1724.
так зачем сравнивать игрушку с полнофункциональным загрузчиком7
Видал я фирменные загрузчики, недалеко ушедшие по функциональности. В контроллерах ch32. Писать флеш умеют, верифицировать тоже. Даже редактировать "фьюзы" умеют. (еепрома там нет вообще) А вот читать - нет. И со стандартным софтом несовместимы. А фирменный дико неудобен. Пришлось дизассемблировать загрузчик и писать нормальную консольную утилиту прошивки. А если бы разработчики руководствовались не твоими соображениями, а здравым смыслом, большого геморроя удалось бы избежать. Кстати о чтении: его отсутствие, возможно, мотивировали защитой от копирования.
Цитата:
он грузит intel hex, именно в виде текста
Там что, можно прямо по UART залить загрузчик, без программы-прошивальщика? Но даже если так хекс штука неудобная: можно сделать, чтобы по одним и тем же адресам находились разные данные, чтобы данные шли вразнобой и т.д. Когда с загрузчиками работал я, то поручал парсинг хекса компу. У него памяти много, может себе позволить загрузить хекс целиком, проверить корректность, проверить размер, переформатировать для прошивки.
Там что, можно прямо по UART залить загрузчик, без программы-прошивальщика?
Судя по исходникам, да:
Код:
// pf write hexfile to flash memory // return value: pf+ // The + indicates successful interpretation of the command. // Now an intel hex file can be send to the MCU over the UART. // For every successful read and parsed record line a '.' is printed. When a flash page write is done, a '*' is printed. // In case a checksum error is detected in a record line, a '-' is printed and the command is terminated.
COKPOWEHEU писал(а):
Но даже если так хекс штука неудобная: можно сделать, чтобы по одним и тем же адресам находились разные данные, чтобы данные шли вразнобой и т.д. Когда с загрузчиками работал я, то поручал парсинг хекса компу. У него памяти много, может себе позволить загрузить хекс целиком, проверить корректность, проверить размер, переформатировать для прошивки.
У меня тоже клиент парсил hex, как минимум его передавать в 2+ раза дольше, на каждый байт 2 символа плюс дополнительная информация. Но прошивку то парсинг hex увеличивает...
Adrift, у меня был скачан именно chip45boot2. я его дизассемблировал и разобрался в алгоритме автоопределения скорости порта. заодно нашел грубейшую ошибку - вычисленное число скорости не уменьшалось на 1 перед записью в регистр бодрейта. из-за этого загрузчик у меня плохо связывался с компом на высоких скоростях. связывался на 4800 и кое-как на 9600.
Adrift писал(а):
И работает chip45boot2 с любыми мегами
вот только нужно для каждой меги скачивать свой загрузчик. ну да, количество МК у меня ограничено, но я сделал только для самых популярных. к тому же, кроме перечисленных у меня нет других МК, чтобы я мог проверить работу загрузчика на них. да и то, чтобы проверить на 168 и 328, я специально их покупал для проверки.
Adrift писал(а):
Опять же ваш бутлоадер в 512 байт не вмещается, о чем в хелпе к клиенту и написано. Для mega88 у вас размер прошивки 630 байт
630 байт - это полный функционал (запись, чтение, стирание и сравнение), а такой же функционал, как у chip45boot2 - для всех менее 512 байт (454 для мега8 и 492 для дркгих).
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
я не знал про существование исходников, поэтому дизассемблировал. и мне это труда не составило. не знаю, что ты понимаешь под парсингом. у меня собственная комповая программа и, соответственно, собственный протокол.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
chip45boot2 может принимать прошивку в виде текстового hex-файла. Соответственно, бутлоадер должен из введенной строки выковырять адрес, бинарные данные и LRC-сумму. Потом добавить данные из этой строки к буферу страницы (хорошо бы с учетом разрывов). И, когда страница заполнится, записать ее. Реализовать свой протокол куда проще. Там ведь можно на стороне ПК побить бинарник на страницы и загружать их по одной в удобном контроллеру формате.
ну да, комповая программа у меня принимает обычный текстовый hex-файл, и делает всё, что ты перечислил. а отправляет на запись или читает по 128 байтов.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения