Например TDA7294

Форум РадиоКот • Просмотр темы - Разговоры про загрузчики
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Пт дек 12, 2025 14:36:59

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 111 ]  1, , , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 17:01:47 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
я уже где-то говорил, что найденный в инете загрузчик, написанный на Си, я переделал, и с тем же функционалом длина загрузчика стала примерно в 3,5 раза меньше.
соответственно, мой загрузчик потребовал в 4 раза меньше загрузочную область - 512 байт против 2 кБ.
так что, сказки про выигрыш в 10-15% - брехня. а 250%, как у меня получилось, не хотите?

Ну и я тебе, кажись, говорил. Оптибут, тот который в большинстве Ардуин, в 512 помещается. Написан на Си.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 18:12:41 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Оптибут без автоматического определения скорости порта. и если я правильно помню, Оптибут пишет только флешь. поэтому Оптибут - это "огрызок" загрузчика, а не нормальный загрузчик.
а я нашел загрузчик с автоматическим определением скорости порта, а блок кода, вычисляющий скорость порта занимает очень много места в общем объеме кода.
и несмотря, что я сохранил этот большой блок кода, вычисляющий скорость порта, общий размер кода у меня так сильно сократился.
и как я уже сказал, я полностью сохранил функционал найденного загрузчика :
определением скорости порта,
запись флеши,
запись еепрома.
потом я решил, что такой урезанный загрузчик, который умеет только писать, меня не устраивает.
поэтому я для себя сделал загрузчик на фиксированную скорость порта (250000 бод), который пишет, стирает, читает и сравнивает и флешь и еепром. а размер этого загрузчика также помещается в область 512 байт.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 19:31:55 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Оптибут без автоматического определения скорости порта
...
поэтому я для себя сделал загрузчик на фиксированную скорость порта

То есть автоопределение скорости порта все-таки не нужно даже вам. Вот так неожиданность.
Starichok51 писал(а):
который пишет, стирает, читает и сравнивает и флешь и еепром.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 20:06:28 
Это не хвост, это антенна

Карма: 4
Рейтинг сообщений: 139
Зарегистрирован: Ср июн 25, 2008 15:19:44
Сообщений: 1480
Рейтинг сообщения: 0
хороший загрузчик у microsin. Пользовался. Работает. По усб. Есть его печатная отладочная плата.


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 20:30:36 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 3
Медали: 1
Лучший человек Форума 2017 (1)
COKPOWEHEU, не надо читать через строчку и по диагонали.
я ясно сказал, что сначала я сделал с тем же функционалом, то есть, с автоопределением. и на forum.cxem.net есть моя тема, где выложены две версии с автоопределением - одна урезанная, которая только пишет флешь и еепром и одна полная, которая пишет, читает, сравнивает и стирает.
если я создаю тему, то это делаю для людей, чтобы работа загрузчика не зависела от тактовой частоты МК. а автоопределение скорости порта дает эту независимость от тактовой частоты.
а моя ЛИЧНАЯ версия на фиксированную скорость сделана лично для меня, так как все мои проекты имеют фиксированную тактовую частоту 8 МГц.
и также моя личная версия исключает несколько операций на компе, в отличие от версии с автоопределением.
а нахера мне совместимость, если мой загрузчик не зависит от стандартных программ?
и я нигде не заявлял, чтобы ардуинщики пользовались моим загрузчиком.
полно НЕардуинщиков, которые хотят иметь удобный и понятный загрузчик. и поэтому моя тема там достаточно популярна.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 21:44:15 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
сначала я сделал с тем же функционалом, то есть, с автоопределением.

А потом код автоподстройки частоты выкинули, что сказалось на размере кода.
Starichok51 писал(а):
а нахера мне совместимость

Лично вам - наверное, не нужна. Но я бы таким пользоваться не стал. Уж лучше бутлоадер, занимающий вдвое больше места, но работающий со стандартными, проверенными утилитами. А не с непонятно чем без исходников.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 22:14:22 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
вот именно, сказалось на размере кода.
а я тебе не предлагал и даже тебя не уговаривал пользоваться моим загрузчиком.
но на том форуме нашлось достаточно людей, с тобой не согласных.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Ср янв 15, 2025 23:36:20 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Напомню: твое высказывание было о том, что на ассемблере удалось обойти Си. На практике же видим обратное: ардуиновский загрузчик (причем ни для кого не секрет, что ардуина - отнюдь не эталон качественного кода) при сравнимом размере обладает большей функциональностью.

