ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
6 мая
109437 Топик полностью
Gamma SPb (06.01.2008 01:32, просмотров: 174) ответил Gamma SPb на уговорили выложить последний вариант порта TNKernel на микрочиповские 16-битники. Кому интересно... - test
новая ревизия (780) http://www.pic24.ru/upload/tnkernel_mchp_16bit_2_3_rev_780.rar

[%] исправлен баг с модульной и битреверсивной адресацией в dsPIC:

Если во время выполнения библиотечной функции, которая использует модульную или битреверсивную адресацию возникает системное (в котором вызываются сервисы, т.е. при выходе из которого может измениться контекст) прерывание, регистры MODCON и XBREV не сохраняются и не обнуляются. При этом косвеная адресация по прежнему подчиняется правилам модульной или битреверсивной адресации, что однозначно приведет к краху системы. В ревизии 780 введены два target-а - PIC24 и dsPIC. Для dsPIC в стеке задачи сохраняются регистры MODCON и XBREV. Соответственно изменены файлы сборки библиотеки. В архиве четыре варианта - PIC24 coff/elf и dsPIC coff/elf с оптимизацией Os. В проект нужно просто подключить соответствующую библиотеку. Тем не менее, ядро DSP до сих пор является разделяемым ресурсом и при его использовании нужно применять мютекс.

[%] изменена проверка контекста в сервисах:

Оверхед РТОС по времени выполнения уменшился примерно на 10-15% Все системные прерывания должны быть разрешены только после запуска системы (вообще говоря для этого предназначена функция cpu_int_en, указатель на которую передается в tn_start_system()) Все сервисы которые могут вызываться из задачи вернут ошибку TERR_WCONTEXT, если будут вызваны из прерывания (системного или несистемного) Все сервисы, которые могут вызываться из системного прерывания вернут ошибку TERR_WCONTEXT, если будут вызваны из задачи или несистемного прерывания Напоминание: по прежнему, все системные прерывания могут иметь только приоритет TN_INTERRUPT_LEVEL (т.е. 1). Для объявления функции обработки системного прерывания предназначен макрос tn_sys_interrupt(), например: tn_sys_interrupt (_T2Interrupt) { IFS0bits.T2IF = 0; tn_tick_int_processing(); }

[%] исправлена ошибка проверки контекста в функции tn_task_exit()

качать по ссылке

Выложил Thread-Metric RTOS Test Suite для TNKernel последней ревизии:

Это тест оверхеда RTOS от Express Logic, Inc. (коммерческая ось ThreadX) The Thread-Metric test suite consists of 8 distinct RTOS tests that are designed to highlight commonly used aspects of an RTOS. The test measures the total number of RTOS events that can be processed during a specific timer interval Сравнение с другими тут: http://www.avix-rt …/html/performance.html Цифры будут побольше чем по ссылке выше, там тестировалась относительно старая версия. Все цифры есть в файле _results.txt в архиве: http://www.pic24.r …est_suite_tnkernel.rar