Last updated: 11 October 2014
Designed for Embedded Systems
High degree of portability
Small memory footprint with copy-free operation
Simple high level and BSD APIs
Choice of transport layers
Multi-threaded Web server with ASP and CGI facilities
HTTP firmware update capability using any browser
Client code to request firmware from a server
Multi-threaded FTP server - file transfer and remote update
Multi-threaded Telnet server - debug over the Internet
MODBUS TCP server and client framework
DHCP client for self-configuration
DNS client to convert domain names to IP addresses
SNTP client for clock setting and time synchronisation
TFTP client for remote upgrades
Unit configuration tools for EEPROM and Flash storage
Telnet to a single-chip microcontroller board
PowerNet, the MPE TCP/IP stack software, is a Forth implementation of the TCP, UDP and IP Internet Protocol layers. The IP network protocol is one of the best supported systems available today on both Local and Wide Area Networks. The UDP Protocol allows for simple transmission and reception of data packets, is small and fast, and is useful for simpler and higher bandwidth applications. The TCP protocol is the heart of the Internet and high level networking. Using PowerNet, your applications can talk to a local PC or to remote systems all over the world.
The PowerNet stack is being used in direct internet- facing devices which work in a hostile environment. One client reports that their devices on a direct intenet-facing feed (no firewall or other protection) were attacked within two minutes of first connection.
N.B. The combination of PowerNet, PowerView and PowerFile/FATfiler permits the construction of fully web-enabled controllers that have low memory requirements and low power consumption.
Applications using this stack include PABXs, ISDN routers, access control systems, vending machines, dataloggers and biometric scanners. PowerNet is regularly used with ARM, Coldfire and H8S CPUs.
You can download the user manual. This and the code manual are supplied with PowerNet.
PowerNet has also been ported to VFX Forth for Windows, Linux, OS X and DOS using the host operating system API, providing the same features with few source code changes. The hosted versions of PowerNet also extend the web server to support SOAP. See VFX Forth for more details. The Linux version is being used on low-cost devices that cannot support the usual Linux web server ecosystems.
No restrictions or hidden costs. Simply buy the software and use it. PowerNet is supplied with the Professional editions of cross compilers for 32-bit targets such as ARM and COldfire.
High degree of portability
The PowerNet code can be reconfigured for different CPU
targets via a simple set of definitions. The user simply needs to
supply the hardware drivers required.
The software is supplied with example drivers for both Ethernet and Serial interfaces. These drivers can form the template for any implementation.
Small memory footprint
Powernet uses a near copyless implementation for good performance and low memory footprint. A full build on an ARM including the Forth open interpreter/compiler, RTOS support, three serial drivers, Ethernet driver, UDP and TCP, and Echo, Telnet and HTTP (with ASP, CGI and ForthScript) servers requires 116kb of ROM. From version 4, RAM usage has been reduced so that a complete Forth system with Ethernet, Telnet and a web server requires less than 16kb of RAM.
Simple high level API
PowerNet can use console I/O words such as
EMIT to provide network communications. This
approach allows existing software to use TCP/IP networking
without modification. Most of the familiar BSD/Winsock
API and many other low-level functions are also provided.
Choice of transport layers
PowerNet can support either direct Ethernet hardware or SLIP (Serial Line IP). Its routing table and despatch mechanisms permit a PowerNet system to have several I/O ports of different types, including Ethernet and SLIP ports with IP forwarding.
The PowerNet multi-threaded HTTP implementation allows your embedded applications to serve Web pages. CGI and ASP facilities are provided, and the underlying Forth interpreter may be used (at your discretion) as part of the ForthScript system. Application hooks allow: pages to be stored in memory, DataFlash or in files; user defined authentication; user defined scripting.
The PowerNet multi-threaded FTP implementation allows your embedded applications to transfer files across the network or internet. In conjunction with an SD card for file storage, FTP permits easy transfer of logged data and enables remote software update systems. The FTP server assumes the use of the FATfiler file system code supplied with the MPE cross compilers. The FTP server works with standard FTP clients such as WS_FTP and FileZilla.
PowerNet multi-threaded Telnet implementation allows your embedded applications to be remotely managed across the network with a user-defined level of access to the embedded Forth interpreter. Hooks are provided for user-defined server announcement messages and login. Any standard Telnet client such as the Windows and Linux Telnet clients or HyperTerminal Personal Edition may be used.
Client-side code has not been neglected. Example files show you how to connect to a remote web server, transfer data to and from, and even to download and program a new firmware image. Example client configuration code shows you how to simplify production configuration.
PowerNet support for DHCP allows units to configure their own IP address from a local DHCP server such as the one in nearly all routers. A consequence is that IP addresses need not be configured during production and installation. For systems that do not have a DHCP server, it is possible to fall back to the APIPA (Automatic Private IP assignment) protocol used by Microsoft Windows.
The DNS client code allows you to use the familiar domain name text strings, e.g. www.mpeforth.com, and convert them to IP addresses.
s" www.mpeforth.com" dnsquery .ipv4 188.8.131.52 ok s" soton.mpeforth.com" dnsquery .ipv4 184.108.40.206 ok
With SNTP you can set the time of day clock from a remote site. If you need more precision, user-definable hooks allow you to perform clock synchronisation to the microsecond level.
PowerNet provides tools for storage of application data such as unit serial number and identifier in EEPROM or Flash. These tools can also be used for production configuration and system installation.
PowerNet support for ICMP protocol allows for quick and easy network testing via the industry standard PING program.
PowerNet support for the TFTP protocol allows your embedded applications to be remotely updated across a network or the Internet.
PowerNet consists of:
- Complete source for the stack
- Full source-code documentation and glossary
- Terminal emulator for Windows Operating systems
- Ethernet and SLIP drivers
- Demonstration code such as SMTP email
- Demonstration HTML and ASP pages
- Demonstration client examples
- Manuals describing the implementation, setup issues and the source code
PowerNet v5.0 introduced the FTP server and an enhanced version of the DNS client.
The PowerNet v4.9 introduced new flow control algorithms that make operation over both LAN and the internet smoother. RAM usage even came down a bit!
The PowerNet v4.8 release concentrated on reducing RAM requirements in single-chip embedded systems. In one client application v 4.8 saved nearly 9kb of RAM, permitting even more features to be crammed into a $7 chip! Other changes provide better response on wireless networks and more robust error recovery after the network drops connections or the Ethernet cable is disconnected.
PowerNet has facilities to permit software updates to be delivered by a web browser. The pages and forms can be user defined, and scripting and header parsing permit any level of security. A framework is provided for MODBUS TCP.
PowerNet v4.0 can be used for for devices connected directly to the internet with no additional firewalls or other protection. Despite the changes, the footprint change is only an increase of 400 bytes of code and four bytes of RAM.
PowerNet v4.0 introduced DHCP and SNTP, additional client-side code, production configuration tools, and reduced RAM usage. Use of UDP has been enhanced by the use of a user-extensible port chain.
PowerNet v3.0 was a major upgrade from earlier versions, and incorporated the improvements from six years of field experience, plus performance and code size improvements. In particular the multi-threaded server architecture in PowerNet v3.0 was completely new.