About

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.

Currently implemented features (* figures for ARM Cortex M4, gcc compiler)

Currently implemented features (* figures for ARM Cortex M4, gcc compiler)

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.

Tiobe TICS quality indicator for picoTCP

Tiobe TICS quality indicator for picoTCP

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.

Platforms

  • ARM Cortex-M series
    • ST Micro STM
    • NXP LPC
    • TI Stellaris
    • Freescale K64F
  • ARM ARM9-series
    • ST Micro STR9
  • Texas Instruments
    • MSP430
  • Microchip
    • PIC24
  • Atmel
    • AVR 8bit
  • Linux
    • User space (TUN/TAP)
    • Kernel space
  • Windows
    • User space (TAP)

Network drivers

  • 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)
  • PPP
  • Virtual drivers
    • TUN/TAP
    • VDE
    • Libpcap

Compilers

  • GCC
  • Clang
  • TCC
  • ARM-RCVT
  • IAR
  • XC-16
  • MSP-GCC
  • AVR-GCC

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.

Open source

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.

Want to know more?

Get started with picoTCP and experience our stack firsthand. If you have more questions, send us a message.