реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> STM32 GCC и размещение кода в двух областях
asasl
сообщение Jan 10 2016, 08:12
Сообщение #1





Группа: Участник
Сообщений: 9
Регистрация: 2-07-15
Из: Москва/Дубна
Пользователь №: 87 376



Есть проект контроллеров УД на шине CAN.
Используется Chibios c разными драйверами, их код меняется редко, практически никогда.
И есть код логики и параметров инициализации, меняющийся часто.

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

Вопрос. Можно ли как-то заставить компилятор и линковщик GCC разбивать код на две части жестко зафиксированные в EPROM?


--------------------
Go to the top of the page
 
+Quote Post
scifi
сообщение Jan 10 2016, 08:55
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



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

Для этого правильно делать две программы (а-ля загрузчик и основная прошивка). И жёсткий интерфейс между ними. Одна программа - это поле граблей, не надо туда соваться.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jan 11 2016, 08:43
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



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

Можно собирать константы (настройки) и, если необходимо, функции логики, в одну (или несколько) именованных секций [см. __attribute__((section("SECNAME"), used))] и размещать эти секции по определенному адресу FLASH с помощью скрипта компоновщика. При этом надо серьезно продумать, как основное (неизменяемое) тело программы получит доступ к данным и функциям в изменяемой зоне, особенно с учетом развития версий и добавления все новых и новых функциональностей.

Сообщение отредактировал KnightIgor - Jan 11 2016, 08:44
Go to the top of the page
 
+Quote Post
asasl
сообщение Jan 12 2016, 07:43
Сообщение #4





Группа: Участник
Сообщений: 9
Регистрация: 2-07-15
Из: Москва/Дубна
Пользователь №: 87 376



Спасибо буду пробовать.


--------------------
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 19:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01338 секунд с 7
ELECTRONIX ©2004-2016