TCP/IP Network Library
The CrossWorks TCP/IP Network Library enables your embedded device to communicate over IP networks.
Today, embedded applications are becoming highly complex, with many requirements such as GUI and network connectivity. With the advance of the Internet of Things (IoT), we decided to develop and release a networking library to make it much easier for customers to get their devices onto the Internet.
The Networking Library integrates seamlessly with other CrossWorks Technology Libraries, from the Mass Storage Library as a place to store content for the HTTP server, to the Device Library to provide SPI/DMA support for external MACs. These services combine with a unified stream system in the Tools Library.
Many silicon vendors have taken steps to add MACs, and sometimes also PHYs, onto their devices. We have supported all major Cortex-M devices that have embedded Ethernet MACs and integrated that into popular CrossWorks Board Support Packages.
Many devices from different silicon vendors use the same IP: the DesignWare MACs from Synopsis. Drivers for Synopsis MACs are provided, and used, within the CrossWorks TCP/IP library. So, even if your device doesn't have a specific CrossWorks Board Support Package, it's usually very simple to use what's already provided to get you onto the network!
If your chosen device doesn't have an Ethernet MAC, you're still able to get it connected to the Internet by choosing an SPI-connected MAC and PHY such as the Microchip ENC28J60. We've done the work necessary to support this already, and what's more, you'll find many CrossWorks Board Support Packages offer the possibility of networking using an ENC28J60.
The Network Library provides support for many core protocols, such as DHCP, DNS, ARP, that are essential for basic operation of a network device. For additional application-level protocols, both proprietary and open, you simply build what's required on top of the TCP and UDP functions in the library.
We will consider supporting standardized protocols when it makes sense for us to do so. There is a distinction between protocols that are compact, well-defined, and require very little in the way of application-level support (such as DNS) and ones that have diverse requirements that simply cannot be easily encapsulated into an API (such as an HTTP server) where each customer and application will have many different requirements.
Rather than provide a restrictive, incomplete, inflexible API for protocols with wide implementation variance, we provide examples in source code you can try out, adapt, and deploy!
We have ported the TCP/IP Library to a number of evaluation boards with our Board Support Packages. You'll find a list of read-to-run target boards if you open the Package Used By fold in the Package Details panel here.
There are, however, some limits imposed by the evaluation package:
- At most three TCP connections open at the same time
- The target is assigned a fixed Ethernet MAC address
- The network name of the target is fixed to crossworks
- A sign-on message is written to the Debug Terminal indicating that the library is for evaluation only.
Because the MAC address and network name are fixed, your are limited to a single instance of the TCP/IP stack on your network. We feel that these restrictions give you enough functionality to evaluate our offering. Indeed, you can compile and run the real-world network-enabled CoreBASIC interpreter on targets that have enough memory to run this rather substantial application. However, if you feel that you require a more in-depth evaluation of our product, please contact us to discuss how we can help you with this.
Source code option
We understand the some customers need to account for what goes into their devices and others may simply want the security of having source code to look at and trace through. If you are uncomfortable relying on a set of object code libraries, you can purchase a license to the CrossWorks TCP/IP source code.