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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> RTOS для ARM7, какую выбрать? Отзывы и мнения., Рассматривается вариант RTX от Keil или есть что-то интересней/лучше?
VslavX
сообщение Jan 9 2011, 20:10
Сообщение #16


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Jan 9 2011, 18:47) *
Короче нет маленьких и понятных RTOS с такой фичей.
Нужна виртуализация памяти, а это уже только в толстых осях.

Динамическая линковка относится к виртуализации памяти как теплое к мягкому sm.gif, ну мы то знаем что вероятно имелся ввиду механизм типа Memory-Mapping Unit sm.gif. Но он тоже относится к связыванию как сладкое к мягкому sm.gif. Сложного в связывании загружаемого модуля любым из упомянутых способов никаких нет. Скажете в MS-DOS тоже маппинг памяти был? Ладно, пример неудачный, там модель памяти x86 сегментно-самобытная. А ucLinux эльфы не грузит? Если уж не охота разбираться с перемещаемым форматом (а перемещаемость-то далеко не всегда и нужна), то можно выполнить статическую линковку (при построении модуля линкером) для фиксированного адреса или вообще писать загружаемый модуль а-ля PIC.
Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 9 2011, 20:42
Сообщение #17


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(VslavX @ Jan 10 2011, 02:10) *
А ucLinux эльфы не грузит?


prex поддерживает elf relocation и прекрасно работает на arm без mmu, но не знаю почему Александр считает что его все хотят обмануть sm.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jan 10 2011, 06:43
Сообщение #18


Ally
******

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



Цитата(sasamy @ Jan 10 2011, 01:42) *
prex поддерживает elf relocation и прекрасно работает на arm без mmu, но не знаю почему Александр считает что его все хотят обмануть sm.gif


Да мусор там, чесно повелся на вашу ссылку.
Там не функции, а одни затычки. Там не то что elf relocation нет, там даже elf загрузчика нет нормального.
А если видели то покажите в каком файле.

Go to the top of the page
 
+Quote Post
VslavX
сообщение Jan 10 2011, 07:00
Сообщение #19


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(AlexandrY @ Jan 10 2011, 11:43) *
Там не то что elf relocation нет

Это там есть - root/usr/arch/arm/elf_reloc.c
А вот саму основную часть загрузчика я пока не нашел sm.gif


Go to the top of the page
 
+Quote Post
sasamy
сообщение Jan 11 2011, 21:30
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858



Цитата(VslavX @ Jan 10 2011, 13:00) *
Это там есть - root/usr/arch/arm/elf_reloc.c
А вот саму основную часть загрузчика я пока не нашел sm.gif


root/usr/server/exec/exec_elf.c
Go to the top of the page
 
+Quote Post
Major
сообщение Mar 28 2011, 09:20
Сообщение #21


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Вопрос из разряда TNKernel vs RTX
В железке на Crotex-M3 необходимо использовать вытеснение прерываний.
Для RTX написано что PRIGROUP должен быть равен нулю и ни каких гвоздей. А это означает что нет вытеснения.
Я правильно понимаю что для TNKernel таких ограничений нет?
Go to the top of the page
 
+Quote Post
Major
сообщение Mar 28 2011, 17:00
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 618
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 375



Осознал, был не прав. Если PRIGROUP=0, то все биты задают приоритет вытеснения.

Go to the top of the page
 
+Quote Post
kikos
сообщение May 16 2011, 08:47
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-02-11
Пользователь №: 62 608



Цитата(Сулейман @ Jan 9 2011, 10:43) *
Прошу прощения что влезаю, но тема кажется подходящая.
У меня такой вопрос, можно ли под какую-нибудь RTOS написать приложение изначально в проекте не присутствующее, но которое можно будет подгрузить, не переписывая при этом файлы системы. То есть аналог .exe в Windows.

VxWorks
Go to the top of the page
 
+Quote Post
Аматер
сообщение Jun 14 2011, 08:16
Сообщение #24


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

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



А я на свою голову на RTX заложился, теперь думаю может все-таки перескочить на что нибудь еще. Проблемы начались с Ethernet, а исходников нет. Это конечно не к операционке, а библиотеке относится, но тем не менее.
Go to the top of the page
 
+Quote Post
evg123
сообщение Jun 14 2011, 09:41
Сообщение #25


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Цитата(Аматер @ Jun 14 2011, 11:16) *
А я на свою голову на RTX заложился, теперь думаю может все-таки перескочить на что нибудь еще. Проблемы начались с Ethernet, а исходников нет. Это конечно не к операционке, а библиотеке относится, но тем не менее.

