Цитата(krik @ Jul 24 2008, 21:13)

чтобы можно было считать программатором прошивку и понять какая версия у меня тут зашита.
А другим способом нельзя? Ну например, чтобы устройство само написало свой номер прошивки куда надо. Вы, собираетесь к каждому пользователю вашего устройства с программатором ходить?
Вообще достаточно написать:
Код
#define VERSION "v.x.x.x"
printf(VERSION);
и все, считав весь дамп програматором, обязательно найдете строку версии, без каких либо муторных объявлений во флеш или eeprom. Автоматически найти и прочитать версию - тоже никаких проблем -искать в дампе сигнатуру "v.<любая цифра>."
Сам применяю несколько иную схему.
Предполагается использвание бутлоадера, и единственным способом которым можно достучаться к PROM МК является общение с ним.
Есть программа которая конвертирует hex, axf, elf и т.п. в зашифрованный bin, и позволяет создать служебную страничку бутлоадера, где размещается версия прошивки, дата и время конвертации, класс бутлоадера для которого предназначена прошивка (по классам бутлоадера у меня определяется тип железа), строка пользователя, где русским языком можно написать краткий коментарий, поясняющий что это за прошивка (без блужданий по цифрам версий), и т.п. Т.е. на выходе получается бинарник с прицепленной служебной информацией по требуемому адресу для конкретного бутлоадера.
И есть другая программа, которая общается с бутлоадерами, для заливки, проверки и обновления прошивок.
Открывает ранее созданные файлы-прошивки. Показывает их служебную информацию - что за прошивка, когда создана, для какого железа и т.п.
Соединяется с бутлоадером устройства, запрашивает его класс. Ну а дальше уже можно и читать и писать (если прошивка подходит к этому устройству). И на экране сразу видно и версии и даты как залитой так и той, что пытаются зашить, прошивок, и русским языком коментарии по которым видно чем они отличаются.
Если подбить сказанное, версию я добавляю внешней программой в уже откомпилированный бинарник. На мой взгляд, такой подход самый простой в использовании (один раз написать программу, и потом пользовать ее для любого проекта), универсален - нет привязок к процу и к проекту, сокращает риск возможных ошибочных версий - т.к. версия задается ровно перед релизом.