alex1985 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Доброго времени суток! Камень: stm32f407. Нужно сохранить информацию о версии прошивки в самом файле прошивки (hex), желательно по указанному адресу, чтобы ее потом можно было извлечь. Возможно ли это? Информация о версии определяется в тексте программы (на данный момент просто дефайном). Заранее спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 63 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Я вот такую конструкцию использую(Keil): const char my_date[] = " date:" __DATE__; const char my_time[] = " time:" __TIME__; const char my_ver[] = " ver.:3.30"; Этот текст потом можно найти в бинарнике считанном из контроллера. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex1985 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Я вот такую конструкцию использую(Keil): const char my_date[] = " date:" __DATE__; const char my_time[] = " time:" __TIME__; const char my_ver[] = " ver.:3.30"; Этот текст потом можно найти в бинарнике считанном из контроллера. Спасибо! А можно уложить эти данные по определенному адресу? Или придется пробегать весь hex в поисках этих строк? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Спасибо! А можно уложить эти данные по определенному адресу? Или придется пробегать весь hex в поисках этих строк? const __attribute__((section(".LOC_DATA"))) char my_date[] = " date:" __DATE__; и в файле линкера создать секцию по нужному адресу .LOC_DATA Это GCC У RealView есть __attribute__((at(0xXXXXXXX))); . У других компилеров тоже должно быть что-то подобное Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба А можно уложить эти данные по определенному адресу? Можно, если прочитать мануал на свой компилятор. IAR: __root char const __codeSignature[] @ ".codeSignature" = "версия"; и прописывание в icf-файле в какой регион класть данную секцию .codeSignature или __root char const __codeSignature[] @ 0x00ADRESS = "версия"; Но первый вариант лучше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A.Lex 0 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Спасибо! А можно уложить эти данные по определенному адресу? Или придется пробегать весь hex в поисках этих строк? Для L151 когда-то делал так (EEPROM): const uint16_t CalibrTable[10]__attribute__((at(DATA_EEPROM_START_ADDR))) = {0x0582,0x0B04,0x1096,0x1608,0x1B8A,0x210C,0x268E,0x2C10,0x3192,0x3714}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 1 августа, 2018 Опубликовано 1 августа, 2018 · Жалоба Для L151 когда-то делал так (EEPROM): Для L151 или чего другого - без разницы. Вопрос тут не про использованный МК, а про использованный компилятор. Который ТС не озвучил. Причём тут вообще какой МК??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex1985 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Для L151 или чего другого - без разницы. Вопрос тут не про использованный МК, а про использованный компилятор. Который ТС не озвучил. Проект разрабатывается в Keil uVision v5.2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 17 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Проект разрабатывается в Keil uVision v5.2 В keil 5 можно можно использовать как минимум три тулчейна: два от ARM (v5 и новый v6) и халявный GCC. В каждом эта "проблема" решается немного по-разному. Если используется штатный компилятор Keil, то у него очень развитый help, прямо на сайте ARM или встроенный хэлп в keil. Также эта "проблема", ставшая уже махровым баяном, неоднократно поднималась на этом форуме. Пройдите поиском. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alex1985 0 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба В keil 5 можно можно использовать как минимум три тулчейна: два от ARM (v5 и новый v6) и халявный GCC. В каждом эта "проблема" решается немного по-разному. Если используется штатный компилятор Keil, то у него очень развитый help, прямо на сайте ARM или встроенный хэлп в keil. Также эта "проблема", ставшая уже махровым баяном, неоднократно поднималась на этом форуме. Пройдите поиском. Спасибо за подробный и развернутый ответ! :biggrin: Компилятор ARM v5 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 63 2 августа, 2018 Опубликовано 2 августа, 2018 · Жалоба Компилятор ARM v5 В свойствах проекта на закладке Target можно изменить компилятор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться