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

 
 
> Технология динамической загрузки модулей для RTOS, Какие есть методы и инструменты.
AlexandrY
сообщение Dec 29 2012, 21:48
Сообщение #1


Ally
******

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



Как-то тут проскочила мысль, что настоящая операционная система должна грузить сторонние приложения и выполнять их.

Очевидно, что это реализовать для небольших проектов и даже не с ОС совершенно элементарно.
Для этого при компиляции основного ядра делают symbol definition file и потом этот файл и файлы хидеров передают третьей стороне чтобы те могли правильно скомпилировать и слинковать свои приложения для ядра.

Но когда в ядре количество функций переваливает за тысячу, то сделать переносимые хидеры в ручную представляется проблемой.
Также желательно сделать отдельный модуль с так называемой jump table чтобы уменьшить зависимость от мелких изменений и перекомпиляций ядра. Как-то подумать о фильтрации, чтобы не все подряд сущности из ядра попадали в symbol definition file и т.д.

И тогда вопрос - заморачивается ли кто-нибудь с этим и известны ли инструменты автоматизации всего этого процесса.


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
a9d
сообщение Dec 30 2012, 14:31
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 312
Регистрация: 9-04-10
Пользователь №: 56 532



Насколько я помню в винде адреса API функций программа получает по ANSI именам. Так решиться проблема с адресацией.

Тогда нужно реализовать функцию которой передается имя функции а она вернет адрес. Этот адрес загоняем в массив и дальше используем.
Но эта не самая большая проблема. MMU все таки нет а значит будет тоже самое, что и с uclinux.

Сообщение отредактировал a9d - Dec 30 2012, 22:36
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 31 2012, 12:09
Сообщение #3


Ally
******

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



Цитата(a9d @ Dec 30 2012, 16:31) *
Насколько я помню в винде адреса API функций программа получает по ANSI именам. Так решиться проблема с адресацией.

Тогда нужно реализовать функцию которой передается имя функции а она вернет адрес. Этот адрес загоняем в массив и дальше используем.
Но эта не самая большая проблема. MMU все таки нет а значит будет тоже самое, что и с uclinux.



Это вы наверно имеете в виду как выполняется динамическое связывание для dll.
Это известный стандартный способ, но для этого ядро должно содержать в себе таблицу символов.
В моих проектах с RTOS такая таблица заняла бы более 300 Кб в RAM.
Даже жирным однокристалкам с Cortex это будет уже за много.
Это не считая того, что сами загруженные таким образом модули подвергаются модификации, т.е. должны выполняться из RAM или по крайней мере по началу туда грузиться.
Решение, скажем прямо, не совсем для малых RTOS.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- AlexandrY   Технология динамической загрузки модулей для RTOS   Dec 29 2012, 21:48
- - a9d   Для начала ЦитатаОперационная система (Operating ...   Dec 29 2012, 22:03
|- - AlexandrY   Цитата(a9d @ Dec 30 2012, 00:03) Как видн...   Dec 30 2012, 13:41
- - haker_fox   QUOTE (AlexandrY @ Dec 30 2012, 06:48) И ...   Dec 30 2012, 13:09
- - haker_fox   Гм... чувствую благовейный ветерок) Как когда-то д...   Dec 31 2012, 06:04
- - a9d   А как планируете решать проблему с MMU ? Также как...   Dec 31 2012, 14:59
|- - AlexandrY   Цитата(a9d @ Dec 31 2012, 16:59) А как пл...   Dec 31 2012, 15:31
- - a9d   Вот об отсутствии и идет речь. Вот простой пример...   Dec 31 2012, 15:37
|- - AlexandrY   Цитата(a9d @ Dec 31 2012, 17:37) Вот об о...   Dec 31 2012, 16:50
|- - haker_fox   QUOTE (AlexandrY @ Jan 1 2013, 01:50) Сущ...   Jan 2 2013, 09:39
- - vshemm   ЦитатаКак-то тут проскочила мысль, что настоящая о...   Jan 2 2013, 20:42
|- - AlexandrY   Цитата(vshemm @ Jan 2 2013, 22:42) Про за...   Jan 3 2013, 07:51
|- - vshemm   Цитата(AlexandrY @ Jan 3 2013, 11:51) Нас...   Jan 8 2013, 16:07
|- - AlexandrY   Цитата(vshemm @ Jan 8 2013, 18:07) Боюсь,...   Jan 16 2013, 12:07
- - desh   Контики от А. Дункельса и компании поддерживает за...   Jan 13 2013, 07:56
|- - SyncLair   Цитата(desh @ Jan 13 2013, 11:56) Контики...   Jan 18 2013, 19:30
|- - haker_fox   QUOTE (SyncLair @ Jan 19 2013, 04:30) То ...   Jan 19 2013, 05:36
|- - AlexandrY   Цитата(haker_fox @ Jan 19 2013, 07:36) Эт...   Jan 19 2013, 11:08
||- - haker_fox   QUOTE (AlexandrY @ Jan 19 2013, 20:08) Вы...   Jan 20 2013, 08:54
|- - kolobok0   Цитата(haker_fox @ Jan 19 2013, 09:36) .....   Jan 20 2013, 01:28
|- - AlexandrY   Цитата(kolobok0 @ Jan 20 2013, 03:28) под...   Jan 20 2013, 10:29
|- - kolobok0   Цитата(AlexandrY @ Jan 20 2013, 14:29) .....   Jan 20 2013, 16:25
||- - AlexandrY   Цитата(kolobok0 @ Jan 20 2013, 18:25) вос...   Jan 20 2013, 19:24
||- - haker_fox   QUOTE (AlexandrY @ Jan 21 2013, 03:24) Т....   Jan 21 2013, 00:58
||- - kolobok0   Цитата(AlexandrY @ Jan 20 2013, 23:24) .....   Jan 21 2013, 08:47
|- - SyncLair   Цитата(AlexandrY @ Jan 20 2013, 14:29) Дл...   Jan 22 2013, 14:30
|- - AlexandrY   Цитата(SyncLair @ Jan 22 2013, 16:30) Есл...   Jan 22 2013, 15:10
|- - SyncLair   Цитата(AlexandrY @ Jan 22 2013, 19:10) Чт...   Jan 22 2013, 18:05
- - neiver   Насчёт взаимодействия загружаемого модуля и ядра, ...   Jan 16 2013, 15:01
- - _Pasha   Цитата(neiver @ Jan 16 2013, 19:01) SVC -...   Jan 16 2013, 15:07


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

 


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


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