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

 
 
6 страниц V  « < 4 5 6  
Closed TopicStart new topic
> Написал порт scmRTOS под ARM, интересны отзывы
amusin
сообщение May 23 2006, 02:32
Сообщение #76


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

Группа: Участник
Сообщений: 120
Регистрация: 2-09-05
Из: Екатеринбург
Пользователь №: 8 165



Цитата(sergeeff @ May 22 2006, 21:40) *
Да, конечно, для ARM надо сделать количество процессов - 32. Будет проще и быстрее.

Кол-во процессов scmRTOS_PROCESS_COUNT надо делать таким, сколько требуется, и не больше, т.к. внутри void OS::TKernel::SystemTimer() есть цикл for(byte i = 0; i < scmRTOS_PROCESS_COUNT; i++).Другое дело, что может быть действительно сделать TProcessMap 32-разрядным, хотя это и не вписывается в идеологию scmRTOS об экономии ОЗУ smile.gif.
Как вариант, ширину TProcessMap можно сделать по потребности, а ее уже приводить к 32 разрядам внутри GetHighPriority(), если позволит компилятор.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение May 23 2006, 07:25
Сообщение #77


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(amusin @ May 23 2006, 05:32) *
Цитата(sergeeff @ May 22 2006, 21:40) *

Да, конечно, для ARM надо сделать количество процессов - 32. Будет проще и быстрее.

Кол-во процессов scmRTOS_PROCESS_COUNT надо делать таким, сколько требуется, и не больше, т.к. внутри void OS::TKernel::SystemTimer() есть цикл for(byte i = 0; i < scmRTOS_PROCESS_COUNT; i++).Другое дело, что может быть действительно сделать TProcessMap 32-разрядным, хотя это и не вписывается в идеологию scmRTOS об экономии ОЗУ smile.gif.
Как вариант, ширину TProcessMap можно сделать по потребности, а ее уже приводить к 32 разрядам внутри GetHighPriority(), если позволит компилятор.
Да, так и будем делать - размер TProcessMap минимально необходимый. Про 32 процесса с Гарри утрясли, про GetHighPriority() - для кол-ва процессов меньше 7 сделаю табличный метод - размер таблицы будет те же 64 байта для 6 процессоа, для меньшего кол-ва соответственно меньше.

Беру тайм-аут до выходных - в пятницу надо изделие на выставку отправлять а софт еще процентов на 40 написан.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение May 26 2006, 17:34
Сообщение #78


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Пара соображений по поводу быстродействия. Я эту идею уже как-то Harry предлагал, но он посчитал это изменение не слишком принципиальным. Тем не менее, считаю целесообразным переписать пару функций, которые многократно вызываются в ядре и scheduler’e:

void SetPrioTag(TProcessMap& pm, const byte pr) { pm |= 1 << pr; }
void ClrPrioTag(TProcessMap& pm, const byte pr) { pm &= ~(1 << pr); }

Эти две функции выполняются быстрее (короче аналога на одну команду) и отпадает необходимость в массиве TProcessMap PrioMaskTable[scmRTOS_PROCESS_COUNT+1] и функции TProcessMap GetPrioTag(const byte pr) const { return PrioMaskTable[pr]; }.

Выигрыш не велик – но все же – короче и быстрее.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение May 27 2006, 16:03
Сообщение #79


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(sergeeff @ May 26 2006, 20:34) *
...Выигрыш не велик – но все же – короче и быстрее.

Если отпадает необходимость в массиве, то это, как по мне, уже достаточно весомый аргумент ЗА.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 29 2006, 03:46
Сообщение #80


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(sergeeff @ May 27 2006, 00:34) *
void SetPrioTag(TProcessMap& pm, const byte pr) { pm |= 1 << pr; }
void ClrPrioTag(TProcessMap& pm, const byte pr) { pm &= ~(1 << pr); }

Эти две функции выполняются быстрее (короче аналога на одну команду) и отпадает необходимость в массиве TProcessMap PrioMaskTable[scmRTOS_PROCESS_COUNT+1] и функции TProcessMap GetPrioTag(const byte pr) const { return PrioMaskTable[pr]; }.

Выигрыш не велик – но все же – короче и быстрее.

За счет чего выигрыш? У АРМа есть аппаратный сдвигатель?


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
amusin
сообщение May 29 2006, 06:18
Сообщение #81


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

Группа: Участник
Сообщений: 120
Регистрация: 2-09-05
Из: Екатеринбург
Пользователь №: 8 165



Цитата(dxp @ May 29 2006, 09:46) *


Гарри, ты не добавил const в объявлении
TProcessMap PrioMaskTable[scmRTOS_PROCESS_COUNT+1]
чтобы не заморачиваться с инициализацией таблицы?
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 29 2006, 09:20
Сообщение #82


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Цитата
У АРМа есть аппаратный сдвигатель?

Конечно есть. Сдвигает регистр в 1-тактовой команде на любое количество бит.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
spf
сообщение May 29 2006, 10:16
Сообщение #83


Странник
****

Группа: Свой
Сообщений: 766
Регистрация: 29-08-05
Из: Екатеринбург
Пользователь №: 8 051



Цитата(GetSmart @ May 29 2006, 15:20) *
Цитата
У АРМа есть аппаратный сдвигатель?

Конечно есть. Сдвигает регистр в 1-тактовой команде на любое количество бит.

Необходимо уточнить ГДЕ задается "любое количество бит".
Если в другом регистре то хорошо.

PS:
Имеются процы у которых количество бит сдвига задается в коде команды - любое но фиксированное.


--------------------
"Как много есть на свете вещей, которые мне не нужны!" Сократ
Go to the top of the page
 
+Quote Post
GetSmart
сообщение May 29 2006, 10:21
Сообщение #84


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



АРМ имеет команды с обоими вариантами: как непосредственное число сдвига, так и из содержимого другого регистра.


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post

6 страниц V  « < 4 5 6
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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