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

 
 
 
Reply to this topicStart new topic
> Перемещаемый elf, Возможно ли это?
desh
сообщение May 13 2016, 11:11
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Возможно ли заставить IAR для ARM генерировать перемещаемый (relocatable) elf файл и как это можно сделать?
Для загрузки и выполнения планирую использовать nuttx.
Спасибо.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 16 2016, 05:31
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Немного оффтоп. А вы с nuttx работали? Я первый раз о ней слышу, глянул сайт - список поддерживаемого впечатляет. Во фриртосе за интегрированные допплюшки хотят денег, тут вроде как нет. И судя по гитхабу и поддерживаемым платформам - активно развивается
Go to the top of the page
 
+Quote Post
desh
сообщение May 16 2016, 06:10
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Я с ней работаю в настоящее время. Система очень нравится. Особенно после ~7 лет работы с FreeRTOS.
Нужно понимать, что не все плюшки есть под все платформы, но переносится достаточно легко. Сейчас работаю над поддержкой NAND в STM32 (драйвер есть только для ATSAM).
Чуть ниже есть моя тема со сборкой nuttx под IAR. Порт уже в репозитории, но скрипты для импорта в IAR еще не включены.
В целом для меня тема загрузки elf сейчас осталась последней серьезной задачей.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение May 16 2016, 06:27
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Тогда еще чуток офтопа - как она вам по сравнению с фриртос? Из-за чего переходите? Что лучше, что хуже?
Go to the top of the page
 
+Quote Post
desh
сообщение May 16 2016, 06:55
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



С freertos сравнивать не корректно. Это системы разного уровня и назначения.
Мне кажется, что nuttx лучше сравнивать с системами уровня MQX или eCos, но я не имею опыта работы с ними.
Причина перехода в том, что я делаю телеметрию (в том числе автономную) и у меня нет задач реального времени, но с другой стороны
важны сервисные функции и быстрая адаптация под новые задачи.
На платформе из freertos, fatfs и своих велосипедов я уперся в потолок.
Перехожу, так как вижу в этой системе потенциал для развития.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 16 2016, 09:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(desh @ May 13 2016, 17:11) *
Возможно ли заставить IAR для ARM генерировать перемещаемый (relocatable) elf файл и как это можно сделать?

Панелька "Position-independence" в опциях проекта не годится?

Цитата(desh @ May 13 2016, 17:11) *
Для загрузки и выполнения планирую использовать nuttx.

Вы пишете про STM32. А зачем там перемещаемый код? Там код во FLASH обычно находится, а ОЗУ очень мало.
Или у Вас уже во FLASH не лезет и Вы в SDRAM грузите?
Go to the top of the page
 
+Quote Post
desh
сообщение May 16 2016, 10:24
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Цитата(jcxz @ May 16 2016, 12:19) *
Панелька "Position-independence" в опциях проекта не годится?


Игрался я с этими опциями. Не получилось то, что надо.
Сам файл по прежнему генерируется как ET_EXEC (Executable file), а загрузчик ожидает файл ET_REL (Relocatable file).
Я так понимаю за это отвечает линкер. И вроде бы ранних версиях линкер xlink умел это делать (нашел подборку Rst7, в которой IAR генерил elf - ы для мобильных телефонов Siemens),
а вот с текущим ilink все как то мутно. Видимо придется писать в поддержку IAR.

Цитата(jcxz @ May 16 2016, 12:19) *
Вы пишете про STM32. А зачем там перемещаемый код? Там код во FLASH обычно находится, а ОЗУ очень мало.
Или у Вас уже во FLASH не лезет и Вы в SDRAM грузите?


Да, у меня внешняя SRAM. Хочу разделить прошивку на системную и пользовательскую части.
Система меняется редко в отличии от пользовательской части, а при дистанционном обновлении накладно и долго каждый раз перезаливать всю прошивку целиком.
Кроме того под одно железо часто имеется несколько вариантов пользовательского кода. Возможно так будет легче сопровождать весь зоопарк.
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 17 2016, 02:27
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(desh @ May 16 2016, 16:24) *
Да, у меня внешняя SRAM. Хочу разделить прошивку на системную и пользовательскую части.
Система меняется редко в отличии от пользовательской части, а при дистанционном обновлении накладно и долго каждый раз перезаливать всю прошивку целиком.
Кроме того под одно железо часто имеется несколько вариантов пользовательского кода. Возможно так будет легче сопровождать весь зоопарк.

