я уже где-то говорил, что найденный в инете загрузчик, написанный на Си, я переделал, и с тем же функционалом длина загрузчика стала примерно в 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 байтов.
_________________ Мудрость приходит вместе с импотенцией... Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения