KolinRol 0 6 апреля, 2013 Опубликовано 6 апреля, 2013 (изменено) · Жалоба Всем доброго времени суток! Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса. p.s. извините что если это глупый вопрос) Изменено 6 апреля, 2013 пользователем Новичек Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 6 апреля, 2013 Опубликовано 6 апреля, 2013 · Жалоба А в чём сложность-то? Заводите области сохранения регистров для каждого из потоков, а также счётчик времени до истечения кванта текущего потока. Настраиваете прерывания от таймера. При каждом прерывании счётчик уменьшается. Когда достиг нуля -- регистры текущего потока записываются в его область сохранения, устанавливается новое значение счётчика, из области сохранения другого потока загружаются его регистры -- и всё. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 6 апреля, 2013 Опубликовано 6 апреля, 2013 · Жалоба Всем доброго времени суток! Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса. p.s. извините что если это глупый вопрос) Так Вы свою хотите написать или выбрать из имеющихся? Свою писать не советую, если нужно сложнее чем суперлуп. Если не суперлуп а с переключением контекста- то опять же почему не взять уже готовую, их много. Не нужно велосипед изобретать, сэкономленное время еще пригодится для других глупостей :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 6 апреля, 2013 Опубликовано 6 апреля, 2013 · Жалоба У меня курсовая работа. Научник сказал написать планировщик. Как я понял за основу нужно взять freeRTOS (как бы все кроме планировщика). Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 7 апреля, 2013 Опубликовано 7 апреля, 2013 · Жалоба Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени. По первому вопросу - Керниган и Ричи "Язык Си". По второму - квант времени можно задать только таймером. В любой микропроцессорной системе хотябы один таймер найдется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 7 апреля, 2013 Опубликовано 7 апреля, 2013 · Жалоба Где найти этот таймер или есть какая та определенная команда? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 7 апреля, 2013 Опубликовано 7 апреля, 2013 · Жалоба У меня курсовая работа. Научник сказал написать планировщик. Как я понял за основу нужно взять freeRTOS (как бы все кроме планировщика). Я не очень хорошо программирую. Я не могу понять к примеру от куда, как взять квант времени. Квант времени не берут, а задают или ждут. Задается квант один раз при инициализации какого либо таймера который может генерировать прерывания. В STR912fw44 я использовал для этих целей таймер часов реального времени (RTC). У меня есть порт uCOS-II на STR912fw44. Рекомендую изучать uCOS-II. Эта RTOS гораздо легче(яснее) написана чем FreeRTOS, лучше откоментирована и документирована. Из нее проще будет вычленить планировщик и сделать рефакторинг. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 7 апреля, 2013 Опубликовано 7 апреля, 2013 · Жалоба Квант времени не берут, а задают или ждут. Задается квант один раз при инициализации какого либо таймера который может генерировать прерывания. В STR912fw44 я использовал для этих целей таймер часов реального времени (RTC). У меня есть порт uCOS-II на STR912fw44. Рекомендую изучать uCOS-II. Эта RTOS гораздо легче(яснее) написана чем FreeRTOS, лучше откоментирована и документирована. Из нее проще будет вычленить планировщик и сделать рефакторинг. AlexandrY могу ли я с вами связаться по почте или каким либо другим образом т.к. л/c не могу написать (выдает ошибку)? Моя почта [email protected]. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 13 апреля, 2013 Опубликовано 13 апреля, 2013 · Жалоба Где можно скачать uCOS-II? Никак не могу найти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 13 апреля, 2013 Опубликовано 13 апреля, 2013 · Жалоба Где можно скачать uCOS-II? Никак не могу найти. На сайте Micrium-а можно скачать исходники. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 29 апреля, 2013 Опубликовано 29 апреля, 2013 · Жалоба Помогите создать проект в Keil для str912 мигания светодиода. Может быть нужно подключить какие нибудь уже ненаписанные библиотеки для данного МК? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 29 апреля, 2013 Опубликовано 29 апреля, 2013 · Жалоба Помогите создать проект в Keil для str912 мигания светодиода. Может быть нужно подключить какие нибудь уже ненаписанные библиотеки для данного МК? Вот выложил порт UCOSII для STR912 Порт сделан для моей платформы, схема и плата есть в том же архиве. Там же есть и файловая система от Keil и TCP стек от Micrium. Есть тесты Dhrystone и Whetstone. Ну и конечно моргание светодиодом. Но по STR912 я не консультирую, так как перестал ими заниматься уже несколько лет. Скачиватель может ругнуться, так как в архиве есть .exe файл микриума для тестирования быстродействия TCP/IP протокола - PCATTCP. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
KolinRol 0 30 апреля, 2013 Опубликовано 30 апреля, 2013 (изменено) · Жалоба Спасибо Александр. Как я понял там 3 проекта: Flash, Ram, extRam. Когда компилируешь выдает кучу ошибок. Мне кается что в проектах не хватает файлов Ekernel и EkernelComps. Можешь ещё сказать какие файлы что означает а то я их открываю и голова сразу взрывается... Не понимаю как связь организована между ними и что каждый из них может делать. Какие из этих файлов представляют особую важность для начального освоения. с чего начать? может быть где то лежит документация на русском что означают сокращения? Можете ещё объяснить как по схеме что нибудь понять) хот бы одну логическую цепочку. p.s. где мигалка то? ))) и какие файлы для её работы необходимы? Изменено 30 апреля, 2013 пользователем Новичек Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 30 апреля, 2013 Опубликовано 30 апреля, 2013 · Жалоба Спасибо Александр. Как я понял там 3 проекта: Flash, Ram, extRam. Когда компилируешь выдает кучу ошибок. Мне кается что в проектах не хватает файлов Ekernel и EkernelComps. Можешь ещё сказать какие файлы что означает а то я их открываю и голова сразу взрывается... Не понимаю как связь организована между ними и что каждый из них может делать. Какие из этих файлов представляют особую важность для начального освоения. с чего начать? может быть где то лежит документация на русском что означают сокращения? Можете ещё объяснить как по схеме что нибудь понять) хот бы одну логическую цепочку. p.s. где мигалка то? ))) и какие файлы для её работы необходимы? Эт потому что взялись компилировать последним Keil-ом, а я ж говорил, что проект старый. Значит и компилировать надо старыми тулсами. Но ничего, я исправил. Снова скачайте по старой ссылке. 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 если что пойдет не так с инициализацией памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
=AK= 18 30 апреля, 2013 Опубликовано 30 апреля, 2013 · Жалоба Мне нужно реализовать планировщик задач. Для начала самый простой: без приоритетов через квант времени переключать два какие-нибудь процесса. COOS - предельно простая кооперативная микроось. Ни строчки на ассемблере, С и только С и ничего кроме С. COOS.rar Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться