Interface DisplayLink silicon with 8051-based system
Implementation and debugging of some deeply embedded software development in pure C running on an 8051 CPU to interface with a DisplayLink device and a Davicom MAC/PHY. In an environment with extremely limited available non-volatile storage and RAM (stack, etc.) a driver for the MAC was required to extract DisplayLink protocol packets from IP and route into buffers within the DisplayLink chip.
The software needed to fit into a limited amount of flash memory (there was around 16KB for the code developed in this project, including memory required for a splash screen graphic) and the runtime environment had only 256 bytes of SRAM for storage of both stack and local variables.
Location: UK
Key Resources
Principal Software Engineer
Senior Software Engineer with extensive experience of high quality software engineering and a number of operating systems in both the desktop and embedded space, with particular emphasis on digital interactive television over IP networks and other display systems.
Key Skills
- Network protocols including IP, DHCP, ARP and ICMP (ping).
- DisplayLink protocol.
- Embedded development with just 256 bytes available for variables and stack. Only a few KB for the binary code. Toolchain that implemented a subset of the C language standard.
- SDCC (Small Device C Compiler), inline 8051 assembler macros to perform multibyte operations.
- No access to standard C library functions, e.g. printf().
- Extremely limited debugging options – a single GPIO line. Later evolved to debugging via deliberately malformed packets and traffic analysis tools (Wireshark) and sending debug information to the screen using extremely compact debug output routines.
- Splash screen image compression scheme based upon run-length encoding.
