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

 
 
> TNeo: тщательно протестированная РТОС для Cortex-M0/M0+/M3/M4/M4F, PIC24/dsPIC, PIC32MX.
dimonomid
сообщение Jan 18 2015, 01:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 16-09-14
Пользователь №: 82 835



Представляю новое ядро реального времени: TNeo. Как можно догадаться из названия, изначально она основана на TNKernel, но в итоге код был переписан почти полностью (потому что оригинальный код, по моему мнению, далек от совершенства), написаны подробные юнит-тесты, исправлены ошибки и добавлено много новых фич.

Список найденных и исправленных ошибок в TNKernel 2.7 можно посмотреть тут: http://dfrank.bitbucket.org/tneokernel_api...implement__bugs

Код TNeo написан аккуратно и тщательно, документирован очень подробно. Документация генерируется автоматически посредством doxygen, таким образом, легко поддерживать документацию в актуальном состоянии:
Список новых возможностей:

* Dynamic tick (опционально): если системе нечего делать, эта опция позволяет действительно ничего не делать (уйти в sleep), и даже не просыпаться каждую миллисекунду для обработки системного тика. Подробнее: http://dfrank.bitbucket.org/tneokernel_api...time_ticks.html
* Timer: позволяет попросить ядро запустить пользовательскую функцию через определенный промежуток времени. Подробнее: http://dfrank.bitbucket.org/tneokernel_api...__timer_8h.html
* Event group connection: позволяет "соединить" группу флагов с другими объектами РТОС. Очень удобно в случаях, когда в задаче нужно ждать, скажем, сообщения из нескольких очередей, или ждать каких-то флагов плюс сообщения из очереди. Подробнее: http://dfrank.bitbucket.org/tneokernel_api...ventgrp_connect
* Profiler (опционально): позволяет узнать общее время работы каждой задачи, максимальное время работы задачи подряд и т.д. Полезно для отладки.
* Software stack overflow check (опционально) - программный контроль переполнения стека, очень существенно облегчает дебаг;
* Recursive mutexes (опционально) - позволяет вложенную блокировку мютексов;
* Mutex deadlock detection (опционально) - в случае deadlock, ядро сообщает об этом посредством callback-функции;
* Separate interrupt stack - на всех поддерживаемых платформах прерывания используют отдельный стек.

Полный список фич тут: http://dfrank.bitbucket.org/tneokernel_api...l/features.html
Отличия API TNeo от API TNKernel 2.7 тут: http://dfrank.bitbucket.org/tneokernel_api...ernel_diff.html

Чем не устраивает TNKernel: см. документацию: Why reimplement TNKernel, также можно посмотреть мой старый пост на этом форуме: http://electronix.ru/forum/index.php?s=&am...t&p=1280109

Кратко: ключевые проблемы TNKernel:
  • Самая основная проблема в том, что TNKernel - проект, написанный на коленке, т.е. в спешке. Огромное количество дублирования кода, непоследовательности и недостаточной продуманности.
  • Проект не тестировался (только "вручную", как это нередко делается в эмбеддинге, к сожалению). Среди найденных багов есть банальнейшие ситуации с мютексами, которые не обрабатываются ядром корректно (см. ссылку на список багов выше). Ну, учитывая первый пункт про спешку, отсутствие тестов неудивительно, т.к. на них нужно огромное количество времени. У меня на тесты ушло примерно столько же времени, сколько на само ядро.
  • Документация живет отдельной от самого ядра жизнью.
  • Проект не поддерживается. Я присылал Юрию исправления некоторых ошибок, мои сообщения были проигнорированы.


Любопытный читатель может спросить: если уж я так сильно ругаю TNKernel, почему же я взял это ядро за основу? С удовольствием отвечу: не смотря на то, что реализация TNKernel, по моему мнению, далека от совершенства, идеи, стоящие за реализацией, я считаю в целом очень достойными. Ядро компактное и быстрое, и данные организованы грамотно.

Я хотел переписать его так, чтобы на код было приятно смотреть и легко модифицировать (не боясь что-то сломать), хотел быть уверенным в отсутствии багов (посредством юнит-тестов), хотел достойную актуальную документацию. Все это готово.

Попутно я реализовал вещи, которых мне самому раньше не хватало, плюс реализовал пожелания людей, заинтересовавшихся проектом (я представил TNeo на семинаре Microchip MASTERS 2014, после чего и получил предложение реализовать порт для линейки Cortex-M и несколько других фич)

