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

STM32F030F4 определить байт во Flash

IDE Atollic. Требуется вместе с прошивкой записать во  флеш по заданному адресу, например: 0х08003BFF, некий байт, скажем - 0х43. Что-то наподобие:

ORG         0х2100
DE          0х43

у микрочипа.

Есть ли что-то подобное на С?

Пока проблему пока решил так - руками меняю нужный байт в ST-Link Utility и сохраняю в файл. Но наверняка можно как-то более изящно...

Поделиться сообщением


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

15 минут назад, Vlad_G сказал:

IDE Atollic. Требуется вместе с прошивкой записать во  флеш по заданному адресу, например: 0х08003BFF, некий байт, скажем - 0х43. Что-то наподобие:

Есть ли что-то подобное на С?

Не си Вам надо мучать, а изучать опции своего компоновщика. Конкретно: размещение секций из obj-файлов по регионам памяти.

Поделиться сообщением


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

В этой теме со второй странице об этом разговор.

Всё можно, но не через стандартный синтаксис С/С++. Так что  придётся использовать директивы компилятора (напрямую или обернутые в свой макрос - не важно). А они у каждого разные - надо читать описание на свой.

Поделиться сообщением


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

На счет С были такие же мысли, но надо было точно удостовериться, чтоб не тратить время зря. Хотелось бы верить в чюдеса. Буду смотреть. Спасибо за совет!

А пока что нарисовалась мысль - проверять при старте МК нужные ячейки, если там FF, загоняем начальное значение. Нет изящества, но зато быстро...

Поделиться сообщением


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

5 hours ago, Vlad_G said:

А пока что нарисовалась мысль - проверять при старте МК нужные ячейки, если там FF, загоняем начальное значение. Нет изящества, но зато быстро

А если таких значений побъёму на полпрошивки? Вам правильно указали путь - опции линковщика, компоновщика.

Поделиться сообщением


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

Проблема решена.

Можеткомучегопоможет. В файле *.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;

Компилируем и:

fullhell.jpg.dca2052bcb998f236393ac84b5b21bec.jpg

 

Как-то так. 

Изменено пользователем Vlad_G

Поделиться сообщением


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

Я в ST-LINK Utility меняю содержимое нужных ячеек вручную. Серийный номер, конкретно. Редактируешь ячейку в окне Device Memory, а дальше она сама перепрограммирует.

Поделиться сообщением


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

2 minutes ago, ViKo said:

Я в ST-LINK Utility меняю содержимое нужных ячеек вручную. Серийный номер, конкретно. Редактируешь ячейку, а дальше она сама перепрограммирует.

А это поддаётся автоматизации? Например, вызвать st-link.exe с необходимым аргументом командной строки?

Поделиться сообщением


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

Только что, haker_fox сказал:

А это поддаётся автоматизации? Например, вызвать st-link.exe с необходимым аргументом командной строки?

Не знаю, не искал. Номер постоянно меняется, трудно автоматизировать.

Поделиться сообщением


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

10 minutes ago, ViKo said:

Я в ST-LINK Utility меняю содержимое нужных ячеек вручную.

Изначально так и делал, пока на производство не отдавать... Да и самому тоже не туда не внести чего. В прошивке оно удобней.

Поделиться сообщением


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

А для постоянного добавления кое-чего к прошивке, например, контрольной суммы, я на C# написал программу, которая обрабатывает двоичный файл прошивки. И её запускаю автоматом в Кейле, там в опциях есть места для запуска посторонних программ.

Поделиться сообщением


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

srec + openocd + shell script. По нажатию одной кнопки Enter серийный номер прописывает и в отчет дату программирования и что еще угодно добавляет.

Поделиться сообщением


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

17 hours ago, Сергей Борщ said:

srec

У него синтаксис не очень удобный.

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

В итоге пользуюсь питоном с библиотекой intelhex - просто и наглядно.

Поделиться сообщением


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

On 1/10/2019 at 10:24 AM, ViKo said:

А для постоянного добавления кое-чего к прошивке, например, контрольной суммы, я на C# написал программу, которая обрабатывает двоичный файл прошивки. И её запускаю автоматом в Кейле, там в опциях есть места для запуска посторонних программ.

Сделал аналогично, но не для бинарника, а для текстового файла прошивки. Файл прогружается как объектный в RAM PC, делается коррекция, и обратная операция записи в файл.

В "нужное место" прошивочного файла своей утилитой прописывается конфигурационные данные.

Также есть своя утилита для просмотра определенных (версия, дата-время компиляции, серийный номер) данных в файле прошивки.

Запускается пакетным файлом, запуск в post-build (кажется) опциях проекта.

Поделиться сообщением


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

А нельзя просто в hex дописать строчку с адресом и записываемым значением?

Поделиться сообщением


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

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

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

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

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

×
×
  • Создать...