Theory of Operation
From Ubicom Developer
Contents |
Introduction
Ubicom32 processors are based on Ubicom32 Architecture, which is not related to MIPS, ARM or x686. Linux running on this unique architechture has some novel concepts, and they are explained below.
- Boot Process and Ultra - How does boot happen.
- Live System - Hardware threads in a live system.
Boot Process
The Ubicom architecture is an extremely fast multi-threaded 32-bit architecture with an amazingly flexible Input Output (IO) subsystem. The same processor can be used in a variety of different applications. This flexibility however, comes at a cost of needing to configuring the processor as part of the boot process. This document provides an overview of that process.
The processor is designed to fetch its very first instruction from an external flash controller at address XXXXX. Typically the software lying at that address is designed to expand an image into memory and transfer execution to it. This software is called Ultra. Ultra is highly configurable and enables developers to choose various combination of ports, interrupts, timers, memory, and hardware threads needed for a particular application. Ubicom provides full source code for Ultra, along with a rich set of tools for configuring the various IO aspects of the processor.
The flexible IO means that portions of the processor (some interrupts, some on-chip memory, some hardware threads) will be dedicated to performing IO functions. Different configurations of Ultra result in different amounts of processor resources being dedicated to these functions.
Please note that, unlike on other processors which have a dedicated and fixed IO subsystem, Ultra continues to run while the primary OS runs because of software supervision that it provides for the IOs threads.
Live System
Hardware threads in a typical live system running Linux with SMP support are illustrated below.
- Linux - Hardware thread running Linux operating system. With SMP enabled, multiple hardware threads are used as if linux were running with CPU's with multiple cores.
- Ultra - Ultra is the software that does both bootloader job and also runs along with Linux to service programmable IO on Ubicom32 chips.
- DSR - Device service routine passes interrupts between Threaded IOs (or Hardware Realtime Threads) and Ultra. Please look at the drivers application note and other documentation for more information.
- LDSR - Interrupts in the Ubicom32 architecture awaken threads, and they are different from traditional interrupts. The LDSR thread does the job of Interrupt service routines in a traditional processor, and provides ISR (Interrupt Service Routine) functionality to Linux threads.
- TIO - Threaded IO threads are Hardware Realtime Threads used to manage programmable IO. Typical TIOs are Ethernet TIO, PCI TIO, and VDC TIO.


