SYS/BIOS is very modular with functional blocks managed by different modules. Modules are implemented as a collection of C functions. Individual C functions are only linked in if the application being worked on actually uses the code. This helps keep the application footprint down. At the bottom of the stack, low-level services are provided like memory management and debug logging. The Gate module provides mutexes to manage critical sections and share data between threads or threads and ISRs. The startup module is used to help manage system booting and provides hooks for setting up PLL, external memory interface, and the like. Texas Instruments also provides a set of hardware abstraction modules that help keep BIOS portable from one device to another. Features like cache support (not needed for Concerto), as well as portable interrupt disable/restore APIs and timestamp services are provided. For Concerto, the timestamp module will leverage the common counter available to both the -M3 and the 28x. The Log module includes timestamp data in the log record. This will allow correlation of data between the cores as necessary. At the core of BIOS is the kernel support. Traditional multi-tasking with the Task module as well as intertask synchronization with Semaphores, Events (allows a task to wait on multiple events) and Mailboxes are supported. A module named SWI which is short for “software interrupt”, SWIs can be posted by ISRs and provide an intermediate priority between standard interrupts and background Tasks. SWIs allow the user to defer less time critical work to a slightly lower priority that will be handled before they return to task level. Optional add-on support for multi-core, TCP/IP and FAT file system support are provided.

