1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mysterywolf-RT-Thread-wrapper-of-uCOS-III

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
changelog.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 11:25 b6b336d

Техническое задание по ведению журнала разработки и тестирования программного обеспечения

Дата Описание
2020-06-29 Первоначальное построение структуры. Завершение работы над совместимостью с сигнальными счётчиками. Завершена работа над совместимостью в системе задержки в os_time.c.
2020-06-30 Завершена работа над совместимостью со сторонними программными таймерами.
2020-07-01 Реализована совместимость с мьютексами.
2020-07-02 Реализована совместимость с очередями сообщений.
2020-07-03 Реализована совместимость со списками групп флагов событий. Реализована совместимость со встроенными регистрами задач. Реализована совместимость со встроенными очередями сообщений задач.
2020-07-04 Реализована совместимость со счётчиками задач. Реализована проверка безопасности аутентификации uCOS-III. Выполнено подключение к макроопределениям os_cfg.h. Добавлен и подключён os_cfg_app.h.
2020-07-05 Завершены проверки макроопределений в файлах os_flag.c, os_mutex.c, os_tmr.c, os_task.c, os_time.c и os_core.c. Оптимизированы os_cfg_app.h и os_cfg.h.
2020-07-06 Дополнен файл readme.md. Реализованы функции OSTaskSemSet и OSSemSet. Оптимизированы функции OSTaskSuspend и OSTaskResume для обеспечения возможности вложения приостановки и возобновления.
2020-07-07 Перенесён файл os_mem.c. Улучшена структура объектов ядра.
2020-07-08 Реализована функция OSTmrStateGet. Построена структура для статистической задачи. Исправлены ошибки в функциях OSTaskDel, связанные с удалением счётчиков задач и очередей задач.
2020-07-09 Реализован внутренний статистический процесс uCOS-III, который может корректно вычислять коэффициент использования ЦП и использование стека каждой задачей.
2020-07-10 Реализована функция OSTimeDlyResume. Исправлено некорректное поведение функций OSSemDel и OSMutexDel.
2020-07-11 Добавлены члены переменных в структуру OS_TCB, которая соответствует оригинальной версии. Реализована функция OSSemPendAbort, а также улучшена функция OSSemPend.
2020-07-12 Создан новый файл os_rtwrap.c для поддержки преобразования между RT-Thread и μCOS-III. Реализованы функции OSTaskSemPendAbort и OSTaskQPendAbort. Улучшены функции OSSemPendAbort, OSSemMutexAbort и OSSFlagPendAbort.
2020-07-14 Реализованы функции OSSchedRoundRobinCfg, OSFlagPendGetFlagsRdy и OSSQFlush. Дополнены примеры timer_sample.c и mutex_sample.c.
2020-07-15 Перенесён файл cpu_core.c с добавлением функции CPU_Init. Оптимизирован пример timer_sample.c. Дополнен пример mutex_sample.c.
2020-07-16 Задачи с внутренними очередями сообщений и счётчиками используют имена задач напрямую, без конкатенации строк. Реализована функция обратного вызова OSTmrDel. Добавлена цепочка OSTmrDbgListPtr. Реализовано преобразование между таймером RT-Thread и таймером μCOS-III.
2020-07-18 Начата интеграция с FinSH и реализация команды msh.
2020-07-19 В функцию OSInit добавлена защита критической секции. Реализованы цепочки OSSemDbgListPtr и OSMutexDbgListPtr.
2020-07-20 В файле os_rtwrap.c добавлены функции rt_ipc_post_all и rt_sem_release_all. Реализована опция OSSemPost OS_OPT_POST_ALL.
2020-07-22 Дополнен пример sem_sample.c.
2020-07-23 Дополнен пример q_sample.c. Изменён основной файл main.c для строгого следования инициализации, предложенной μCOS-III.
2020-07-24 Добавлены файлы μC/LIB (V1.39.00). Изменена структура проекта, переместив файлы проекта на один уровень выше.
2020-07-25 Добавлены файлы os_dbg.c и os_cfg_app.c для интеграции с μC/Probe.
2020-07-26 Реализованы переменные-члены OS_TCB .TaskState, .StkPtr и .PendOn, DbgName.
2020-07-27 Исправлены функции OSMutexPendAbort, OSSemPendAbort, OSTmrPendAbort и OSFlagPendAbort для корректного отображения количества задач, которые были отменены.
2020-07-28 Добавлен пример task_sem_sample.c. Реализованы переменные-члены структуры OS_MUTEX .OwnerNestingCtr, .OwnerTCBPtr и .OwnerOriginalPrio.
2020-07-29 Улучшено описание в файле readme.
2020-08-03 Добавлена переменная OS_CFG_TASK_PROFILE_EN для снижения потребления ресурсов.
2020-08-07 Примеры переименованы из sample в example. Добавлена переменная PKG_USING_UCOSIII_WRAPPER_AUTOINIT.
2020-08-08 Создан скрипт SConscript для поддержки инструмента env для автоматизации добавления пакетов.
2020-08-12 Доработано описание в файле readme.
2020-08-13 Исправлена ошибка в функции OSTmrRemainGet. Реализованы переменные .Match и .Remain в структуре OS_TMR.
2020-08-16 Реализован код ошибки OS_ERR_TASK_SUSPENDED.