И в чём проблема?
Эти несколько вариантов пользовательского ПО должны одновременно находиться в памяти? И одновременно выполняться???
Если нет, то проблемы нет: линкуете (обычно, не перемещаемо) Вашу пользовательскую часть ПО в один регион памяти, системную в другой.
Если нужно иметь несколько вариантов пользовательского ПО - храните их в разных областях ОЗУ, а тот вариант, который должен выполняться, копируйте в область выполнения, для которой линковали.
Go to the top of the page
 
+Quote Post
desh
сообщение May 17 2016, 05:54
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Цитата(jcxz @ May 17 2016, 05:27) *
И в чём проблема?


Моя проблема описана в первом сообщении sm.gif

Цитата(jcxz @ May 17 2016, 05:27) *
Эти несколько вариантов пользовательского ПО должны одновременно находиться в памяти? И одновременно выполняться???
Если нет, то проблемы нет: линкуете (обычно, не перемещаемо) Вашу пользовательскую часть ПО в один регион памяти, системную в другой.
Если нужно иметь несколько вариантов пользовательского ПО - храните их в разных областях ОЗУ, а тот вариант, который должен выполняться, копируйте в область выполнения, для которой линковали.


Это все я знаю, умею и люблю, но этот вариант больше подходит для загрузчиков.
Я хочу получить систему с загружаемыми модулями на основе общепринятых стандартных решений.
Как линукс, только маленький. И что бы IARом собирался (стандарт предприятия).

А так, да - спасибо за совет.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 17 2016, 07:28
Сообщение #10


Гуру
******

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



Цитата(desh @ May 17 2016, 08:54) *
И что бы IARом собирался (стандарт предприятия).

Не факт, что яр это вообще умеет. Тогда придётся подумать, стоит ли так упираться в этот стандарт.
Go to the top of the page
 
+Quote Post
desh
сообщение May 17 2016, 07:51
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Цитата(scifi @ May 17 2016, 10:28) *
Не факт, что яр это вообще умеет.


Не факт. Но до смены линковщика умел. Да и сейчас при сборке библиотек умеет. Вот только как этим воспользоваться в данном контексте я не знаю. sm.gif
Go to the top of the page
 
+Quote Post
jcxz
сообщение May 17 2016, 09:02
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(desh @ May 17 2016, 11:54) *
Как линукс, только маленький. И что бы IARом собирался (стандарт предприятия).

Имхо - в линухе совсем другой механизм. Я думаю - там как в винде:
Все приложения компилятся по статическом адресам с одинаковым адресным пространством. А уже это адресное пространство отображается на разные физ. адреса при помощи MMU.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 17 2016, 09:22
Сообщение #13


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(desh @ May 17 2016, 10:51) *
Не факт. Но до смены линковщика умел. Да и сейчас при сборке библиотек умеет. Вот только как этим воспользоваться в данном контексте я не знаю. sm.gif


У IAR есть такой проект со всеми исходниками - IElfTool
Этот тул умеет делать самоперемещаемые образы.
Сам IElfTool компилируется бесплатной версией Visual Studio Community 2015
При желании этот тул можно и в RTOS интегрировать.
Go to the top of the page
 
+Quote Post
desh
сообщение May 17 2016, 10:16
Сообщение #14


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



Цитата(AlexandrY @ May 17 2016, 12:22) *
У IAR есть такой проект со всеми исходниками - IElfTool
Этот тул умеет делать самоперемещаемые образы.


Спасибо. Видел его исходники.
Дождусь ответа от ТП IAR и если от них ничего интересного не узнаю - буду смотреть в эту сторону.
Go to the top of the page
 
+Quote Post

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

 


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


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