-
- Овчинка выделки не стоит. Программа малюсенькая и в обозримом будущем таких программ не предвидится. _VVB(3097 знак., 26.07.2016 09:45,
)
- Кстати, где-то там надо предусмотреть аварийный режим на случай, если враги отключат липистричество во время перепрошивки. - SciFi(26.07.2016 10:15)
- Обновлением прошивки будут заниматься сервисные инженеры, не пользователи (врачи). Есть аккумулятор. В случае сбоя ситуация возвратится к имеющейся на данный момент: аппарат вскрывается и спокойно перепрограммируется. Я считаю вероятность сбоя _VVB(44 знак., 26.07.2016 10:29,
)
- Это многое меняет. - SciFi(26.07.2016 10:32)
- Обновлением прошивки будут заниматься сервисные инженеры, не пользователи (врачи). Есть аккумулятор. В случае сбоя ситуация возвратится к имеющейся на данный момент: аппарат вскрывается и спокойно перепрограммируется. Я считаю вероятность сбоя _VVB(44 знак., 26.07.2016 10:29,
- То есть перемещаемый код, чтобы не собирать загрузчик 10 раз с разными смещениями? Это называется удаление гланд через #опу. Не надо этого делать. 10 раз собирается легко. Для этого есть make и прочее скриптование. - SciFi(26.07.2016 10:11)
- Я пока что использую вариант с жёстко прописанным адресом исполнения "загрузчика" в скрипте линкера без PIC. А что Вы предлагаете? _VVB(365 знак., 26.07.2016 10:15,
)
- Во-первых, проект один. Меняющееся число в скрипте линкера - это аргумент. Скрипт сборки вызывается 10 раз с разными аргументами. PIC сулит слишком много геморроя, который не оправдывается этой мелкой эстетической заморочкой. - SciFi(26.07.2016 10:18)
- Спасибо за дельный совет. Я не использовал командные скрипты, меняющие исходники, видимо, настала пора. - _VVB(26.07.2016 10:25,
)
- Скорее всего есть способ подсовывать линкеру меняющееся число через командную строку, а не через файл. - SciFi(26.07.2016 10:31)
- Буду признателен, если подскажете. Я в первую очередь рыл как раз в эту сторону, неудачно. - _VVB(26.07.2016 10:40,
)
- Можно попробовать разбить скрипт линкера на 2 части: маленькая изменяемая часть (10 экземпляров) и большая неизменная. Загружать их оба (-T file.ld) - это можно. - SciFi(26.07.2016 10:56)
- А что, вполне себе идея. - _VVB(26.07.2016 11:02,
)
- А что, вполне себе идея. - _VVB(26.07.2016 11:02,
- Можно попробовать разбить скрипт линкера на 2 части: маленькая изменяемая часть (10 экземпляров) и большая неизменная. Загружать их оба (-T file.ld) - это можно. - SciFi(26.07.2016 10:56)
- Буду признателен, если подскажете. Я в первую очередь рыл как раз в эту сторону, неудачно. - _VVB(26.07.2016 10:40,
- Скорее всего есть способ подсовывать линкеру меняющееся число через командную строку, а не через файл. - SciFi(26.07.2016 10:31)
- Спасибо за дельный совет. Я не использовал командные скрипты, меняющие исходники, видимо, настала пора. - _VVB(26.07.2016 10:25,
- Во-первых, проект один. Меняющееся число в скрипте линкера - это аргумент. Скрипт сборки вызывается 10 раз с разными аргументами. PIC сулит слишком много геморроя, который не оправдывается этой мелкой эстетической заморочкой. - SciFi(26.07.2016 10:18)
- Я пока что использую вариант с жёстко прописанным адресом исполнения "загрузчика" в скрипте линкера без PIC. А что Вы предлагаете? _VVB(365 знак., 26.07.2016 10:15,
- Опять что-то непонятное изобрёл, вместо давно известной практики: зашивают целиком новую прошивку и не занимаются позиционно-независимым размещением сегментов кода в flash. - fk0(26.07.2016 10:06)
- Слушаю внимательно. Можно подробнее? Каким образом "зашить целиком новую прошивку" без доступа к JTAG? - _VVB(26.07.2016 10:09,
)
- Через SFR-регистры. У данного МК нельзя перепрограммировать flash? Неизменной частью должен являться лишь маленький загрузчик объёмом ~4..16 кБайт, который получает управление после старта МК. - fk0(26.07.2016 10:17)
- Добавлю. Получает управление, проверяет целостность себя, проверяет причину входа, в зависимости от которого 1) ожидает загрузки ПО, 2) проверяет целостность целевого ПО 3)запускает целевое ПО, которое о загрузчике знает как максимум адрес старта, Xитpый Kитaeц(66 знак., 26.07.2016 10:33)
- Если блок лежит на столе -- никаких проблем. Анализ USB mass storage (энумерация) занимает несколько секунд после запуска платы CAN-Ethernet, которая тоже запускается несколько секунд. Это значит, что по первому включению маленькие загрузчики всех _VVB(102 знак., 26.07.2016 10:39,
)
- В UART/CAN шлётся в цикле волшебная последовательность байт. Анализ которой занимает 100мс. Если за 100 мс встречена -- обновление, иначе нормальная работа (только не 3 байта, а 64, не встречающиеся в нормальном обмене). - fk0(26.07.2016 11:26)
- Ну елки, это же просто рыба. Подумайте, когда целевое ПО запускает обновление самого себя, основная проблема - кто, что и как должен делать если что-то пошло не так и как это вписывается в проект в целом. При серийном производстве (массовая запись Xитpый Kитaeц(32 знак., 26.07.2016 11:08)
- Если блок лежит на столе -- никаких проблем. Анализ USB mass storage (энумерация) занимает несколько секунд после запуска платы CAN-Ethernet, которая тоже запускается несколько секунд. Это значит, что по первому включению маленькие загрузчики всех _VVB(102 знак., 26.07.2016 10:39,
- Разные блоки стартуют разное время. От сотен миллисекунд до десятков секунд. В это время шина CAN не будет полностью работоспособна. Кроме того, для наших систем жизнеобеспечения предусмотрен "быстрый рестарт" -- если блок перезапустился из-за _VVB(429 знак., 26.07.2016 10:23,
)
- Добавлю. Получает управление, проверяет целостность себя, проверяет причину входа, в зависимости от которого 1) ожидает загрузки ПО, 2) проверяет целостность целевого ПО 3)запускает целевое ПО, которое о загрузчике знает как максимум адрес старта, Xитpый Kитaeц(66 знак., 26.07.2016 10:33)
- Через SFR-регистры. У данного МК нельзя перепрограммировать flash? Неизменной частью должен являться лишь маленький загрузчик объёмом ~4..16 кБайт, который получает управление после старта МК. - fk0(26.07.2016 10:17)
- Слушаю внимательно. Можно подробнее? Каким образом "зашить целиком новую прошивку" без доступа к JTAG? - _VVB(26.07.2016 10:09,
- Кстати, где-то там надо предусмотреть аварийный режим на случай, если враги отключат липистричество во время перепрошивки. - SciFi(26.07.2016 10:15)
- Овчинка выделки не стоит. Программа малюсенькая и в обозримом будущем таких программ не предвидится. _VVB(3097 знак., 26.07.2016 09:45,