2020-12-25: исправлена проблема с кодом, возникавшая после определения PKG_USING_UCOSIII_WRAPPER_TINY.

2021-05-05: после пяти месяцев предварительного тестирования выпущена официальная версия v1.0.0.

2021-05-23: RT_IPC_FLAG_FIFO заменён на RT_IPC_FLAG_PRIO для обеспечения своевременности.

Release

v0.1.0: полная совместимость всех объектов ядра уже реализована и может удовлетворить нормальные требования совместимости. В этой версии ещё не реализована статистическая задача μCOS-III, которая будет выпущена в последующих версиях.

v0.2.0:

  • исправление ошибок (bug fix): функция OSTaskDel не удаляет встроенные сигналы и очереди задач;
  • добавление (add): реализованы функции OSTmrStateGet (в настоящее время только 13 API uCOS-III несовместимы), Idle задачи (фактически это обратный вызов функции RTT Idle задачи), функция обратного вызова Idle задачи OSIdleTaskHook и внутренняя задача uCOS-III — статистическая задача.

v0.3.0:

  • исправление ошибок: функции OSSemDel, OSMutexDel, OSQDel и OSFlagDel не возвращают текущее количество ожидающих сигналов и не используют опцию OS_OPT_DEL_NO_PEND;
  • добавлены функции обработки OS_ERR_PEND_ABORT для функций OSSemPend, OSMutexPend, OSQPend и OSFlagPend;
  • добавлено (add): совместимость с оригинальной структурой данных OS_TCB;
  • реализованы функции: OSTimeDlyResume, OSSemPendAbort, OSTaskSemPendAbort, OSMutexPendAbort, OSTaskQPendAbort и OSTaskQFlush;
  • реализовано (add) 17 функций.

v0.4.0:

  • добавлена (add) функция CPU_Init в файл cpu_core.c для предотвращения ошибок при переносе старых проектов из-за отсутствия этой функции;
  • удалены (del) прямые ссылки на имена задач в очереди сообщений и очередей внутренних сигналов задач;
  • исправлены ошибки: реализована передача одного параметра от функции обратного вызова RTT таймера к двум параметрам функции обратного вызова μCOS-III таймера, что позволяет напрямую использовать исходную функцию обратного вызова без необходимости её изменения на функцию обратного вызова RTT таймера;
  • реализована (add) полная поддержка всех опций p_tmr->State;
  • исправлены ошибки (bug fix) в реализации μCOS-III программного таймера с задержкой периодической задержки (известно, ограничения os_tmr.c полностью решены);
  • в функции OSInit добавлена защита критической области.

v0.5.0:

  • исправлены ошибки в реализации функции OSSemPost с опцией OS_OPT_POST_ALL (известно);
  • добавлены файлы μC/LIB (V1.39.00);
  • реализованы (add) функции CPU_NameClr, CPU_NameGet и CPU_NameSet в μC/CPU;
  • реализован интерфейс с μC/Probe и необходимые переменные-члены.

