IAR EW ARM: автоматическая генерация версии прошивки |
Добавил(а) microsin |
В составе кода прошивки удобно иметь информацию о версии программного обеспечения - например, её можно выводить на экран при старте программы. При этом всегда будет понятно, какая версия firmware прошита и работает. Совет подойдет не только к IAR для ARM, но и к IAR для AVR. В приведенном примере версия генерируется на основе года, месяца, дня, часов, минут, секунд. Как сделать автоматическую генерацию номера версии (она будет пересчитываться заново при каждой перекомпиляции проекта), процесс по шагам:
1. Пишем vbs-скрипт (versionfile-gen.vbs) примерно такого содержания:
Этот скрипт в качестве параметра принимает имя генерируемого файла с версией (в моем примере будет генерироваться version.c), в котором будут две строки version_full и version_logo, содержащие номер версии firmware. Строк две, потом у что мне так захотелось. Вы можете в своем vbs-скрипте генерировать одну строку, или вообще любой код, который надо. Вот пример содержимого файла version.c, который будет генерироваться скриптом versionfile-gen.vbs:
const char version_full [] = "-- ПКРЦ-М 22.04.2010 12:54:08 --\n\r";
2. Делаем заголовок version.h для нашего файла version.c (его, как обычно, будем подключать в том месте, где нам понадобятся строки version_full или version_logo): 3. В нашем примере скрипт versionfile-gen.vbs должен лежать в папке doc\version-gen относительно корня проекта. Файлы настроек проекта (имя_проекта.ewd и имя_проекта.ewp) лежат в папке ewp относительно корня проекта.
Настраиваем Build Actions проекта, чтобы наш скрипт выполнялся перед компиляцией. Идем в свойства проекта: меню Project -> Options -> Category: Build Actions -> в поле Pre-build command line: вставляем такой текст: Обращаю Ваше внимание, что пути указаны с учетом места размещения скрипта versionfile-gen.vbs и файлов настроек проекта (файлы с расширением .ewd и .ewp). Для вычисления корня проекта используется макропеременная $PROJ_DIR$, которая указывает на размещение файлов настроек проекта (файлы с расширением .ewd и .ewp).
Готово! Теперь при каждой перекомпиляции проекта в теле прошивки будет обновляться информация о версии программного обеспечения. Строки version_full и version_logo можно использовать по своему усмотрению, например: |