Выражаю огромную благодарность Юрию за проделанную работу над TNKernel: без нее, конечно, TNeo никогда не появилась бы. Полный список благодарностей можно прочитать на странице Thanks.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dimonomid   TNeo: тщательно протестированная РТОС для Cortex-M0/M0+/M3/M4/M4F, PIC24/dsPIC, PIC32MX.   Jan 18 2015, 01:41
- - Aner   Под IAR c Cortex не планируется?   Jan 18 2015, 11:11
|- - dimonomid   Цитата(Aner @ Jan 18 2015, 15:11) Под IAR...   Jan 18 2015, 11:23
- - AlexandrY   Цитата(dimonomid @ Jan 18 2015, 03:41) По...   Jan 18 2015, 12:30
|- - dimonomid   Цитата(AlexandrY @ Jan 18 2015, 17:30) Не...   Jan 18 2015, 13:15
|- - AlexandrY   Цитата(dimonomid @ Jan 18 2015, 15:15) То...   Jan 18 2015, 21:42
|- - dimonomid   Цитата(AlexandrY @ Jan 19 2015, 02:42) Да...   Jan 18 2015, 22:52
- - nill   Планируете переносить TN NET на своё ядро? И есть ...   Jan 18 2015, 13:58
|- - dimonomid   Цитата(nill @ Jan 18 2015, 17:58) Планиру...   Jan 18 2015, 14:14
- - Xenia   Цитата(dimonomid @ Jan 18 2015, 04:41) Пр...   Jan 18 2015, 14:30
|- - dimonomid   Цитата(Xenia @ Jan 18 2015, 18:30) А скач...   Jan 18 2015, 14:39
|- - Xenia   Цитата(dimonomid @ Jan 18 2015, 17:39) Во...   Jan 18 2015, 15:09
|- - dimonomid   Цитата(Xenia @ Jan 18 2015, 20:09) 1. Изв...   Jan 18 2015, 15:32
|- - Xenia   Цитата(dimonomid @ Jan 18 2015, 18:32) Пр...   Jan 18 2015, 16:10
|- - dimonomid   Цитата(Xenia @ Jan 18 2015, 20:10) А как ...   Jan 18 2015, 16:31
- - Xenia   Цитата(dimonomid @ Jan 18 2015, 19:31) Та...   Jan 18 2015, 22:14
|- - AlexandrY   Цитата(Xenia @ Jan 19 2015, 00:14) В этой...   Jan 19 2015, 09:52
|- - dimonomid   Цитата(AlexandrY @ Jan 19 2015, 14:47) В ...   Jan 19 2015, 10:21
||- - megajohn   рассмотрите возможность 11. не плохо бы разместить...   Jan 19 2015, 10:34
|||- - dimonomid   Цитата(megajohn @ Jan 19 2015, 15:34) рас...   Jan 19 2015, 11:18
||- - AlexandrY   Цитата(dimonomid @ Jan 19 2015, 12:21) Мо...   Jan 19 2015, 11:40
||- - dimonomid   Цитата(AlexandrY @ Jan 19 2015, 16:40) Вс...   Jan 19 2015, 11:59
|- - den_po   Цитата(AlexandrY @ Jan 19 2015, 14:52) Та...   Jan 19 2015, 11:36
|- - dimonomid   Цитата(den_po @ Jan 19 2015, 16:36) http:...   Jan 19 2015, 11:40
- - Aner   Философия однако, не даром западные программисты в...   Jan 19 2015, 18:08
|- - dimonomid   Цитата(Aner @ Jan 19 2015, 22:08) Для ког...   Jan 19 2015, 18:50
|- - AlexandrY   Цитата(dimonomid @ Jan 19 2015, 20:50) Ис...   Jan 19 2015, 20:35
|- - dimonomid   Цитата(AlexandrY @ Jan 20 2015, 00:35) Ну...   Jan 19 2015, 21:14
|- - AlexandrY   Цитата(dimonomid @ Jan 19 2015, 23:14) Не...   Jan 20 2015, 07:09
|- - dimonomid   Цитата(AlexandrY @ Jan 20 2015, 11:09) Ну...   Jan 20 2015, 08:03
|- - LightElf   QUOTE (dimonomid @ Jan 20 2015, 12:03) Хо...   Jan 20 2015, 09:46
||- - dimonomid   Цитата(LightElf @ Jan 20 2015, 13:46) Но ...   Jan 20 2015, 10:55
|- - AlexandrY   Цитата(dimonomid @ Jan 20 2015, 10:03) Уж...   Jan 20 2015, 11:03
|- - den_po   Цитата(AlexandrY @ Jan 20 2015, 15:03) Не...   Jan 20 2015, 14:17
|- - dimonomid   Цитата(AlexandrY @ Jan 20 2015, 15:03) Пр...   Jan 20 2015, 16:39
|- - AlexandrY   Цитата(dimonomid @ Jan 20 2015, 18:39) Мд...   Jan 21 2015, 07:24
|- - dimonomid   Цитата(AlexandrY @ Jan 21 2015, 12:24) Ва...   Jan 21 2015, 08:56
|- - AlexandrY   Цитата(dimonomid @ Jan 21 2015, 10:56) Со...   Jan 21 2015, 09:47
|- - dimonomid   Цитата(AlexandrY @ Jan 21 2015, 14:47) А ...   Jan 21 2015, 10:03
|- - AlexandrY   Цитата(dimonomid @ Jan 21 2015, 12:03) Ни...   Jan 21 2015, 10:11
|- - dimonomid   Цитата(AlexandrY @ Jan 21 2015, 15:11) Па...   Jan 21 2015, 12:29
|- - AlexandrY   Цитата(dimonomid @ Jan 21 2015, 14:29) Не...   Jan 22 2015, 08:03
|- - dimonomid   Цитата(AlexandrY @ Jan 22 2015, 13:03) ...   Jan 22 2015, 09:52
|- - AlexandrY   Цитата(dimonomid @ Jan 22 2015, 11:52) По...   Jan 22 2015, 10:16
|- - dimonomid   Цитата(AlexandrY @ Jan 22 2015, 15:16) Я ...   Jan 22 2015, 11:12
- - Aner   Про то что FreeRTOS значительно медленнее TNKernel...   Jan 19 2015, 20:45
- - Mahagam   Aner, фриртос действительно тормознее других перек...   Jan 20 2015, 07:17
|- - Aner   QUOTE (Mahagam @ Jan 20 2015, 11:17) Aner...   Jan 20 2015, 09:20
|- - Mahagam   QUOTE (Aner @ Jan 20 2015, 12:20) кроме b...   Jan 20 2015, 11:33
||- - Aner   QUOTE (Mahagam @ Jan 20 2015, 15:33) поме...   Jan 20 2015, 14:45
||- - Mahagam   QUOTE (Aner @ Jan 20 2015, 17:45) Да блин...   Jan 20 2015, 17:10
|- - dimonomid   Насчет FreeRTOS: Цитата(Mahagam @ Jan 20 201...   Apr 7 2015, 23:58
- - Valentine Loginov   Спасибо! Будем смотреть. А тесты в открытом до...   Jan 20 2015, 08:06
|- - dimonomid   Цитата(Valentine Loginov @ Jan 20 2015, 12...   Jan 20 2015, 08:10
- - Aner   Шизу про догнал развивать не стоит. Я о тормозах и...   Jan 20 2015, 19:35
- - ViKo   Здесь много разговора про мьютексы. В Keil CMSIS-R...   Jan 22 2015, 10:01
|- - AHTOXA   Цитата(ViKo @ Jan 22 2015, 15:01) Я испол...   Jan 22 2015, 11:56
|- - ViKo   Цитата(AHTOXA @ Jan 22 2015, 14:56) То ес...   Jan 22 2015, 12:07
|- - AHTOXA   Цитата(ViKo @ Jan 22 2015, 17:07) Нет. Мь...   Jan 22 2015, 15:37
|- - ViKo   Цитата(AHTOXA @ Jan 22 2015, 18:37) Вот э...   Jan 22 2015, 16:51
|- - dimonomid   Цитата(ViKo @ Jan 22 2015, 21:51) Почитай...   Jan 22 2015, 17:13
- - _Pasha   Мне вообще даже эти все разговоры про ртосы не нра...   Jan 22 2015, 10:18
- - Alex B._   dimonomid – можно рассмотреть кейс, когда на...   Jan 22 2015, 11:26
|- - dimonomid   Цитата(Alex B._ @ Jan 22 2015, 16:26) dim...   Jan 22 2015, 11:35
|- - Alex B._   Цитата(dimonomid @ Jan 22 2015, 14:35) Я ...   Jan 22 2015, 11:40
- - ViKo   Хотите семафоров? - их есть у Кейла. Как говорится...   Jan 22 2015, 20:33
- - Valentine Loginov   Ай пошли войны. Создали бы тему или блог какой и о...   Jan 23 2015, 06:49
- - ViKo   Нашел принципиальное отличие мьютекса от семафора....   Jan 23 2015, 07:04
|- - LightElf   QUOTE (ViKo @ Jan 23 2015, 11:04) Так что...   Jan 23 2015, 12:01
|- - ViKo   Цитата(LightElf @ Jan 23 2015, 15:01) При...   Jan 23 2015, 12:42
- - zaicev_ekb   Прошу прошения. А почему такой древний компилятор ...   Feb 9 2015, 10:47
|- - dimonomid   Цитата(zaicev_ekb @ Feb 9 2015, 15:47) Пр...   Feb 9 2015, 16:30
- - dimonomid   Так, отставить, я ерунду написал в прошлом сообщен...   Apr 8 2015, 10:03
- - LightElf   QUOTE (dimonomid @ Apr 8 2015, 13:03) Так...   Apr 8 2015, 13:42
- - dimonomid   Цитата(LightElf @ Apr 8 2015, 17:42) Наск...   Apr 8 2015, 14:02
- - LightElf   QUOTE (dimonomid @ Apr 8 2015, 17:02) т к...   Apr 8 2015, 14:23
- - dimonomid   Цитата(LightElf @ Apr 8 2015, 18:23) Хм. ...   Apr 8 2015, 14:38
- - LightElf   QUOTE (dimonomid @ Apr 8 2015, 17:38) Мда...   Apr 8 2015, 14:46
- - dimonomid   Цитата(LightElf @ Apr 8 2015, 19:46) Во...   Apr 8 2015, 14:56
- - LightElf   QUOTE (dimonomid @ Apr 8 2015, 17:56) Вам...   Apr 8 2015, 15:05
- - dimonomid   Цитата(LightElf @ Apr 8 2015, 19:05) Так ...   Apr 8 2015, 15:13
- - LightElf   QUOTE (dimonomid @ Apr 8 2015, 18:13) Хм....   Apr 8 2015, 15:29


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

 


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


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