v0.6.0:

  • добавлен (add) статус задачи OS_TASK_STATE_SUSPENDED;
  • исправлена ошибка в функции OSTmrRemainGet;
  • реализованы структуры данных OS_TMR .Match и .Remain;
  • реализованы коды ошибок OS_ERR_TASK_SUSPENDED, OS_ERR_TASK_OPT, OS_ERR_LOCK_NESTING_OVF, OS_ERR_MUTEX_NESTING, OS_ERR_MUTEX_OWNER, OS_ERR_ROUND_ROBIN_DISABLED, OS_ERR_STK_LIMIT_INVALID, OS_ERR_FLAG_PEND_OPT;
  • улучшена (enhance) логика функции OSTaskStkChk, когда параметр OS_TCB* пуст.

v0.7.0:

  • исправлена ошибка: функция OSInit не вызывала CPU_CRITICAL_EXIT() для открытия прерывания;
  • добавлены (add 3.08): глобальная переменная OSInitialized, макроопределения OS_FALSE и OS_TRUE, код ошибки OS_ERR_OS_NOT_INIT и OS_ERR_OS_NO_APP_TASK;
  • удалены устаревшие коды ошибок (del): OS_ERR_INT_Q, OS_ERR_INT_Q_FULL, OS_ERR_INT_Q_SIZE, OS_ERR_INT_Q_STK_INVALID и OS_ERR_INT_Q_STK_SIZE_INVALID;
  • добавлен код ошибки (add 3.08) OS_ERR_ILLEGAL_DEL_RUN_TIME и его реализация;
  • в функциях OSTmrDel, OSTaskDel, OSMutexDel, OSSemDel, OSQDel и OSFlagDel добавлена проверка безопасности OS_SAFETY_CRITICAL_IEC61508;
  • добавлен код ошибки (add 3.08) OS_ERR_MUTEX_OVF и его реализация;
  • добавлен код ошибки (add 3.08) OS_ERR_TASK_SUSPEND_CTR_OVF и его реализация;
  • добавлен код ошибки (add 3.08) OS_ERR_TMR_INVALID_CALLBACK и его реализация.

В версии 3.08 все ошибки, связанные с совместимостью, были полностью устранены.

  • Добавлены (add 3.08):
    • определения совместимости вниз в заголовочном файле os.h;
    • определение макроса OS_CFG_INVALID_OS_CALLS_CHK_EN и его реализация;
    • информация об открытом исходном протоколе μCOS-III в начале каждого файла C и H;
    • исправление ошибки в функции OSTaskDel: когда указатель TCB равен NULL, удаление задачи само по себе не приводит к своевременному присвоению значения внутренней переменной p_tcb указателю текущей задачи;
    • реализация макроса OS_CFG_TASK_IDLE_EN и связанной проверки. v0.8.0

[add] Реализовать функцию OSTaskChangePrio, в настоящее время совместимый слой поддерживает только 1 API.

v0.9.0

[bug fix] Исправить переменную p_tcb->TaskState, добавить следующие функции:

#define  OS_TASK_STATE_PEND_TIMEOUT           (OS_STATE)(  3u)  /*   0 1 1     Pend + Timeout                         */
#define  OS_TASK_STATE_DLY_SUSPENDED          (OS_STATE)(  5u)  /*   1 0 1     Suspended + Delayed or Timeout         */
#define  OS_TASK_STATE_PEND_SUSPENDED         (OS_STATE)(  6u)  /*   1 1 0     Suspended + Pend                       */
#define  OS_TASK_STATE_PEND_TIMEOUT_SUSPENDED (OS_STATE)(  7u)  /*   1 1 1     Suspended + Pend + Timeout             */

[add] Добавить пример suspend_example.c.

v0.10.0

[bug fix] Исправить ошибку, связанную с отсутствием вызова функции OS_MemInit для инициализации пула памяти.

[bug fix] Исправить ошибку в функции обратного вызова таймера OS_TmrCallback при обработке обновления параметров OSTmrSet, когда параметры таймера могут быть не установлены повторно.

[add] Проверить код ошибок функции OSInit.

[bug fix] Исправить ошибку в подсчёте количества внутренних задач в функции OSStart (не должны включать задачи простоя и таймера, которые являются внутренними задачами RTT).

[fix] Сделать функцию OS_TmrCallback статической частной функцией файла.

[del] Удалить избыточный код проверки параметров в функции OSTmrCreate.

Реорганизовать комментарии в файле os_tmr.c.

