This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

TNeo: stable, well-formed, carefully tested real-time kernel (Cortex-M0/M0+/M3/M4/M4F)

I'd like to present the real-time kernel: TNeo bitbucket.org/.../tneokernel

TNeo was born as a thorough review and re-implementation of TNKernel (http://tnkernel.com). The new kernel has well-formed code, inherited bugs are fixed as well as new features being added, it is well documented and tested carefully with unit-tests.

Currently it is available for the following architectures:

- ARM Cortex-M cores: Cortex-M0/M0+/M1/M3/M4/M4F (supported toolchains: Keil RealView, GCC, clang, IAR)

- Microchip: PIC32/PIC24/dsPIC

Comprehensive documentation is available in two forms:

- Latest stable TNeo (html): dfrank.bitbucket.org/.../index.html

- Latest stable TNeo (pdf): dfrank.bitbucket.org/.../tneo.pdf

Summary list of features can be found here: dfrank.bitbucket.org/.../features.html

----------------------------------------

This project was initially a fork of PIC32 TNKernel port by Anders Montonen. I don't like several design decisions of original TNKernel, as well as many of the implementation details, but Anders wants to keep his port as close to original TNKernel as possible. So I decided to fork it and have fun implementing what I want.

The more I get into how TNKernel works, the less I like its code. It appears as a very hastily-written project: there is a lot of code duplication and a lot of inconsistency, all of this leads to bugs. More, TNKernel is not documented well enough and there are totally no unit tests for it, so I decided to reimplement it almost completely. Refer to the page Why reimplement TNKernel for details.

I really don't like several API decisions of original TNKernel, so it's not 100%-compatible. Refer to the page Differences from TNKernel API for details.

Together with almost totally re-writing TNKernel, I've implemented detailed unit tests for it, to make sure I didn't break anything, and of course I've found several bugs in original TNKernel 2.7: refer to the section Bugs of TNKernel 2.7. Unit tests are, or course, a "must-have" for the project like this; it's so strange bug original TNKernel seems untested.

I presented the kernel at Microchip Masters 2014 seminar, and received an offer from the head of research of car alarm company to implement Cortex-M port. Of course I accepted it, and so I'm happy to publish it here.

For comprehensive information, refer to the documentation (see links at the top)