Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 GCC и размещение кода в двух областях
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
asasl
Есть проект контроллеров УД на шине CAN.
Используется Chibios c разными драйверами, их код меняется редко, практически никогда.
И есть код логики и параметров инициализации, меняющийся часто.

Шина достаточно медленная: 1,5 кБайт/с. Поэтому прогружать каждый раз весь код в 64 кБайта долго и утомительно, особенно когда нужно поменять параметры нескольких устройств.

Вопрос. Можно ли как-то заставить компилятор и линковщик GCC разбивать код на две части жестко зафиксированные в EPROM?
scifi
Цитата(asasl @ Jan 10 2016, 11:12) *
Используется Chibios c разными драйверами, их код меняется редко, практически никогда.
И есть код логики и параметров инициализации, меняющийся часто.
...
Вопрос. Можно ли как-то заставить компилятор и линковщик GCC разбивать код на две части жестко зафиксированные в EPROM?

Для этого правильно делать две программы (а-ля загрузчик и основная прошивка). И жёсткий интерфейс между ними. Одна программа - это поле граблей, не надо туда соваться.
KnightIgor
Цитата(asasl @ Jan 10 2016, 09:12) *
Есть проект контроллеров УД на шине CAN.
Используется Chibios c разными драйверами, их код меняется редко, практически никогда.
И есть код логики и параметров инициализации, меняющийся часто.
...
Вопрос. Можно ли как-то заставить компилятор и линковщик GCC разбивать код на две части жестко зафиксированные в EPROM?

Можно собирать константы (настройки) и, если необходимо, функции логики, в одну (или несколько) именованных секций [см. __attribute__((section("SECNAME"), used))] и размещать эти секции по определенному адресу FLASH с помощью скрипта компоновщика. При этом надо серьезно продумать, как основное (неизменяемое) тело программы получит доступ к данным и функциям в изменяемой зоне, особенно с учетом развития версий и добавления все новых и новых функциональностей.
asasl
Спасибо буду пробовать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.