Преобразовать функции OSSemPost и OSMutexPost в функции, игнорирующие опцию OS_OPT_POST_NO_SCHED.

[bug fix] Заменить μ на u в коде μCOS, чтобы избежать проблем с кодировкой при выводе на терминал.

[bug fix] Исправить проблему в функции OS_TmrCallback, где переменные-члены .Match и .Remain не были повторно назначены при наличии задержки в периоде задержки.

При создании задачи, сделать адрес начала стека задачи равным &AppTask1_Stack[0], чтобы подчеркнуть начальный адрес стека.

v0.11.0

Выровнять и реорганизовать комментарии.

[del] Убрать ненужные функции-ловушки (заменены функциями-ловушками RT-Thread).

[bug fix] Исправить проблемы с обработкой состояния в функции OSTimeDlyResume.

Включить задачи простоя в диапазон управления OS_CFG_STAT_TASK_EN.

[del] Убрать ненужный код из файла os_dbg.c.

[del] Убрать ненужный код из заголовочного файла os.h.

[add] Внедрить PKG_USING_UCOSIII_WRAPPER_TINY для упрощения совместимого слоя.

[del] Убрать ненужные комментарии из файла os_task.c.

v0.12.0

[add] Включить определение макроса OS_CFG_TASK_SEM_EN для обрезки встроенных семафоров задач.

[add] В заголовочном файле os.h включить код определения макросов.

[del] Удалить ненужные определения макросов конфигурации.

[adjust] Оптимизировать PKG_USING_UCOSIII_WRAPPER_TINY.

[del] Удалить ненужную ветвь выбора в функции OSTaskSuspend().

[bug fix] Исправить утечку памяти, вызванную забытым освобождением памяти сообщений в функции OSQDel().

[adjust] Реорганизовать комментарии в файлах os_q.c, os_mem.c, os_core.c, os_flag.c, os_stat.c, os_time.c, os_sem.c.

[doc] Добавить описание старого файла версии os_pend_multi.c в файл readme.

[bug fixed] Установить начальное значение переменной rt_option в функции OSFlagPend().

[adjust] Оптимизировать структуру проекта.

[adjust] Изменить использование <> в заголовочных файлах на "".

[bug] Исправить ошибки, связанные с закрытием некоторых определений макросов, приводящие к ошибкам в проекте.

[add] Добавить определение макроса CPU_CFG_STK_ALIGN_BYTES в файл cpu.h.

[add] Поддержать код ошибки OS_ERR_PEND_WOULD_BLOCK.

[add] Создать пример flag_example.c.

[add] Внедрить функциональность OS_CFG_FLAG_MODE_CLR_EN.

[adjust] Преобразовать функции OSQPost и OSFlagPost так, чтобы они игнорировали опцию OS_OPT_POST_NO_SCHED.

[add] Определить члены структуры данных .FlagsPend, .FlagsRdy, .FlagsOpt в структуре OS_TCB.

v0.13.0

[add] Реализовать широковещательную очередь сообщений.

[adjust] Перенести автоматическую инициализацию из INIT_DEVICE_EXPORT в INIT_PREV_EXPORT.

Завершить работу над членом данных .FlagsRdy.

Завершить работу над членом данных p_grp->Flags.

[fix] Исправить несоответствие единиц измерения в результатах функции OSTmrRemainGet().

[fix] Исправить несоответствие единиц измерения значения члена данных .Remain в структуре данных OS_TMR.

[fix] Исправить проблему, связанную с тем, что формула преобразования из RT-Thread в таймер UCOS-III не учитывает изменения Systick.

v1.0.0

После пяти месяцев предварительного тестирования выпущена версия v1.0.0.

V1.0.1

Заменить RT_IPC_FLAG_FIFO на RT_IPC_FLAG_PRIO для обеспечения своевременности.

1
https://api.gitlife.ru/oschina-mirror/mysterywolf-RT-Thread-wrapper-of-uCOS-III.git
git@api.gitlife.ru:oschina-mirror/mysterywolf-RT-Thread-wrapper-of-uCOS-III.git
oschina-mirror
mysterywolf-RT-Thread-wrapper-of-uCOS-III
mysterywolf-RT-Thread-wrapper-of-uCOS-III
master