Добавлено after 9 minutes 51 second:
а я тебе не предлагал и даже тебя не уговаривал пользоваться моим загрузчиком.

Ах да, чуть не забыл: лично мне безразличны что ардуиновский загрузчик, что твой: со времен, пока я занимался AVR-ками, у меня остались как ISP-программаторы, так и, скажем, самодельный загрузчик (тоже несовместимый с существующими), умещающийся в минимальный размер (128 слов, кажется) и написанный на ассемблере еще в 2014 году.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 12:43:15 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
COKPOWEHEU писал(а):
ардуина - отнюдь не эталон качественного кода) при сравнимом размере обладает большей функциональностью.
прошу перечислить функционал, который превышает мой функционал.
COKPOWEHEU писал(а):
самодельный загрузчик (тоже несовместимый с существующими), умещающийся в минимальный размер (128 слов, кажется) и написанный на ассемблере еще в 2014 году.
прошу перечислить функционал твоего загрузчика в 128 слов.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 12:53:42 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
прошу перечислить функционал, который превышает мой функционал.

Умеет прошивать флеш. Умеет читать флеш. Совместим со стандартным софтом. Исходный код что загрузчика, что прошивальщика, открыт.
В общем-то, это минимум, который нужен для хорошего загрузчика.
Starichok51 писал(а):
прошу перечислить функционал твоего загрузчика в 128 слов.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 17:14:43 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
COKPOWEHEU писал(а):
Умеет прошивать флеш. Умеет читать флеш.
а еепром не умеет? а сравнивать и стирать умеет? если на оба вопроса НЕТ, то ты соврал и мой функционал больше.
а открытость исходников - не показатель функциональности загрузчика.
COKPOWEHEU писал(а):
Прошивка контроллера. Все. Даже чтения не делал. Просто игрушка под какую-то конкретную задачу
так зачем сравнивать игрушку с полнофункциональным загрузчиком7

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 17:59:17 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 48
Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 474
Рейтинг сообщения: 0
Starichok51, бутлоадер с сайта chip45, о котором вы говорите, хотя может у вас была первая версия, на github выложен, он intel hex в мк шлет, именно в виде текста, что сложнее, не уверен, что у вас то же самое. Еще там есть поддержка команд через терминалку, например: ewAAAADD - write byte to eeprom address. Соответственно добавлен код для отправки чисел:

Спойлер
Код:
void usartPutDec(uint16_t usDec)
{
    uint8_t ucBuffer[6];
    uint8_t ucLoop = 5;
   
   ucBuffer[5] = '\0';
   
    while (ucLoop)
    {
        --ucLoop;
        ucBuffer[ucLoop] = (usDec % 10) + '0';
        usDec /= 10;
        if (usDec == 0)
            break;
    }
    usartPutRamStr(&ucBuffer[ucLoop]);
}

void usartPutNibble(uint8_t ucNibble)
{
    ucNibble &= 0x0f;

    if(ucNibble > 9) {
        ucNibble += ('a' - 10);
    } else {
        ucNibble += '0';
    }

    usartPutChar(ucNibble);
}

void usartPutHex(uint8_t ucHex)
{
    usartPutNibble (ucHex >> 4);
    usartPutNibble (ucHex);
}

И работает chip45boot2 с любыми мегами, включая xmega, а у вас поддержка только mega8/88/168/328. Опять же ваш бутлоадер в 512 байт не вмещается, о чем в хелпе к клиенту и написано. Для mega88 у вас размер прошивки 630 байт, у chip45 - 1724.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 18:06:47 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
а еепром не умеет? а сравнивать и стирать умеет?

Ардуиновский? Читать и проверять флеш умеет. eeprom - нет.
а открытость исходников - не показатель функциональности загрузчика.

Это признак надежности и ремонтопригодности.
так зачем сравнивать игрушку с полнофункциональным загрузчиком7

