NOTICE: The Processors Wiki will End-of-Life in December of 2020. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
A Platform Support Package, or PSP, is a software package that abstracts hardware functions on its target chip to provide developers high-level control of complicated tasks, such as peripheral I/O transactions. Each PSP services a single device, and the development tools of all recent DaVinci chips, such as DM644x and DM643x, include their own PSPs. This topic reviews the PSP philosophy, including its design goals and organization.
PSP on DSP/BIOS
This section focuses on PSP targeted at DSP-only devices, such as DM643x or DM648. The basic function of PSP on DSP/BIOS is to provide a complete set of IOM-compliant drivers to service all peripheral devices (I2C, UART, etc.) on the target DSP. The drivers are provided as libraries that can be linked in to a DSP/BIOS application. Header files to interface with these libraries, as well as the full source code required to rebuild them, is also provided. Recently, PSP drivers have been packaged using RTSC to speed integration. For more information on integrating and using PSP drivers, refer to Using a PSP Driver in DSP/BIOS.
Each PSP driver consists of multiple layers, as shown in Figure 1. The function of each layer is described in detail by the top-level PSP User's Guide, and is summarized here.
The device driver adaptation (DDA) layer serves as the driver's interface to the operating system (OS). It translates IOM calls to appropriate, lower-level (typically DDC) function calls. Its sole purpose is to abstract core driver functionality from the OS.
The device driver core (DDC) layer is the heart of the driver. It is abstracted from both the OS/application layer (by DDA) and the hardware layer (by LLC). This arrangement is intended to place only the core driver behavior in DDC, with device- and OS-specific interaction handled by calls to other layers. Thus, modifying the DDC layer should be the only necessary step to alter or enhance driver performance.
The low-level controller (LLC) layer consists of CSL code that interacts directly with the peripheral device. It has no direct contact with the OS and essentially services the DDC, allowing higher-level control in that layer. LLC is roughly analogous to the functional CSL (FCSL) modules available in older DSPs such as the DM642. However, LLC is not supported as a stand-alone product.
This layer is not formally included in all PSP drivers. Some drivers perform LLC functionality directly in the DDC layer. In this case, the DDC is not abstracted from the device, and modularity of the driver is reduced.
The Platform Abstraction Layer for OS services (PALOS) allows the DDC layer to use basic OS functions, such as semaphore transactions and interrupt masking. By using PALOS functions instead of directly calling DSP/BIOS modules, the DDC layer is abstracted from the OS.
PALOS is not implemented within an individual driver. Rather, it is a separate library (included with the PSP) that is commonly used by many drivers.