Разговоры про загрузчики

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

размер страницы запрашивать не надо - сам МК прекрасно знает свой размер страницы.
да и команды такой не существует, которая возвращала бы размер страницы.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по программированию задержки внутри прерывания

Сообщение COKPOWEHEU »

Это у тебя нет. А для бутлоадера проще, когда не надо дополнительно пилить принятый массив на несколько отдельных операций записи.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

не у меня, а во всех даташитах нет такой команды чтения размера страницы.
или ты знаешь недокументированную функцию?
а как ты собрался, например, 30 кБ не пиливши записывать?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по программированию задержки внутри прерывания

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672402#p4672402"]не у меня, а во всех даташитах нет такой команды чтения размера страницы.[/uquote]
Каким боком даташит к протоколу обмена? У контроллера есть макрос PAGESIZE (в avr-gcc - SPM_PAGESIZE), который он может послать утилите.
[uquote="Starichok51",url="/forum/viewtopic.php?p=4672402#p4672402"]а как ты собрался, например, 30 кБ не пиливши записывать?[/uquote]
Это ты собрался зачем-то. Я-то как раз по размеру страницы еще на стороне ПК пилю.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

а, ну если только брать объявленный параметр. но как я уже сказал, мне его получать не нужно.
так и я пилю на стороне ПК по 128 байт (1 или 2 страницы). а МК уже сам знает, сколько страниц ему писать.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по программированию задержки внутри прерывания

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672424#p4672424"]а, ну если только брать объявленный параметр. но как я уже сказал, мне его получать не нужно.[/uquote]
То есть МК у тебя все-таки знает размер своей страницы. А как же "во всех даташитах нет такой команды чтения размера страницы" и "команды такой не существует, которая возвращала бы размер страницы"?
[uquote="Starichok51",url="/forum/viewtopic.php?p=4672424#p4672424"]так и я пилю на стороне ПК по 128 байт (1 или 2 страницы). а МК уже сам знает, сколько страниц ему писать.[/uquote]

Код: Выделить всё

