26 ноября 2008 скачать @ 127 кБ
Исправлен баг, появившийся в версии 81126: при переопределении константы
OS_DTIMER_SIZE проект отказывался собираться.
Исправлена ошибка в определении макроса
OS_Dtimer_Get
26 ноября 2008 скачать @ 127 кБ
Все сервисы динамических таймеров переименованы из
OS_xxx
PTimer в
OS_xxx
DTimer. Старые имена оставлены для совместимости
10 октября 2008 скачать @ 325 кБ
Переработаны статические таймеры. Они стали удобнее в обращении (см.
Статические таймеры). Следует обратить внимание на
пример применения. Старые статическе таймеры для совместимости оставлены без изменений.
Добавлена возможность включать отдельно статические таймеры, динамические таймеры и таймеры задач (раньше таймеры задач включались автоматически при использовании любого тапи таймеров)
Для каждого типа таймеров теперь можно задавать свою разряднось (раньше разрядность таймеров задач
08 октября 2008 скачать @ 316 кБ
В _
OS_CheckEvent для PICC18 не сбрасывался флаг bDelay (сбрасывался только во временной переменной
OS_state). В результате этой ошибки задача после ожидания события с таймаутом уходила в задержку.
7 октября 2008 скачать @ 317 кБ
Из файла OSA.c в отдельные файлы вынесены специфичные для каждого типа контроллеров функции (см. папку "port").
Из файла OSA.h в отдельные файлы вынесены все сервисы (см. папку "services").
Исправлен недостаток для MCC30: программа работала только при отключенной оптимизации. Теперь работает при любой, за исключением ключа -mpa (procedural abstraction)
В тип дескриптора задач для MCC30 добавлены 8 слов для сохранения регистров W8..W15
01 октября 2008 скачать @ 316 кБ
исправлена ошибка с переменной _
OS_DTimer: она объявлялась в банке
OS_BANK а работа с ней велась как с near
15 сентября 2008 скачать @ 290 кБ
Исправлен баг для MCC30: при выполнении
OS_Task_Replace приоритет новой задачи заменялся приоритетом удаляемой.
При вызове
OS_Task_Create из тела задачи флаги состояния копировались в новую задачу.
09 сентября 2008 скачать @ 290 кБ
Добавлен порт под 16-разрядные пики (PIC24 и dsPIC)
Убран неприоритетный режим
Убраны SLOW_TIMERS
Проведена оптимизация кода по ROM, RAM и скорости
Из документации убрано сравнение с другими RTOS
В документацию добавлена статистика по использованию памяти и по скорости.
Добавлена ссылка "Документация On-line".
05 сентября 2008
Исправлена ошибка для PICC16: если дождались события до таймаута (сервисами
OS_WaitXXXTimeout или
OS_SendXXXTimeout), то после передачи управления планировщику в задачу возвращались только по истечению оставшегося времени таймаута.
В
OS_InitDelay для FAST_TIMERS установка бита State.bDelay переставлена. Теперь она стоит за присвоением таймера, а не перед. Раньше это могло быть следствием записи неправильного значения в Timer.
Добавлено восстановление PCLATH перед возвратом в задачу из _
OS_CLEAR_READY и _
OS_CLEAR_READY_SET_CANCONTINUE
27 августа 2008
Исправлен баг: в PICC16 при выполнении двух
OS_Yield() подряд второй неправильно сохранял адрес возврата.
26 августа 2008
Переработан планировщик для неприоритетного режима. Раньше, если в задаче выполнялся сервис ожидания события, уже произошедшего на момент проверки, то управление планировщику не передавалось. Теперь передается, т.к. раньше могло получиться так, что если задача ожидает события, уже установленные на момент проверки, то остальные задачи никогда не получат управление. Т.е. нарушался порядок round-robin, при котором все готовые задачи должны выполняться по очереди.
Исправлена ошибка: если из задачи управление планировщику передавалось сервисом
OS_Yield(), то задача могла получить управление первой, вне зависимости от приоритета.
23 августа 2008
Исправлена ошибка: не была глобально объявлена метка
OS_ClearReadySetCanContinue
21 августа 2008
Исправлена ошибка: сервис
OS_RI() не восстанавливал бит GIEL при IPEN = 1
11 августа 2008
Исправлена ошибка, сделанная в 80810: DTimer'ы не удалялись сервисом
OS_Dtimer_Delete.
08 августа 2008
Немного сокращен и ускорен код.
Константа _ROM_PAGES для PIC16 определяется автоматически
Для PIC16 добавлена возможность размещать системные переменные в банках 2 и 3:
-
двоичные семафоры (
OS_BANK_BSEM)
таймеры пользователя (
OS_BANK_TIEMRS,
OS_BANK_TIMEOUTS, …) (одной константой
OS_BANK_
OS по-прежнему можно задать банк для всех вышеперечисленных переменных)
флаги (банк задается индивидуально при описании переменной-флага)
сообщения (банк задается индивидуально)
короткие сообщения (банк задается индивидуально)
Нельзя размещать в банках 2 и 3:
счетные семафоры
очереди сообщений
Следует обратить внимание, что все переменные OS_xxx_BANK переделаны в OS_BANK_xxx (см. мануал 3.4)
05 августа 2008
Исправлена ошибка в диспетчере для PIC16: неправильно сохранялись биты PR0 и RP1 при переключении контекста
Исправлена ошибка в сервисах ожидания сообщения из очереди с таймаутом: непраильно проверялся бит таймаута
03 августа 2008
Исправлена ошибка в инициализации. Для PIC18 при размещении дескрипторов задач (
OS_TaskVars[]) в RAM выше адреса 0x100 задачи не обнулялись при запуске программы.
29 мая 2008
Версия сыроватая. До конца я ее не тестировал, но попробовать поиграться с ней стоит.
таймера, но в среднем для 16-разрядного таймера экономится 40 слов);
освободить 4 байта RAM (для 16-разрядного таймера);
увеличить скорость выполнения:
инициализации таймера (в 2 раза: с 53 тактов до 25);
проверки таймера в планировщике (с 51 такта до 4 тактов).
#define OS_ENABLE_CRITICAL_SECTION
26 мая 2008
Работа теперь выглядит так:
char cTemp;
...
cTemp = DI(); // Запрещаем прерывания, сохраняя предыдущее состояние GIEx в cTemp
...
RI(cTemp); // Восстанавливаем прерывания из cTemp
...