picoTCP is a TCP/IP stack developed from scratch for embedded devices with an eye on the Internet of Things revolution.
Highly configurable and modular design
Features are developed as modules in picoTCP, allowing you to pick the features you want in your application. This results in the smallest possible stack that remains compliant with the internet standards. The schematic below provides an overview of all implemented protocols.
A quality TCP/IP stack
Stability and robustness are key features of a TCP/IP stack. You don’t want to worry about your devices failing because of a faulty stack.
We implemented a very strict quality assurance, by appointing a QA team separate from the developers. Their goal is to ensure that releases are top notch quality and implemented according to RFC requirements through a continuous automated test system that verifies picoTCP against the implemented RFCs.
Other tools running continuously are Pareon Verify (dynamic code analysis) to catch hard to detect bugs like memory leaks, invalid memory accesses, uninitialized memory reads and more; static code analysis (part of Tiobe TICS); unit tests and smoke tests ensure that no commit will go unnoticed. If you’re interested in all the details, have a look at our picoTCP testing article.
It runs on (pretty much) everything
By keeping interfaces simple, the porting effort to new platforms and OSses are very low. To give you an indication: porting to a new platform can be done in 3 days or less, a new OS in a single day and if you really go crazy, you can do an initial port in a single evening. Different platforms, mean different compilers, that’s why we continuously compile our stack with a bunch of them. The following list shows some of the currently supported platforms, device drivers and compilers.
- ARM Cortex-M series
- ST Micro STM
- NXP LPC
- TI Stellaris
- Freescale K64F
- ARM ARM9-series
- ST Micro STR9
- Texas Instruments
- AVR 8bit
- User space (TUN/TAP)
- Kernel space
- User space (TAP)
- BCM43362 (IEEE 802.11)
- MRF24WG (IEEE 802.11)
- LPC Ethernet ENET/EMAC (IEEE 802.3)
- Stellaris Ethernet (IEEE 802.3)
- STM32 Ethernet (IEEE 802.3)
- Wiznet W5100 (IEEE 802.3)
- USB CDC-ECM (CDC1.2)
- Virtual drivers
Integration with third-party solutions
Good software doesn’t come alone. That’s why we aim to integrate with solutions created by third parties. Have a look at this list of solutions and operating systems created by others that we already integrated with.
From day one we decided to open source picoTCP under GPLv2, and do our issue management completely open on GitHub. Not only are we strong believers in the open source movement, but we really wanted to create complete transparency. Since we have nothing to hide, we want you to be able to see for yourself what our code looks like, and how we work.
For those of you who don't have the option of using GPLv2 code, you can get in touch with us for custom licensing schemes.