Introduction

Who Should Read the Barracuda Documentation

This documentation covers everything you need to know about the Barracuda Web Server (BWS) and the Barracuda Application Server (BAS), from the low level C/C++ API to the high level Lua Scripting Language API.

The Barracuda Application Server includes the following:

  1. The Barracuda Web Server SDK includes the CSP (C/C++ Server Pages) plugin and the CSP compiler/linker. All other components are optional.
  2. The LSP plugin includes Lua bindings for the SQLite database. A pre-compiled SQLite library/DLL is delivered for host platforms. A pre-compiled SQLite library is also delivered for some embedded platforms.

For an embedded system with limited memory, you may select to only use the Web Server and the C and/or C++ API. Many of the examples in this documentation focus on the Lua API's and not the C API's since the Lua API's are much easier to understand. Even if you choose not to use the LSP plugin, it is still recommended to read the introductory Lua examples for a good introduction to the Virtual File System (VFS).

Typical Uses of the Barracuda Server

The Barracuda Web Server is an embeddable web server component specifically designed for being embedded into another computer program. The server, designed in ANSI C, is a library designed to be linked into and be an integral component of the computer program being designed.

Typical uses of the Barracuda App/Web Server include:

Barracuda as a Standalone Web Server

A traditional web server runs as a standalone process and requires that the operating system supports the "process" model. The Barracuda App/Web Server can be assembled with a few lines of C code to run as a standalone web-server, though Barracuda's strength is that it can also be embedded into a computer program.

An example of a standalone web-server designed using the Barracuda App Server is the Mako Server.

Barracuda in Monolithic Embedded Systems

A monolithic embedded system, aka firmware, is software designed for an embedded device in which the operating system, the application, and third party libraries are linked into one unit.

The Barracuda App/Web Server is specifically designed for being embedded into firmware. The server abstracts TCP/IP, kernel primitives, and I/O access, thus making sure it can easily port to any embedded systems.

In contrast, a traditional web server is not easily integrated into a monolithic system since it is designed to run in a standalone process, and it cannot be extended in the traditional way. Typically, a web server is extended by use of external processes such as CGI, which cannot be accomplished if the kernel , "the operating system", is not designed to load external modules.

Porting Barracuda to an Embedded System

Supported environments (pre-ported):
The Server has been ported to many embedded operating systems including: ThreadX/NetX (Express Logic), INTEGRITY (Green Hills), VxWorks (WindRiver), RTXC Quadros (Quadros Systems), QNX (QNX Software Systems), Embedded Linux, Windows CE, embOS (SEGGER), SMX (Micro Digital), MQX (Freescale), and FreeRTOS/LwIP(Netconn) to name a few.

Porting:
The Barracuda App/Web Server can easily be ported to any embedded device. At a minimum, the device must have a functioning TCP/IP stack. It is possible to use the server without an operating system, but not recommended. A file system is not mandatory, but a file system enhances the server's functionality. The server includes a plugin that uses ZIP files as read only file systems. A ZIP file can be integrated into the firmware or stored directly onto flash memory in devices without a file system.

Memory:

CPU:
The Barracuda App/Web Server runs on several microprocessors including, but not limited to: the X86 family, the PowerPC family, the ColdFire family, MIPS, and the ARM family. The server is designed to run on 32 and 64 bit microprocessors and is not suitable for 8 or 16 bit microprocessors.