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

 
 
> RTOS для STR912fw44 RTOS, планировщик задач
Новичек
сообщение Apr 6 2013, 17:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Всем доброго времени суток!
Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса.
p.s. извините что если это глупый вопрос)

Сообщение отредактировал Новичек - Apr 6 2013, 17:33
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
SII
сообщение Apr 6 2013, 17:35
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 549
Регистрация: 13-07-10
Из: Солнечногорск-7
Пользователь №: 58 414



А в чём сложность-то? Заводите области сохранения регистров для каждого из потоков, а также счётчик времени до истечения кванта текущего потока. Настраиваете прерывания от таймера. При каждом прерывании счётчик уменьшается. Когда достиг нуля -- регистры текущего потока записываются в его область сохранения, устанавливается новое значение счётчика, из области сохранения другого потока загружаются его регистры -- и всё.
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Apr 6 2013, 17:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(Новичек @ Apr 6 2013, 20:31) *
Всем доброго времени суток!
Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса.
p.s. извините что если это глупый вопрос)

Так Вы свою хотите написать или выбрать из имеющихся?
Свою писать не советую, если нужно сложнее чем суперлуп. Если не суперлуп а с переключением контекста- то опять же почему не взять уже готовую, их много.
Не нужно велосипед изобретать, сэкономленное время еще пригодится для других глупостей sm.gif
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 6 2013, 18:26
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



У меня курсовая работа. Научник сказал написать планировщик. Как я понял за основу нужно взять freeRTOS (как бы все кроме планировщика).
Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Apr 7 2013, 06:24
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



QUOTE (Новичек @ Apr 7 2013, 03:26) *
Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени.

По первому вопросу - Керниган и Ричи "Язык Си".
По второму - квант времени можно задать только таймером. В любой микропроцессорной системе хотябы один таймер найдется.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 7 2013, 15:45
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Где найти этот таймер или есть какая та определенная команда?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 7 2013, 16:32
Сообщение #7


Ally
******

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



Цитата(Новичек @ Apr 6 2013, 21:26) *
У меня курсовая работа. Научник сказал написать планировщик. Как я понял за основу нужно взять freeRTOS (как бы все кроме планировщика).
Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени.


Квант времени не берут, а задают или ждут.
Задается квант один раз при инициализации какого либо таймера который может генерировать прерывания.
В STR912fw44 я использовал для этих целей таймер часов реального времени (RTC).

У меня есть порт uCOS-II на STR912fw44.
Рекомендую изучать uCOS-II.
Эта RTOS гораздо легче(яснее) написана чем FreeRTOS, лучше откоментирована и документирована.
Из нее проще будет вычленить планировщик и сделать рефакторинг.
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 7 2013, 17:37
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Цитата(AlexandrY @ Apr 7 2013, 20:32) *
Квант времени не берут, а задают или ждут.
Задается квант один раз при инициализации какого либо таймера который может генерировать прерывания.
В STR912fw44 я использовал для этих целей таймер часов реального времени (RTC).

У меня есть порт uCOS-II на STR912fw44.
Рекомендую изучать uCOS-II.
Эта RTOS гораздо легче(яснее) написана чем FreeRTOS, лучше откоментирована и документирована.
Из нее проще будет вычленить планировщик и сделать рефакторинг.

AlexandrY могу ли я с вами связаться по почте или каким либо другим образом т.к. л/c не могу написать (выдает ошибку)? Моя почта veselvi@rambler.ru.
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 13 2013, 17:13
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Где можно скачать uCOS-II? Никак не могу найти.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 13 2013, 17:46
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Новичек @ Apr 13 2013, 20:13) *
Где можно скачать uCOS-II? Никак не могу найти.

На сайте Micrium-а можно скачать исходники.
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 29 2013, 13:17
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Помогите создать проект в Keil для str912 мигания светодиода. Может быть нужно подключить какие нибудь уже ненаписанные библиотеки для данного МК?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 29 2013, 19:55
Сообщение #12


Ally
******

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



Цитата(Новичек @ Apr 29 2013, 16:17) *
Помогите создать проект в Keil для str912 мигания светодиода. Может быть нужно подключить какие нибудь уже ненаписанные библиотеки для данного МК?


Вот выложил порт UCOSII для STR912
Порт сделан для моей платформы, схема и плата есть в том же архиве.
Там же есть и файловая система от Keil и TCP стек от Micrium.
Есть тесты Dhrystone и Whetstone.
Ну и конечно моргание светодиодом. biggrin.gif
Но по STR912 я не консультирую, так как перестал ими заниматься уже несколько лет.

Скачиватель может ругнуться, так как в архиве есть .exe файл микриума для тестирования быстродействия TCP/IP протокола - PCATTCP.
Go to the top of the page
 
+Quote Post
Новичек
сообщение Apr 30 2013, 14:03
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 18
Регистрация: 6-04-13
Пользователь №: 76 382



