Перейти к содержанию

Идентификация прошивок


rmatveev

Рекомендуемые сообщения

Друзья, мне бы хотелось как-то начать "метить" прошивки, которые я заливаю в устройства на этапе разработки.

Когда-то давно, когда я еще кодил для МК51 и PIC я использовал несколько ячеек в начале памяти программ, куда автоматом записывал закодированную дату. Но это я делал с помощью своей утилиты - при компиляции я запускал свой батник, который во-первых формировал небольшой ассемблерный файлик с кодом даты, он уже линковался к основному коду и получалось у меня что-то типа такого:

            ORG          0000h
            goto         Begin

            include      'date.src'

            retw         __day
            retw         __month
            retw         __year

            ORG          0004h
            goto         INTERRUPT

Файл date.src формировался моим батником, там присваивались значения макросам __day, __month и __year.

Это ассемблер для PicMicro. Я использовал тот факт, что у него между началом пользовательского кода и единственным вектором прерывания было 4 байта, в первый байт я вставлял команду перехода на начало, а в три оставшихся байта - дату. Она была хорошо видна при считывании кода из чипа. Было очень удобно потом идентифицировать прошивку, т.к. исходники я тоже сохранял по датам. В общем, такая была доморощенная система контроля версий. Было это году в 2000-м.

Сейчас я пользуюсь Atollic TrueStudio и MBED и тоже задумался о том, как мне помечать прошивки. Может быть есть какие-то штатные способы? Или может по старинке найти в коде место, куда зашивать дату что бы ее легко было видно при считывании прошивки в ST Link Utility?

Спасибо заранее за любые мысли.

Ссылка на комментарий
Поделиться на другие сайты

Сразу после KEEP(*(.isr_vector)). 

. = ALIGN(0x200);
    KEEP(*(.text.METAINFO))
    . = ALIGN(4);

В текстовом виде будет легко читаться прямо из бинарного файла, и всегда на своём месте.

Ссылка на комментарий
Поделиться на другие сайты

23 минуты назад, AVI-crak Home сказал:

Сразу после KEEP(*(.isr_vector)). 

. = ALIGN(0x200);
    KEEP(*(.text.METAINFO))
    . = ALIGN(4);

В текстовом виде будет легко читаться прямо из бинарного файла, и всегда на своём месте.

А это в каком файле? Что-то пока ума не приложу где это. Вы не приложите скрин?

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Это скрипт линкера *.ld, вот только это запись секции, для записи файла нужно еще в этой секции прикрепить нужный файл (на асме в стартапе). Типа такого:

  .section  .Bootloader,"a",%progbits
  .type  Bootloader_os, %object

Bootloader_os:
  .incbin "123.bin"

  .size  Bootloader_os, .-Bootloader_os

И теперь уже сохранить секцию .Bootloader

    . = ALIGN(4);
    KEEP (*(.isr_vector))   /* сохранили таблицу векторов */

    . = ALIGN(4);
    _myID_Adr = .;
    KEEP (*(.Bootloader))     

_myID_Adr это адрес наших данных, можно обращаться через структуру для удобства к этому файлу.

Все под Atollic

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Можно еще использовать стандартные макросы типа: __DATE__ __TIME__ примерно так:

__attribute__ ((section (".Bootloader"))) uint8_t aDate[] = __DATE__;
__attribute__ ((section (".Bootloader"))) uint8_t aTime[] = __TIME__;

На выходе имеем:

080001ac <aTime>:
 80001ac:	31 33 3a 34 36 3a 35 33 00 00 00 00                 13:46:53....

080001b8 <aDate>:
 80001b8:	4d 61 72 20 32 38 20 32 30 31 39 00                 Mar 28 2019.

 

Изменено пользователем MasterElectric
Ссылка на комментарий
Поделиться на другие сайты

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

4 часа назад, MasterElectric сказал:

Можно еще использовать стандартные макросы типа: __DATE__ __TIME__ примерно так:


__attribute__ ((section (".Bootloader"))) uint8_t aDate[] = __DATE__;
__attribute__ ((section (".Bootloader"))) uint8_t aTime[] = __TIME__;

 

Круто!

А куда этот код нужно встраивать?

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...