А какой у вас поц.? У меня был LM3S8972, там вместе с китом были дрова для Ethrnet-a и пример для RL-TCPnet. Нормально запустился и работал. Я на его основе сделал вполне неплохое приложение. Если надо - выложу.
Go to the top of the page
 
+Quote Post
Аматер
сообщение Jun 14 2011, 12:34
Сообщение #26


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

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Цитата(evg123 @ Jun 14 2011, 13:41) *
А какой у вас поц.? У меня был LM3S8972, там вместе с китом были дрова для Ethrnet-a и пример для RL-TCPnet. Нормально запустился и работал. Я на его основе сделал вполне неплохое приложение. Если надо - выложу.

У меня LPC1766 использую RL-TCPnet. Соединение работает, но закрывается через время тайм аута. У вас такого не было? У меня код такой -

CODE

U16 tcp_callback (U8 soc, U8 evt, U8 *ptr, U16 par) {
int i=0;

unsigned short ln;
if (soc != socket_tcp) {
return (0);
}

switch (evt) {
case TCP_EVT_DATA:
/* TCP data frame has arrived, data is located at *par1, */
/* data length is par2. Allocate buffer to send reply. */
pEther=EtherBuf;
//memcpy(EtherBufIn,(char*)ptr,par);
for(i=0;i<par;i++)
{
EtherBufIn[EthBufOffset]=(char)ptr[i];
if(EtherBufIn[EthBufOffset]==0xd
|| EtherBufIn[EthBufOffset]==0)
{
EtherBufIn[EthBufOffset]=0;
ExecuteCmd(EtherBufIn,0);
EthBufOffset = 0;
}
else
{
EthBufOffset++;
if(EthBufOffset>=sizeof(EtherBufIn))
EthBufOffset=0;
}
}
ln = pEther-EtherBuf;
SendEther = tcp_get_buf(ln);
memcpy(SendEther,EtherBuf,ln);
tcp_send(socket_tcp, SendEther, ln);
Cmd = 0;
break;
case TCP_EVT_ABORT:
/* Connection was aborted */
break;
case TCP_EVT_CONREQ:
/* Remote peer requested connect, accept it */
return (1);
case TCP_EVT_CONNECT:
/* The TCP socket is connected */
return (1);
}
return (0);
}

__task void Ether()
{
os_itv_set(RL_1MS*20);
init_TcpNet();

// Initialize TCP Socket and start listening
socket_tcp = tcp_get_socket (TCP_TYPE_SERVER, 0, 30, tcp_callback); // | TCP_TYPE_KEEP_ALIVE
if (socket_tcp != 0)
tcp_listen(socket_tcp, PORT_NUM);

while (1)
{
os_itv_wait(); // wait timer event
timer_tick();
main_TcpNet();
}
}


Если не сложно подскажите что не так или как у вас эта часть сделана.
Кайл никаких вразумительных ответов не дает, если ставлю TCP_TYPE_KEEP_ALIVE, вообще не соединяется.
Go to the top of the page
 
+Quote Post
evg123
сообщение Jun 15 2011, 08:29
Сообщение #27


Местный
***

Группа: Свой
Сообщений: 353
Регистрация: 11-09-06
Из: Минск
Пользователь №: 20 282



Цитата(Аматер @ Jun 14 2011, 16:34) *
Если не сложно подскажите...

Я в call-back-e устанавливаю сигнал, а потом в задаче читаю данные.
Вот demo-проектик.
Прикрепленные файлы
Прикрепленный файл  eth.zip ( 62.71 килобайт ) Кол-во скачиваний: 40
 
Go to the top of the page
 
+Quote Post
Аматер
сообщение Jun 16 2011, 12:29
Сообщение #28


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

Группа: Участник
Сообщений: 95
Регистрация: 3-01-10
Из: Рождественно
Пользователь №: 54 616



Цитата(evg123 @ Jun 15 2011, 11:29) *
Я в call-back-e устанавливаю сигнал, а потом в задаче читаю данные.
Вот demo-проектик.

Спасибо.
Главной ошибкой у меня было то что timer_tick вызывал вместе с main_TcpNet. Как только я вынес timer_tick в отдельную задачу вызываемую раз в 100 мс все заработало. Непонятно только почему.
Go to the top of the page
 
+Quote Post

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

 


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


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