Спасибо Александр.
Как я понял там 3 проекта: Flash, Ram, extRam. Когда компилируешь выдает кучу ошибок. Мне кается что в проектах не хватает файлов Ekernel и EkernelComps. Можешь ещё сказать какие файлы что означает а то я их открываю и голова сразу взрывается... Не понимаю как связь организована между ними и что каждый из них может делать. Какие из этих файлов представляют особую важность для начального освоения. с чего начать? может быть где то лежит документация на русском что означают сокращения? Можете ещё объяснить как по схеме что нибудь понять) хот бы одну логическую цепочку.
p.s. где мигалка то? ))) и какие файлы для её работы необходимы?

Сообщение отредактировал Новичек - Apr 30 2013, 14:07
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Apr 30 2013, 19:39
Сообщение #14


Ally
******

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



Цитата(Новичек @ Apr 30 2013, 17:03) *
Спасибо Александр.
Как я понял там 3 проекта: Flash, Ram, extRam. Когда компилируешь выдает кучу ошибок. Мне кается что в проектах не хватает файлов Ekernel и EkernelComps. Можешь ещё сказать какие файлы что означает а то я их открываю и голова сразу взрывается... Не понимаю как связь организована между ними и что каждый из них может делать. Какие из этих файлов представляют особую важность для начального освоения. с чего начать? может быть где то лежит документация на русском что означают сокращения? Можете ещё объяснить как по схеме что нибудь понять) хот бы одну логическую цепочку.
p.s. где мигалка то? ))) и какие файлы для её работы необходимы?


Эт потому что взялись компилировать последним Keil-ом, а я ж говорил, что проект старый. Значит и компилировать надо старыми тулсами. biggrin.gif
Но ничего, я исправил. Снова скачайте по старой ссылке.
Keil в последних своих хидерах RTL.h взялся объявлять BSD сокеты, а в проекте они уже были в TCP стеке микриума.
Ekernel я убрал чтоб не мешал, это был движок логического контроллера.

Еще я добавил схему верхней платы поскольку светодиоды находились на ней. Платы связаны через 40-а пиновый разъем X5 (на main board) и X14 (на AddOn board).
Светодиоды управляются с помощью микросхемы расширителя портов по I2C (U5 на AddOn board, MCP23016-I/SS). I2C идет по линиям SDA1, SCL1 на контакты 13, 14 разъема X14 (на AddOn board) и приходит к микроконтроллеру (U2, STR912FW44X6) на ноги 33, 35 на main board.

Все начинается с файла app.c, там процедура main. В ней создается задача AppManTask в которой инициализируется расширитель портов, драйвер UART, виртуальный COM порт по USB, WEB сервер, VT100 терминал и проч. и кроме этого создается задача LedTask в которой то и производится циклическое включение и выключение всех светодиодов.

Сама RTOS находится в директории UCOS. Я ее скомпилировал в библиотеку. Там найдете проект для компиляции библиотеки.
Тут же и самый важный и самый хитрый и самый критичный файл RTOS - os_cpu_a.asm.
Это ручная работа, которая выполняется для каждой платформы индивидуально, переключатель контекстов RTOS. От надежности и оптимальности этого переключателя зависит стабильность и быстродействие всей оси и то насколько быстро будут обрабатываться все прерывания.

На втором по важности месте находятся файлы в директории BSP. Там собраны процедуры низкоуровневой работы с периферией. В других осях их бы называли драйверами, но в UCOS нет выраженной концепции драйверов, поэтому там просто наборы функций для работы с интерфейсами, портами, таймерами и проч. В частности за работу с расширителем портов по I2C отвечает файл MCP23016_IOexp.c

Стек TCP микриума находится в директории TCP
В USB находится понятно все что связано с USB.
Дальше уж как нибудь сами разбирайтесь.
В проекте есть файл proj.vpw это рабочее пространство редактора SlickEdit, я всегда им пользуюсь для написания и изучения исходников. Рекомендую.

Проект Keil карту адресов берет из диалога в IDE.
.sct файлы не используются.
Проект грузится во Flash и выполняется с адреса 0.
Там сами смотрите STR91x_startup.s если что пойдет не так с инициализацией памяти.
Go to the top of the page
 
+Quote Post
=AK=
сообщение Apr 30 2013, 23:03
Сообщение #15


pontificator
******

Группа: Свой
Сообщений: 3 055
Регистрация: 8-02-05
Из: страны Оз
Пользователь №: 2 483



Цитата(Новичек @ Apr 7 2013, 03:01) *
Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса.


COOS - предельно простая кооперативная микроось. Ни строчки на ассемблере, С и только С и ничего кроме С.

Прикрепленный файл  COOS.rar ( 2.89 килобайт ) Кол-во скачиваний: 89
Go to the top of the page
 
+Quote Post

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

 


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


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