$ grep "PAGESIZE" /usr/share/avra/*.inc
/usr/share/avra/m1280def.inc:.equ       PAGESIZE        = 128
/usr/share/avra/m128def.inc:.equ        PAGESIZE        = 128
/usr/share/avra/m161def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m162def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m163def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m165def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m168def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m169def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m16def.inc:.equ PAGESIZE        = 64
/usr/share/avra/m2560def.inc:.equ       PAGESIZE        = 128
/usr/share/avra/m2561def.inc:.equ       PAGESIZE        = 128
/usr/share/avra/m323def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m3250def.inc:.equ       PAGESIZE        = 64
/usr/share/avra/m325def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m328Pdef.inc:.equ       PAGESIZE        = 64
/usr/share/avra/m3290def.inc:.equ       PAGESIZE        = 64
/usr/share/avra/m329def.inc:.equ        PAGESIZE        = 64
/usr/share/avra/m32def.inc:.equ PAGESIZE        = 64
/usr/share/avra/m406def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/m48def.inc:.equ PAGESIZE        = 32
/usr/share/avra/m644def.inc:.equ        PAGESIZE        = 128
/usr/share/avra/m649def.inc:.equ        PAGESIZE        = 128
/usr/share/avra/m64def.inc:.equ PAGESIZE        = 128
/usr/share/avra/m8515def.inc:.equ       PAGESIZE        = 32
/usr/share/avra/m8535def.inc:.equ       PAGESIZE        = 32
/usr/share/avra/m88def.inc:.equ PAGESIZE        = 32
/usr/share/avra/m8def.inc:.equ  PAGESIZE        = 32
/usr/share/avra/pwm2def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/pwm3def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn10def.inc:.equ        PAGESIZE        = 16
/usr/share/avra/tn13Adef.inc:.equ       PAGESIZE        = 16
/usr/share/avra/tn13def.inc:.equ        PAGESIZE        = 16
/usr/share/avra/tn20def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn2313Adef.inc:.equ     PAGESIZE        = 16
/usr/share/avra/tn2313def.inc:.equ      PAGESIZE        = 16
/usr/share/avra/tn24Adef.inc:.equ       PAGESIZE        = 16
/usr/share/avra/tn24def.inc:.equ        PAGESIZE        = 16
/usr/share/avra/tn25def.inc:.equ        PAGESIZE        = 16
/usr/share/avra/tn4313def.inc:.equ      PAGESIZE        = 32
/usr/share/avra/tn44Adef.inc:.equ       PAGESIZE        = 32
/usr/share/avra/tn44def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn45def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn48def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn84def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn85def.inc:.equ        PAGESIZE        = 32
/usr/share/avra/tn88def.inc:.equ        PAGESIZE        = 32
Упс, размер страницы бывает от 16 до 128 слов (32 - 256 байт). И это список из изрядно устаревшего avra. А уж если посмотреть что посвежее:

Код: Выделить всё

$ grep "SPM_PAGESIZE" /usr/lib/avr/include/avr/*.h
/usr/lib/avr/include/avr/boot.h:        for (i=0; i<SPM_PAGESIZE; i+=2)
/usr/lib/avr/include/avr/io90pwm161.h:#  define SPM_PAGESIZE 128
/usr/lib/avr/include/avr/io90pwm161.h:#  define SPM_PAGESIZE 128U
...
/usr/lib/avr/include/avr/iox128a3u.h:#  define SPM_PAGESIZE 512
/usr/lib/avr/include/avr/iox128a3u.h:#  define SPM_PAGESIZE 512U
/usr/lib/avr/include/avr/iox128a4u.h:#  define SPM_PAGESIZE 256
/usr/lib/avr/include/avr/iox128a4u.h:#  define SPM_PAGESIZE 256U
...
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

COKPOWEHEU писал(а):То есть МК у тебя все-таки знает размер своей страницы.
вот именно!
для каждого МК имеется своя прошивка загрузчика, и в прошивке сделано, писать 2 страницы (для меги8) или 1 страницу (для меги328).
и объявленный размер страницы - это не команда, а объявление параметра.
COKPOWEHEU писал(а):размер страницы бывает от 16 до 128 слов
поскольку у меня сделано всего 4 загрузчика (8, 88, 168, 328), мне по херу другие размеры страницы у других МК.

Добавлено after 12 minutes 46 seconds:
да, и еще вспомнил - у chip45boot2 есть огромный минус. время ожидания связи с компом (прежде, чем запустить прошивку) зависит от тактовой частоты МК.
если дл я 8 МГц это время составляет более 2 секунд, то для 1 МГц уже получается около 20 секунд.
мне интересно, кому-то будет интересно ждать 20 секунд, пока запустится прошивка, если связь с компом не нужна?
а у меня на компе можно задать тактовую частоту и задать нужное время ожидания, и соответствующей командой настроить загрузчик на желаемое время ожидания.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по программированию задержки внутри прерывания

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672477#p4672477"]
COKPOWEHEU писал(а):То есть МК у тебя все-таки знает размер своей страницы.
вот именно![/uquote]
Тогда к чему была фраза про то, что "контроллер не может послать размер страницы"?
[uquote="Starichok51",url="/forum/viewtopic.php?p=4672477#p4672477"]да, и еще вспомнил - у chip45boot2 есть огромный минус. время ожидания связи с компом (прежде, чем запустить прошивку) зависит от тактовой частоты МК.[/uquote]
То есть даже теперь, когда ты знаешь, что исходник открыт, заглянуть в него ты не догадался. Ладно, мне оказалось не лень. Файл chip45boot2/bootloader/main.c, 223 строка. Берешь и выставляешь любой таймаут, хоть зависимый от частоты, хоть нет. И номер UART-а (в некоторых камнях он не один) в том загрузчике тоже можно указать.
[uquote="Starichok51",url="/forum/viewtopic.php?p=4672477#p4672477"]поскольку у меня сделано всего 4 загрузчика (8, 88, 168, 328), мне по херу другие размеры страницы у других МК.[/uquote]
Нашел чем гордиться!
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

а на хера мне теперь этот исходник для chip45boot2, если я его давно выбросил (из компа удалил) и пользуюсь собственным загрузчиком?
и еще - а на хера мне тратить 2 кБ загрузочной области, если я могу потратить всего 512 байт?
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Adrift
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Adrift »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672477#p4672477"]да, и еще вспомнил - у chip45boot2 есть огромный минус. время ожидания связи с компом (прежде, чем запустить прошивку) зависит от тактовой частоты МК.
если для 8 МГц это время составляет более 2 секунд, то для 1 МГц уже получается около 20 секунд.[/uquote]
Такое там только для старых AVR, типа mega8/8515..., на mega88 для таймаута уже watchdog используется.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Starichok51 »

COKPOWEHEU писал(а):Файл chip45boot2/bootloader/main.c, 223 строка.
моя комповая программа вычисляет новое значение этой константы и передает в загрузчик. а загрузчик САМ В СЕБЯ записывает эту константу.
и не надо записывать в МК новый загрузчик с измененной константой.
Adrift писал(а):на mega88 для таймаута уже watchdog используется.
я в своем загрузчике на фиксированную скорость порта тоже использую watchdog.
ЗЫ. загрузчик на фиксированную скорость порта я на форум не выкладывал, так как он жестко привязан к тактовой частоте (настройка USART привязана к тактовой частоте).
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
smacorp
Друг Кота
Сообщения: 3481
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Re: Вопрос по программированию задержки внутри прерывания

Сообщение smacorp »

А нахера тратить даже 512 байт на загрузчик, который не в состоянии до фьюзов дотянуться? Внешний программатор и только он. Серьёзная работа без внешнего программатора и отладчика сильно осложнена и даже невозможна, а домохозяйкам нечего возиться с микроконтроллерами.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Разговоры про загрузчики

Сообщение Starichok51 »

smacorp, а нахера вообще создаются загрузчики, если они не могут записывать фьюзы?
команды чтения фьюзов существуют, но какой толк от прочитанных фьюзов, если невозможно их изменить загрузчиком?
к тому же, МК с записанным загрузчиком не предполагает изменения фьюзов.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
smacorp
Друг Кота
Сообщения: 3481
Зарегистрирован: Вт окт 22, 2013 04:37:23
Откуда: Казань

Re: Разговоры про загрузчики

Сообщение smacorp »

Загрузчики создаются с целью популяризации микроконтроллеров. Не уверен до конца, но думаю, что придумали их с появлением первого Ардуино, чтобы домохозяйки восхитились лёгкостью применения и начали скупать Ардуино пачками. И это сработало, но не значит, что это хорошо само по себе.

Единственное полезное применение загрузчика это обновление прошивки в серийном устройстве самим пользователем, когда загрузчик в залоченном МК принимает шифрованную прошивку и знает, что с ней делать.
Платы для HLDI - установки лазерной засветки фоторезиста.
Фоторезист Ordyl Alpha 350
Жидкое олово для лужения плат (видео) - самое лучшее и только у меня.
Паяльные маски XV501T-4 и KSM-S6189 (5 цветов).
Заказ печатных плат - pcbsmac@gmail.com
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Разговоры про загрузчики

Сообщение Starichok51 »

в залоченном МК всё зависит от установленных локов. может оказаться, что загрузчик не сможет обновить (переписать) прошивку.
а про шифрованную прошивку - я не знаю загрузчиков, которые бы расшифровывали принятую для записи информацию.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по программированию задержки внутри прерывания

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672501#p4672501"]а на хера мне теперь этот исходник для chip45boot2, если я его давно выбросил (из компа удалил) и пользуюсь собственным загрузчиком?[/uquote]
Можно подумать это мы тут рекламируем какой-то самописный загрузчик. Разговор-то начался с твоего хвастовства будто бы ассемблер дает кратный выигрыш в объеме кода. Как и ожидалось, ни о чем таком и речи не идет.
smacorp писал(а):А нахера тратить даже 512 байт на загрузчик, который не в состоянии до фьюзов дотянуться?
Ну, справедливости ради, ардуина как отладочная плата получилась довольно удачной: подключается по единственному USB, прошивается и отлаживается. Для проверки чего-нибудь по-быстрому вполне удобно. Для серьезной работы, понятное дело, нет.
С другой стороны, есть, скажем, stm32, у которых загрузчик прошит с завода и позволяет программироваться без программатора. А есть и вовсе ch32, для программирования которых "штатным способом" надо пересобирать openocd из исходников, да еще и покупать фирменный программатор. Ну нафиг, через UART проще.
smacorp писал(а):Загрузчики создаются с целью популяризации микроконтроллеров. Не уверен до конца, но думаю, что придумали их с появлением первого Ардуино,
Вообще мимо.
Загрузчик нужен чтобы юзер мог обновить прошивку в уже готовом устройстве. Покупать программатор он не будет. Изучать исходники ему вообще никто не даст. Поэтому алгоритм выглядит как "втыкаем флешку, выбираем пункт 'обновить прошивку', радуемся". Или "втыкаем устройство в USB, запускаем нашу фирменную кривульку утилиту, радуемся". Или "втыкаем SD-карточку, ..." Что-то в этом роде.
Starichok51 писал(а):а про шифрованную прошивку - я не знаю загрузчиков, которые бы расшифровывали принятую для записи информацию.
А смысл ими хвастаться? Подобные штуки пишутся скорее под конкретный алгоритм шифрования, конкретный протокол обмена и вообще под конкретное устройство. И для того, кто сумел изготовить устройство, достойное воровства, написать загрузчик проблемой тем более не является.
Demiurg
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44
Контактная информация:

Re: Вопрос по программированию задержки внутри прерывания

Сообщение Demiurg »

Вы что до человека докопались? У него есть рабочий инструмент. Который его устраивает и работает. Сами не смогли написать? Вот и пользуйтесь сторонними. Смогли? Молодцы! Пользуйтесь. Или пользуйтесь сторонними инструментами.
Аватара пользователя
Starichok51
Модератор
Сообщения: 19053
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Re: Разговоры про загрузчики

Сообщение Starichok51 »

COKPOWEHEU писал(а):Разговор-то начался с твоего хвастовства будто бы ассемблер дает кратный выигрыш в объеме кода.
вот именно, разговор начался с кратного выигрыша в объеме кода при одинаковом функционале.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Adrift
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Разговоры про загрузчики

Сообщение Adrift »

Starichok51, у chip45boot2 прошивка для мк у которых больше 8КБ флеша уже 1842 байта, при этом с практической точки зрения без разницы будет размер 2048 или 1025 байт, все равно придется 2КБ выделить. Поскольку уменьшить прошивку в почти 2 раза вряд ли получится, задача автора chip45boot2 вписаться в эти 2КБ сохраняя код более простым, а не заниматься бессмысленной оптимизацией чтобы его программа в процентном отношении не так сильно оптимизированным бутам на ассме проигрывала ) Вы выбрали неудачный проект для сравнения, вот, например, один человек переписал свою же программу с ассма на С, походу ее усложнив, и без учета новых таблиц получилась разница 19%. Причем первый проект был на mega8, а второй на at90can128 у которого 128КБ флеша.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Разговоры про загрузчики

Сообщение COKPOWEHEU »

[uquote="Starichok51",url="/forum/viewtopic.php?p=4672663#p4672663"]
COKPOWEHEU писал(а):Разговор-то начался с твоего хвастовства будто бы ассемблер дает кратный выигрыш в объеме кода.
вот именно, разговор начался с кратного выигрыша в объеме кода при одинаковом функционале.[/uquote]
Именно. А на практике мы наблюдаем обратное. Ардуиновкий загрузчик имеет тот же размер при большем функционале. chip45boot2 имеет больший размер при большем функционале.
Adrift писал(а):Вы выбрали неудачный проект для сравнения
Да и вообще. Хвастаться какой компактный код удалось написать для контроллера из прошлого тысячелетия... Сейчас это оправдано разве что в контексте искусства, демосцены. А не чего-то полезного практически.
А если говорить про практику, имело бы смысл написать бутлоадер для ch32v003 (потому что родной просто неработоспособен) или, возможно, под Амур или 1921 (у них загрузчика, кажется, вообще нет). Впрочем, это явно не к Старичку: и осваивать новое ядро он вряд ли будет, и проку с его очередной проприетарщины ноль.
Demiurg писал(а):Вы что до человека докопались?
Это он докопался своим хвастовством.
Ответить

Вернуться в «AVR»