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

 
 
> Вышла TNKernel v.2.6
yuri_t
сообщение Mar 1 2011, 19:00
Сообщение #1


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

Группа: Свой
Сообщений: 163
Регистрация: 24-08-05
Пользователь №: 7 937



TNKernel v.2.6 имеет порты ARM, Cortex-M3 и новый порт TI MSP430x.

Переключение контекста в TNKernel v.2.6 работает заметно быстрее (порты ARM, Cortex-M3) по сравнению с предыдущими версиями.
The mutex ceiling protocol в версии 2.6 более "lightweight" по сравнению с предыдущими версиями - в соревновании "скорость против features" победила скорость (на данный момент).
Код mutex ceiling protocol в версии 2.6 основывается на коде. написанном Vyacheslav Ovsiyenko для его версии TNKernel.

Спасибо Vyacheslav Ovsiyenko, Audrius Urmanavicius, Alex Borisov, Michael Fisher за их улучшения и замечания.


http://www.tnkernel.com
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Intel4004
сообщение Mar 25 2011, 20:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 7-09-07
Из: Наб.Челны
Пользователь №: 30 364



А насколько критично выравнивание стеков на 8?
В исходниках не нашел ничего , что мне запрещает вместо

#if defined (__ICCARM__) // IAR ARM
#pragma data_alignment=8
#endif
align_attr_start unsigned int task_xxx_stack[TASK_XXX_SIZE] align_attr_end;

написать просто

unsigned int task_xxx_stack[TASK_XXX_SIZE];

Получится выравнивание на 4 (для ARM7 и Cortex).
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 25 2011, 20:16
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Intel4004 @ Mar 25 2011, 23:09) *
Получится выравнивание на 4 (для ARM7 и Cortex).

Вот как раз для ARM7 и Cortex и нужно выравнивание на 8.
Go to the top of the page
 
+Quote Post
Intel4004
сообщение Mar 26 2011, 09:34
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 7-09-07
Из: Наб.Челны
Пользователь №: 30 364



Цитата(aaarrr @ Mar 25 2011, 23:16) *
Вот как раз для ARM7 и Cortex и нужно выравнивание на 8.

Для чего? Насколько критично?
Хотелось сделать странное так:
Код
int RTOS_TaskCreate(void (*func)(void *param), int stack_size, int priority)
{
TN_TCB *TCB;
unsigned int *Stack;
TCB = malloc(sizeof(*TCB));
Stack = malloc(sizeof(*Stack) * stack_size);
TCB->id_task = 0;
return tn_task_create(TCB, func, priority, Stack+stack_size-1, stack_size, NULL/*TCB or Stack*/, TN_TASK_START_ON_CREATION);
}

но выяснилось, что malloc и так на 8 выравнивает.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 26 2011, 09:48
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Intel4004 @ Mar 26 2011, 12:34) *
Насколько критично?

Плавучка может отвалиться без выравнивания. Вообще, это требование стандарта, поэтому критично на 100%.
Go to the top of the page
 
+Quote Post



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

 


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


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