Processor SDK RTOS Board Support

From Texas Instruments Wiki
Jump to: navigation, search


RTOS Software Developer Guide Board Support



Overview

User Interface

Application

Debug


Introduction

Board library contains a set of general initialization and setup functions that are board-specific. This component includes libraries for boards supported in the Processor SDK release. Refer to the package content for the list of supported boards.Board component also includes diagnostic software. Refer to Processor SDK RTOS DIAG for additional details on available diagnostic examples.

APIs

The Board_init() API supports initialization of PLL, peripheral clocks, external DDR memory, pinmux and IO Delay configurations. API Reference for application:

#include <ti/board/board.h>

Example API pseudo code for Board_init() is as follows:

/* Setting up for pinmux and uart */
Board_STATUS ret;
Board_initCfg boardCfg;
 
boardCfg = BOARD_INIT_MODULE_CLOCK | BOARD_INIT_PINMUX_CONFIG | BOARD_INIT_UART_STDIO;
 
ret = Board_init(boardCfg);

LLD Dependencies

I2C

Application need to configure BOARD_INIT_MODULE_CLOCK option to have I2C operational. I2C is used to read EEPROM data. An I2C handle will be opened in polling mode, and closed after the board ID data is retrieved from EEPROM using Board_getIDInfo() API.

UART

Application need to configure Board_init() with the BOARD_INIT_UART_STDIO option to use the UART stdio API.

After Board_init() completes, application can invoke UART stdio functions such as UART_printf, UART_scanFmt, and etc.

Application Integration for AM5x

When configuring pinmux with IO Delay settings for AM5x boards, there is a hard restriction: the code/data/stack during the IO Delay setup must be within local internal memory. Refer to SOC TRM for additional information.

The board library specifies two sections for users to define for the sole purpose of meeting this requirement. They are: BOARD_IO_DELAY_CODE and BOARD_IO_DELAY_DATA. Below are examples of how to specify these section into the local memory, OCMC_RAM1:

In baremetal case with a linker cmd file:

BOARD_IO_DELAY_CODE :
{
 . = ALIGN(4);
 *(BOARD_IO_DELAY_CODE*)
} > OCMC_RAM1
 
BOARD_IO_DELAY_DATA :
{
 . = ALIGN(4);
 *(BOARD_IO_DELAY_DATA*)
} > OCMC_RAM1

In a CCS RTSC project with .cfg file:

Program.sectMap["BOARD_IO_DELAY_DATA"] = "OCMC_RAM1";
Program.sectMap["BOARD_IO_DELAY_CODE"] = "OCMC_RAM1";

Custom Board Addition

Creating a custom board library has its merits whether you are creating it for custom silicon or for debugging/enhancements without losing your default board code. Below section include details needed for creation of additional board support.

Pinmux and IO Delay

When the BOARD_INIT_PINMUX_CONFIG option is specified, the Board_init() API configures the pinmux for the board. If applicable, it will also configure IO delay values for those device pads, which ensures correct IO timings are met along with the pinmux settings. Refer SOC TRM for additional details.

The pinmux data to be configured is generated by the TI pinmux tool. Refer to TI PinMux Tool for more information.

NOTE

Pinmux is needed for AM3/AM4/AM5/K2G devices. Pinmux is not needed for C66x or K2H/K2E/K2L devices, and the BOARD_INIT_PINMUX_CONFIG option is ignored when called in a C66x or K2H/K2E/K2L board library.

Custom Board Library

  1. Set up your build environment according to the Building the RTOS SDK page.
  2. Create your own folder under the src directory. The name of this folder will be your board name (will be referred to as $BOARD). Put your source files in this src/$BOARD folder. Updated sources can also include initialization sequence for additional devices specific to board.
  3. Pinmux Update (see above note for applicable devices):
    • Use the TI PinMux Tool to generate the new pinmux files. Refer the PinMux tool documentation on how to select pinmux for all the device pads and generate the pinmux data files.
    • The four generated files are:
      • boardPadDelay.h: Includes the prototypes of all structures and functions used by pinmux functions
      • boardPadDelayInit.c: Includes the pinmux pad config data for all device pads along with values used to compute Manual/Virtual mode values.This data is used to configure pinmux during board initialization.
      • boardPadDelayTune.h: This file includes the compile time macros used to select the Timing modes to be configured for modules during board Initialization.
      • boardPadDelayDevice.c: This file includes the pinmuxdata for runtime pinmux configuration of the MMC module.
    • Copy the four generated files to your custom board library implementation folder.
    • NoteNote: It is recommended to use the latest available PinMux Tool. For PinMux Tool prior to version v4.0.1482, you will have to edit boardPadDelayTune.h to select appropriate IO timing modes by uncommenting the build macros.
  4. Create build makefile infrastructure for new board under <ti/board/build>. Please refer existing board makefiles for reference.
  5. Update top level makefile <ti/board/makefile> for additional support of new boards.

Adding custom board to the PDK directory structure and build setup is described in the article Adding_Custom_Board_Library_Target_to_Processor_SDK_RTOS_makefiles

NOTE

TI evaluation platforms for Sitara Processors usually have board information stored in an EEPROM which checks for revision number and board name which is used to configure the board. When creating a custom platform if you don`t intend to use an EEPROM then we recommend removing code corresponding to Board_getIDInfo in your board library