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

 
 
> 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
 
Start new topic
Ответов
Xenia
сообщение Jan 18 2015, 14:30
Сообщение #2


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(dimonomid @ Jan 18 2015, 04:41) *
Представляю новое ядро реального времени: TNeo.


А скачать-то ее откуда-нибудь можно? Или отсюда по одному файлику вылавливать? (там их десятка три, да еще и по разным директориям хитрО разложены)
Go to the top of the page
 
+Quote Post
dimonomid
сообщение Jan 18 2015, 14:39
Сообщение #3


Участник
*

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



Цитата(Xenia @ Jan 18 2015, 18:30) *
А скачать-то ее откуда-нибудь можно? Или отсюда по одному файлику вылавливать? (там их десятка три, да еще и по разным директориям хитрО разложены)

Вот в том самом предложении, которое вы процитировали:
Цитата(dimonomid)
Представляю новое ядро реального времени: TNeo

Нажимаете на TNeo - попадаете на bitbucket. Можете или клонировать Mercurial-репозиторий, или зайти там в "Downloads" и просто скачать там последний собранный релиз.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 18 2015, 15:09
Сообщение #4


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(dimonomid @ Jan 18 2015, 17:39) *
Вот в том самом предложении, которое вы процитировали:
Нажимаете на TNeo - попадаете на bitbucket. Можете или клонировать Mercurial-репозиторий, или зайти там в "Downloads" и просто скачать там последний собранный релиз.


Спасибо! Получилось.

Тогда уж позвольте задать вам еще два вопроса. Один умный, а другой глупый. sm.gif

1. Известно, что TNKernel поддерживает MSP430x (по крайней мере, такой проект у них был), тогда так TNeo его не поддерживает, хотя и позиционирует себя, как дальнейшее развитие TNKernel. Что стряслось? Возросли требования к архитектуре? Или возникло презрение к MSP430x, как к "вымирающему" виду? sm.gif

2. Может ли TNKernel или TNeo быть портированы на ... AVR? sm.gif Понятно, что не на Tiny или Mega, а хотя бы на Xmega? Если нет, то что этому мешает? Мало памяти, гарвардская архитектура, недостаточно уровней вложения прерываний? Или что-то еще?
Go to the top of the page
 
+Quote Post
dimonomid
сообщение Jan 18 2015, 15:32
Сообщение #5


Участник
*

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



Цитата(Xenia @ Jan 18 2015, 20:09) *
1. Известно, что TNKernel поддерживает MSP430x (по крайней мере, такой проект у них был), тогда так TNeo его не поддерживает, хотя и позиционирует себя, как дальнейшее развитие TNKernel. Что стряслось? Возросли требования к архитектуре? Или возникло презрение к MSP430x, как к "вымирающему" виду? sm.gif

Если TNeo и позиционирует себя как развитие TNKernel, то безотносительно конкретных поддерживаемых архитектур. Так что ничего особо не стряслось: ни требования не возросли, ни презрения не появилось.

Когда я только начинал работать над TNeo, я честно говоря и не думал что получится так глобально. Просто запилил себе порт под PIC32, потому что существующие порты меня категорически не устраивали тем, как там организован стек для прерываний. По ходу перепиливания ядра, это ядро нравилось мне все меньше и меньше, и я решил "сделать хорошо". Чтобы ничего не сломать, сначала написал подробные юнит-тесты. Пока писал тесты, нашел ошибки в оригинальном ядре. Потом пошло-поехало: давно хотел таймеры, давно хотел то да сё.

Вообще, в своих текущих проектах я позволяю себе всякие вольности, и далеко не всегда у меня получается код, который мне нравится. Но ядро - особый проект, и я хочу чтобы оно было настолько близко к некоторому "идеалу", насколько возможно.

В итоге понравилось как оно получилось, решил перенести существующие проекты на PIC24 на него. Запилил порт под это дело.

Потом на семинаре Microchip рассказал про свое ядро, некоторые товарищи заинтересовались и сделали мне деловое предложение запилить порт под линейку Cortex-M и еще несколько плюшек. Я отказываться не стал. sm.gif

Если кто-нибудь сделает аналогичное предложение запилить порт под MSP430x, я вряд ли откажусь. Но и предложение тоже вряд ли сделают, я думаю. sm.gif

Цитата(Xenia @ Jan 18 2015, 20:09) *
2. Может ли TNKernel или TNeo быть портированы на ... AVR sm.gif. Понятно, что не на Tiny или Mega, а хотя бы на Xmega? Если нет, то что этому мешает? Мало памяти, гарвардская архитектура, недостаточно уровней вложения прерываний? Или что-то еще?


Я никогда не работал с AVR и не могу точно сказать, но почти уверен, что технически ничего не мешает. Так что тут та же ситуация что и с MSP430x: если мне кто-то сделает интересное предложение запилить порт под AVR, я вряд ли откажусь.
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, 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 Текстовая версия Сейчас: 22nd July 2025 - 21:19
Рейтинг@Mail.ru


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