Видал я фирменные загрузчики, недалеко ушедшие по функциональности. В контроллерах ch32. Писать флеш умеют, верифицировать тоже. Даже редактировать "фьюзы" умеют. (еепрома там нет вообще) А вот читать - нет. И со стандартным софтом несовместимы. А фирменный дико неудобен. Пришлось дизассемблировать загрузчик и писать нормальную консольную утилиту прошивки.
А если бы разработчики руководствовались не твоими соображениями, а здравым смыслом, большого геморроя удалось бы избежать.
Кстати о чтении: его отсутствие, возможно, мотивировали защитой от копирования.
Цитата:
он грузит intel hex, именно в виде текста
Там что, можно прямо по UART залить загрузчик, без программы-прошивальщика?
Но даже если так хекс штука неудобная: можно сделать, чтобы по одним и тем же адресам находились разные данные, чтобы данные шли вразнобой и т.д.
Когда с загрузчиками работал я, то поручал парсинг хекса компу. У него памяти много, может себе позволить загрузить хекс целиком, проверить корректность, проверить размер, переформатировать для прошивки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 18:34:12 
Мучитель микросхем

Карма: 1
Рейтинг сообщений: 48
Зарегистрирован: Вт окт 01, 2024 15:22:33
Сообщений: 474
Рейтинг сообщения: 0
Там что, можно прямо по 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 увеличивает...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 19:39:32 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
Adrift, у меня был скачан именно chip45boot2. я его дизассемблировал и разобрался в алгоритме автоопределения скорости порта.
заодно нашел грубейшую ошибку - вычисленное число скорости не уменьшалось на 1 перед записью в регистр бодрейта. из-за этого загрузчик у меня плохо связывался с компом на высоких скоростях. связывался на 4800 и кое-как на 9600.
Adrift писал(а):
И работает chip45boot2 с любыми мегами
вот только нужно для каждой меги скачивать свой загрузчик.
ну да, количество МК у меня ограничено, но я сделал только для самых популярных. к тому же, кроме перечисленных у меня нет других МК, чтобы я мог проверить работу загрузчика на них.
да и то, чтобы проверить на 168 и 328, я специально их покупал для проверки.
Adrift писал(а):
Опять же ваш бутлоадер в 512 байт не вмещается, о чем в хелпе к клиенту и написано. Для mega88 у вас размер прошивки 630 байт
630 байт - это полный функционал (запись, чтение, стирание и сравнение), а такой же функционал, как у chip45boot2 - для всех менее 512 байт (454 для мега8 и 492 для дркгих).

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 21:49:10 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
У меня тоже клиент парсил hex

Мне такой вариант все же не нравится. Слишком ненадежный. Но это не важно, в конце концов не мне же им пользоваться.
Starichok51 писал(а):
Adrift, у меня был скачан именно chip45boot2. я его дизассемблировал

Э? Так Adrift же кинул ссылку на исходники. Зачем дизассемблировать?
Starichok51 писал(а):
а такой же функционал, как у chip45boot2

То есть с поддержкой командного протокола и парсингом хекса?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 22:31:08 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
я не знал про существование исходников, поэтому дизассемблировал. и мне это труда не составило.
не знаю, что ты понимаешь под парсингом.
у меня собственная комповая программа и, соответственно, собственный протокол.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Чт янв 16, 2025 23:07:37 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
не знаю, что ты понимаешь под парсингом.

chip45boot2 может принимать прошивку в виде текстового hex-файла. Соответственно, бутлоадер должен из введенной строки выковырять адрес, бинарные данные и LRC-сумму. Потом добавить данные из этой строки к буферу страницы (хорошо бы с учетом разрывов). И, когда страница заполнится, записать ее.
Реализовать свой протокол куда проще. Там ведь можно на стороне ПК побить бинарник на страницы и загружать их по одной в удобном контроллеру формате.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Пт янв 17, 2025 07:39:09 
Модератор
Аватар пользователя

Карма: 153
Рейтинг сообщений: 2926
Зарегистрирован: Сб авг 14, 2010 15:05:51
Сообщений: 18889
Откуда: г. Озерск, Челябинская обл.
Рейтинг сообщения: 0
Медали: 1
Лучший человек Форума 2017 (1)
ну да, комповая программа у меня принимает обычный текстовый hex-файл, и делает всё, что ты перечислил.
а отправляет на запись или читает по 128 байтов.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопрос по программированию задержки внутри прерывания
СообщениеДобавлено: Пт янв 17, 2025 10:48:33 
Говорящий с текстолитом
Аватар пользователя

Карма: 8
Рейтинг сообщений: 212
Зарегистрирован: Чт июн 10, 2010 20:11:19
Сообщений: 1525
Рейтинг сообщения: 0
Мой "игрушечный" бутлоадер сначала запрашивал размер страницы.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 111 ]  1, , , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 33


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y