-
- Я просто пишу утилитку на дельфях, чтобы избежать ненужного
геморроя со всяческими тонкостями компиляторов и иже с ними.
Утилитка берет *.hex, преобразует в BIN, выравнивает, если
необходимо, до границы 512 байт. Далее такой финт: В LPC17 в
области векторов прерываний есть несколько неиспользуемых 32-битных
слов. В них заношу версию прошивки, ее длину и дополнение CRC до 0.
Потом все это это дело шифрую. Загрузчик при приеме первого же
блока данных уже "знает все". При Гyдвин(174 знак., 17.06.2021 11:28)
- +100! Да, Олег! Именно таким методом всегда действовал. Только с
применением Power Basic (вечная и благодарная память Бобу Зейлу
+[Borland](c)). Прямой доступ к файлу и погнал: и выборочное
изменение нужных байт конфигураций, и конкатенации всякие и CRC, и
групповая (прости, Господи) обработка из нескольких файлов в один
результирующий с генерацией нужных наименований, и много всяких
(туды-сюды) преобразований из|в hex<>
bin<>txt<>... . И SERGHIO(242 знак., 17.06.2021 21:22)
- Еще я для себя вновь открыл забытый AutoIt. Очень, стервец, удобен
для создания "массовых" программаторов в виде всего одного
исполняемого файла "для бибизьнок" на производстве (как правило для
первоначальной прошивки загрузчика). Раньше лепил на дельфях,
упаковывал всяческие DLL, EXE и пр. в дельфийные ресурсы,
разворачивал всю эту байду при старте. C AutoIt все намного проще.
Все для этого имеется "из коробки". Ну и главная фишка - можно
заюзать даже приложения с оконным Гyдвин(372 знак., 17.06.2021 21:55, ссылка)
- И ещё раз +100! Вот, считаю, именно такое отношение к делу (на всех этапах: от разработки до поставки потребителям) самое верное, выверенное и во времени, и по эффективности выполнения проекта(ов)! Больше удобного инструментария в инженерной практике, что неизбежно приводит к комфортной работе! Почему такой стиль явно не прорабатывается в тех же вузах? Это ж типа как... дебютная стратегия в шахматах: сочетание комбинационной и позиционной игры. Сколько тебя помню...ты SERGHIO(74 знак., 17.06.2021 23:44)
- Еще я для себя вновь открыл забытый AutoIt. Очень, стервец, удобен
для создания "массовых" программаторов в виде всего одного
исполняемого файла "для бибизьнок" на производстве (как правило для
первоначальной прошивки загрузчика). Раньше лепил на дельфях,
упаковывал всяческие DLL, EXE и пр. в дельфийные ресурсы,
разворачивал всю эту байду при старте. C AutoIt все намного проще.
Все для этого имеется "из коробки". Ну и главная фишка - можно
заюзать даже приложения с оконным Гyдвин(372 знак., 17.06.2021 21:55, ссылка)
- Для Ethernet устройств у меня все так же (
у дураков мысли сходятсяумные люди думают одинаково :). А вот для мелких USB-поделий как-то исторически сложилось по-другому: в области векторов только размер бинарника, а сразу за бинарником - его CRC. И все это хорошо работало, пока не выявился такой пердюмонокль на мелком нувотоне: у него человеческого CRC-модуля не положили, зато CRC умеет считать флеш-контроллер. - LightElf(17.06.2021 12:00)- Ну для мелких мег и msp430 голову не ломаю - тупо шью всю память
кроме загрузчика :) И по радио, и по ethernet, и по uart, и по usb.
А что не так с usb? У меня есть одна примочка на меге328 вообще с
"программным usb". Так и она шьет 28 кб "мухой". Гyдвин(1 знак., 17.06.2021 12:25, картинка)
- Каюсь, наврал :) 1.3 секунды это для 12 кб (прошивка для MSP430), которая заливается по программному usb в свою флэш "беспроводным прошиватором" на меге328) Гyдвин(1 знак., 17.06.2021 12:59, картинка)
- Одно неизменно - прошивки готовлю всегда своими утилитками - CRC в последних байтах. - Гyдвин(17.06.2021 12:41)
- А не проще софтово считаать? Торопиться некуда, зато единообразно
везде. - Andreas(17.06.2021 12:04)
- Можно и так, но хотелось бы - эдак :) - LightElf(17.06.2021 12:09)
- Ну для мелких мег и msp430 голову не ломаю - тупо шью всю память
кроме загрузчика :) И по радио, и по ethernet, и по uart, и по usb.
А что не так с usb? У меня есть одна примочка на меге328 вообще с
"программным usb". Так и она шьет 28 кб "мухой". Гyдвин(1 знак., 17.06.2021 12:25, картинка)
- +100! Да, Олег! Именно таким методом всегда действовал. Только с
применением Power Basic (вечная и благодарная память Бобу Зейлу
+[Borland](c)). Прямой доступ к файлу и погнал: и выборочное
изменение нужных байт конфигураций, и конкатенации всякие и CRC, и
групповая (прости, Господи) обработка из нескольких файлов в один
результирующий с генерацией нужных наименований, и много всяких
(туды-сюды) преобразований из|в hex<>
bin<>txt<>... . И SERGHIO(242 знак., 17.06.2021 21:22)
- Тогда перевести в HEX :-) Пустые строчки не попадут в него. - BlackMorda(16.06.2021 22:04)
- Уфф.. Обисняю: чипец умеет быстро рассчитывать CRC32 для целых
страниц (512 байт) флеша. Хочеццо эту функу задействовать в
бутлодере для проверки корректности основной прошивки.
Соответственно надо научить линкер считать CRC так же, как это
делает железяка. Для этого нужно, чтобы линкер округлял размер
собранного бинарника до кратного 512 байтам и в последние 4 байта
складывал CRC. Вот как заставить его именно округлять до 512 байтов
я и не могу понять. - LightElf(16.06.2021 22:39)
- srec_cat, не? - SciFi(16.06.2021 23:21)
- Им уже после линкера надо проходить, тогда и CRC им же считать надо. - Andreas(17.06.2021 09:22)
- Не помню встроенной в эту утилиту возможности округления в большую
сторону. Придецца оболочку стряпать, чтобы сформировать
соответствующую командную строку. - VLLV(17.06.2021 06:51)
- "srec_cat infile.bin -bin -fill 0xFF -over infile.bin -bin
-range-pad 512 -o outfile.bin -bin" - SciFi(17.06.2021 07:33)
- Скажи, ты чего куришь? Мне, когда надо чего-нибудь добиться от
этого гребаного srecord, приходится пол-интернета на дыбы ставить
:-) - il-2(17.06.2021 09:39)
- Пришлось распечатать мануал на тонкой бумаге и затягиваться :-) - SciFi(17.06.2021 09:51)
- Скажи, ты чего куришь? Мне, когда надо чего-нибудь добиться от
этого гребаного srecord, приходится пол-интернета на дыбы ставить
:-) - il-2(17.06.2021 09:39)
- "srec_cat infile.bin -bin -fill 0xFF -over infile.bin -bin
-range-pad 512 -o outfile.bin -bin" - SciFi(17.06.2021 07:33)
- srec_cat, не? - SciFi(16.06.2021 23:21)
- Уфф.. Обисняю: чипец умеет быстро рассчитывать CRC32 для целых
страниц (512 байт) флеша. Хочеццо эту функу задействовать в
бутлодере для проверки корректности основной прошивки.
Соответственно надо научить линкер считать CRC так же, как это
делает железяка. Для этого нужно, чтобы линкер округлял размер
собранного бинарника до кратного 512 байтам и в последние 4 байта
складывал CRC. Вот как заставить его именно округлять до 512 байтов
я и не могу понять. - LightElf(16.06.2021 22:39)
- Я просто пишу утилитку на дельфях, чтобы избежать ненужного
геморроя со всяческими тонкостями компиляторов и иже с ними.
Утилитка берет *.hex, преобразует в BIN, выравнивает, если
необходимо, до границы 512 байт. Далее такой финт: В LPC17 в
области векторов прерываний есть несколько неиспользуемых 32-битных
слов. В них заношу версию прошивки, ее длину и дополнение CRC до 0.
Потом все это это дело шифрую. Загрузчик при приеме первого же
блока данных уже "знает все". При Гyдвин(174 знак., 17.06.2021 11:28)