Vlad_G 8 9 января, 2019 Опубликовано 9 января, 2019 · Жалоба IDE Atollic. Требуется вместе с прошивкой записать во флеш по заданному адресу, например: 0х08003BFF, некий байт, скажем - 0х43. Что-то наподобие: ORG 0х2100 DE 0х43 у микрочипа. Есть ли что-то подобное на С? Пока проблему пока решил так - руками меняю нужный байт в ST-Link Utility и сохраняю в файл. Но наверняка можно как-то более изящно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 9 января, 2019 Опубликовано 9 января, 2019 · Жалоба 15 минут назад, Vlad_G сказал: IDE Atollic. Требуется вместе с прошивкой записать во флеш по заданному адресу, например: 0х08003BFF, некий байт, скажем - 0х43. Что-то наподобие: Есть ли что-то подобное на С? Не си Вам надо мучать, а изучать опции своего компоновщика. Конкретно: размещение секций из obj-файлов по регионам памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Darth Vader 0 9 января, 2019 Опубликовано 9 января, 2019 · Жалоба В этой теме со второй странице об этом разговор. Всё можно, но не через стандартный синтаксис С/С++. Так что придётся использовать директивы компилятора (напрямую или обернутые в свой макрос - не важно). А они у каждого разные - надо читать описание на свой. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 8 9 января, 2019 Опубликовано 9 января, 2019 · Жалоба На счет С были такие же мысли, но надо было точно удостовериться, чтоб не тратить время зря. Хотелось бы верить в чюдеса. Буду смотреть. Спасибо за совет! А пока что нарисовалась мысль - проверять при старте МК нужные ячейки, если там FF, загоняем начальное значение. Нет изящества, но зато быстро... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба 5 hours ago, Vlad_G said: А пока что нарисовалась мысль - проверять при старте МК нужные ячейки, если там FF, загоняем начальное значение. Нет изящества, но зато быстро А если таких значений побъёму на полпрошивки? Вам правильно указали путь - опции линковщика, компоновщика. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 8 10 января, 2019 Опубликовано 10 января, 2019 (изменено) · Жалоба Проблема решена. Можеткомучегопоможет. В файле *.ld, в случае моего МК: STM32F030F4_FLASH.ld добавляем раз: MEMORY { RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 4K FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 15K /*изначально было 16К, убавил для перестраховки*/ MYVARS (rx) : ORIGIN = 0x08003C00, LENGTH = 1K /*добавил начало нужной области во флеш*/ } между разделами .data : и .bss : добавляем два: (но оказывается можно размещать и в других удобных местах) /*моя секция*/ .myvar : { KEEP (* (.myvars.fullhell)); *(.myvars.fullhell); *(.myvar*); } > MYVARS Ну и в файле main.c до главной функции пишем: __attribute__((section (".myvars.fullhell"))) uint32_t fullhell = 0x48495051; Компилируем и: Как-то так. Изменено 10 января, 2019 пользователем Vlad_G Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба Я в ST-LINK Utility меняю содержимое нужных ячеек вручную. Серийный номер, конкретно. Редактируешь ячейку в окне Device Memory, а дальше она сама перепрограммирует. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба 2 minutes ago, ViKo said: Я в ST-LINK Utility меняю содержимое нужных ячеек вручную. Серийный номер, конкретно. Редактируешь ячейку, а дальше она сама перепрограммирует. А это поддаётся автоматизации? Например, вызвать st-link.exe с необходимым аргументом командной строки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба Только что, haker_fox сказал: А это поддаётся автоматизации? Например, вызвать st-link.exe с необходимым аргументом командной строки? Не знаю, не искал. Номер постоянно меняется, трудно автоматизировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Vlad_G 8 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба 10 minutes ago, ViKo said: Я в ST-LINK Utility меняю содержимое нужных ячеек вручную. Изначально так и делал, пока на производство не отдавать... Да и самому тоже не туда не внести чего. В прошивке оно удобней. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба А для постоянного добавления кое-чего к прошивке, например, контрольной суммы, я на C# написал программу, которая обрабатывает двоичный файл прошивки. И её запускаю автоматом в Кейле, там в опциях есть места для запуска посторонних программ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 141 10 января, 2019 Опубликовано 10 января, 2019 · Жалоба srec + openocd + shell script. По нажатию одной кнопки Enter серийный номер прописывает и в отчет дату программирования и что еще угодно добавляет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
esaulenka 7 11 января, 2019 Опубликовано 11 января, 2019 · Жалоба 17 hours ago, Сергей Борщ said: srec У него синтаксис не очень удобный. Я и сам им пользовался, но разбираться через год-другой в скрипте довольно сложно... В итоге пользуюсь питоном с библиотекой intelhex - просто и наглядно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 11 января, 2019 Опубликовано 11 января, 2019 · Жалоба On 1/10/2019 at 10:24 AM, ViKo said: А для постоянного добавления кое-чего к прошивке, например, контрольной суммы, я на C# написал программу, которая обрабатывает двоичный файл прошивки. И её запускаю автоматом в Кейле, там в опциях есть места для запуска посторонних программ. Сделал аналогично, но не для бинарника, а для текстового файла прошивки. Файл прогружается как объектный в RAM PC, делается коррекция, и обратная операция записи в файл. В "нужное место" прошивочного файла своей утилитой прописывается конфигурационные данные. Также есть своя утилита для просмотра определенных (версия, дата-время компиляции, серийный номер) данных в файле прошивки. Запускается пакетным файлом, запуск в post-build (кажется) опциях проекта. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
HardEgor 83 11 января, 2019 Опубликовано 11 января, 2019 · Жалоба А нельзя просто в hex дописать строчку с адресом и записываемым значением? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться