Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

Migrating OMAP35x from BSP OMAP35x 6.xx to BSP ARM A8 1.00

From Texas Instruments Wiki
Jump to: navigation, search

Introduction

This topic is intended to document known changes between WinCE_BSP_OMAP35x 6.15.xx and WinCE_BSP_ARM_A8 1.00 for OMAP35xx. This information should help you to migrate your solution from one BSP to the other.

WinCE_BSP_ARM_A8 1.00: Unified BSP Architecture for OMAP35x/AM35x

Goal

Have a common code base for both processors and easily extend it to add new processors.

This code base for WinCE_BSP_ARM_A8 1.00 (the "unified BSP") is derived from WinCE_BSP_OMAP35x 6.xx (the OMAP3530 BSP created by BSquare for TI).

A word about the initial code base.

This project started with version 6.12 of the BSquare BSP and integrated later versions during the development. Latest version merged was 6.15.

Overview of the "new" architecture.

Code re-usability relies mostly on code separation. According to Microsoft rules of BSP coding (http://msdn.microsoft.com/en-us/library/aa908532.aspx), most of the code for a BSP based on TI processor is located under PLATFORM\COMMON\SRC\SOC\COMMON_TI_V1. This code produces libraries that are then linked with the rest of the code of the BSP that is located under PLATFORM\AM35x_BSP or PLATFORM\EVM_OMAP3530.

Original code has been split in multiple parts and moved in directories according to its purpose and its targeted hardware.

  • Code used for all TPS/TWL companion chips has been moved in COMMON_TI_V1\TRITON. It mostly consists in access functions.
  • Code used for TPS659XX companion chip is located under COMMON_TI_V1\TPS659XX
  • Code used for TPS65023 companion chip is located under COMMON_TI_V1\TPS65023
  • Code that can be re-used for multiples processors is under COMMON_TI_V1\COMMON_TI.
  • Code that is only for OMAP3530 is under COMMON_TI_V1\OMAP3530
  • Code that is only for AM3517 is under COMMON_TI_V1\AM3517
  • Code that do not directly address TI processors but can be used with the new common code base (for example the SMSC driver for EBOOT or the TCA6416 GPIO driver) is also located under COMMON_TI_V1\COMMON_TI

Header files

The header files for the OMAP3530 BSP have been moved in different directories and sometimes split into separate files. They were often named omap35xxx_YYYYYY.h. Depending of the content of the files, they’ve been renamed omap_YYYY.h or omap3530_YYYYY.h and placed in COMMON_TI_V1\COMMON_TI\INC or COMMON_TI_V1\OMAP3530\INC.

Header files defining register mapping and other controller related definitions have been renamed in omap_YYYY_regs.h and moved in COMMON_TI_V1\COMMON_TI\INC.

Note: The low level power management code, due to its complexity is not split but duplicated in each BSP. It also makes merging with BSquare code easier.

Libraries

The 6.15 common part generates libs, dlls and exe.

The common code of the unified BSP only generates libraries, never executables. The main reason is simply that this is the "standard" way of doing it.

Pros:

  • This is the expected way of doing it. (see other BSP or Microsoft common code)
  • It allows a BSP to select different implementation of the same feature (if many exist) when the executable is produced.
  • Part of the library can be skipped or overridden during the link of the executable.
  • It enforces code modularity and increases reusability.

Cons:

  • No BSP specific #define or #ifdef can be used. Code more difficult to write because of the need to define interfaces.
  • Increase link time for the BSP.

From Bsquare to unified BSP "How-to"

To migrate a driver YYY from Bsquare BSP to the unified BSP, we more or less applied the following method.

1) Have a global look at the driver to understand how it’s architecture.
2) Split, renamed move the header files in the correct folders. Omap_YYY_regs.h and Omap_YYY.h (if the driver exposes a custom API) in COMMON_TI_V1\COMMON_TI\INC, omap3530_yyy.h (if needed) in COMMON_TI_V1\OMAP3530\INC.
3) Move all the code into a new folder in the common part.
4) Now comes an iterative step
  • Fix errors of "header file not found".
  • Re-compile If the header split has been made properly. Compilation errors will be located where the code is not common. Move this code into a separate file located either under OMAP3530\YYYY or BSP\SRC\DRIVERS\YYY. Or modify the code to use the new APIs designed to reduce the amount of processor/BSP specific code (for example RequestDevicePads(…) Or EnableDeviceClocks(…)
  • Also fix warning due to WARNLEVEL=4 and CODE_ANALYSIS=1
5) Define the PAD configuration for YYY in the BSP(bsp_padcfg.h and bsp_padcfg.c)
6) Create the sources and makefiles for the code newly moved to BSP\SRC\DRIVERS\YYY and OMAP3530\YYYY.
7) Make OMAP3530\YYYY and BSP\SRC\DRIVERS\YYY compile and link.
8) Finally, create the registry file, the entry in platform.bib and the catalog item.

At this point the driver is ready for testing. Please note that this method do not induce functional change to the driver. Thus it’ll provide the same features as the original driver.

EVM_OMAP3530.bat Environment Variable to Catalog Entry Mapping

WinCE_BSP_OMAP35x 6.15.xx primarily uses EVM_OMAP3530.bat as the mechanism for selecting components for a build. In WinCE_BSP_ARM_A8 1.xx, we have changed this to use the more traditional Catalog Items method via Platform Builder.

The mapping is provided in the following table.

Environment Variable Availability in Unified BSP Usability
BSP_NAND_MT29F2G16 Removed - NAND Autodetection instead N/A
BSP_NAND_MT29F4G16 Removed - NAND Autodetection instead N/A
BSP_OPM_SELECT This variable is replaced by the following two varibles:

OMAP35xx Processor: BSP_OPM_SELECT_35XX

DM37xx Processor:BSP_OPM_SELECT_37XX

Set by default in EVM_OMAP3530.bat. Can be overriden.

BSP_SDRAM_BANK1_ENABLE Available Set by default in EVM_OMAP3530.bat. Can be overriden.
BSP_NOPMEXT Replaced by BSP_PMEXT Exposed as a catalog item
BSP_NOPMXPROXY Removed  
BSP_NODVFS Replaced by BSP_DVFS Exposed as a catalog item
BSP_NOCPUPOLICY Replaced by BSP_CPUPOLICY Exposed as a catalog item
BSP_NOINTRLAT Replaced by BSP_INTRLAT Exposed as a catalog item
BSP_NOSYSSTATEPOLICY Replaced by BSP_SYSSTATEPOLICY Exposed as a catalog item
BSP_NOSMARTREFLEXPOLICY Replaced by BSP_SMARTREFLEXPOLICY Exposed as a catalog item
BSP_EVM2 Available Set by default in EVM_OMAP3530.bat. Can be overriden.
BSP_EVM2_ENHANCED_IO Removed - Only EVM2 configuration is supported N/A
BSP_EVM2_RTS_CTS Removed - Only EVM2 configuration is supported N/A
BSP_EVM2_HSUSB_HOST Removed - Only EVM2 configuration is supported N/A
BSP_EVM2_VIDEO_CAPTURE Removed - Only EVM2 configuration is supported N/A
MMCHS1_LOW_VOLTAGE Available To be set manually
BSP_BATTERY_BQ27000 Available Exposed as a catalog item
BSP_SMSC911X Available Exposed as a catalog item
BSP_NOMADC Replaced by BSP_TPS659XX_MADC Exposed as a catalog item
BSP_NOHDQ Replaced by BSP_OMAP_HDQ Exposed as a catalog item
BSP_NOCAMERA Replaced by BSP_OMAP_CAMERA Exposed as a catalog item
BSP_NOD3DM Removed - Was no longer used in BSP 6.15 N/A
BSP_NOPCIBUS Removed - Was no longer used in BSP 6.15 N/A
BSP_NOUSBSER Removed - Was no longer used in BSP 6.15 N/A
BSP_NOIRDA Removed - Was not actually BSP specific Should be project specific
BSP_NOHEADSET Replaced by BSP_HEADSET Automatically set when selecting Audio driver from the catalog
BSP_WATCHDOG_ENABLE Replaced by BSP_OMAP_WATCHDOG Exposed as a catalog item
BSP_TVOUT_ENABLE Available To be set manually
BSP_TVOUT_COMPOSITE Available To be set manually
BSP_TVOUT_PAL Available To be set manually
BSP_NOVRFB Replaced by BSP_OMAP_VRFB Exposed as a catalog item
BSP_HSUSB1_SERIAL Removed - Only EVM2 configuration is supported N/A
BSP_HSUSB1_12PIN Removed - Only EVM2 configuration is supported N/A
BSP_NOUSBTLL1 Removed - Only EVM2 configuration is supported N/A
BSP_HSUSB2_SERIAL Removed - Only EVM2 configuration is supported N/A
BSP_HSUSB2_12PIN Removed - Only EVM2 configuration is supported N/A
BSP_NOUSBTLL2 Removed - Only EVM2 configuration is supported N/A
BSP_NOUSBOHCI Removed - Missing OHCI driver due to lack of hardware N/A
BSP_NOUSBEHCI Replaced by BSP_OMAP_USB_HOST Exposed as a catalog item
BSP_NOCOM Removed - UARTs must be explicitly selected N/A
BSP_NOCOM1 Replaced by BSP_OMAP_UART1 Exposed as a catalog item
BSP_NOCOM2 Replaced by BSP_OMAP_UART2 Exposed as a catalog item
BSP_NOCOM3 Replaced by BSP_OMAP_UART3 Exposed as a catalog item
BSP_NOCOM4 Replaced by BSP_OMAP_UART4 Available for DM37xx only
BSP_NOSPI2 Replaced by BSP_OMAP_MCSPI2 Exposed as a catalog item
BSP_NOSPI3 Replaced by BSP_OMAP_MCSPI3 Exposed as a catalog item
BSP_NOSPI4 Replaced by BSP_OMAP_MCSPI4 Exposed as a catalog item
BSP_NOSDHC1 Replaced by BSP_SDHC Exposed as a catalog item
BSP_SDHIGHSPEEDSUPPORT_SDHC1 Available To be set manually
BSP_NOSDHC2 Not available on 3530 EVM2 N/A
BSP_SDHIGHSPEEDSUPPORT_SDHC2 Available To be set manually
BSP_NOSPI1 Replaced by BSP_OMAP_MCSPI1 Exposed as a catalog item
BSP_NONAND Replaced by BSP_OMAP_NAND Exposed as a catalog item
BSP_NONLED Replaced by BSP_OMAP_NLED Exposed as a catalog item
BSP_NODMA Replaced by BSP_OMAP_SDMA Exposed as a catalog item
BSP_NOGPIO Replaced by BSP_OMAP_GPIO Exposed as a catalog item
BSP_NOTLED Replaced by BSP_TPS659XX_LED Exposed as a catalog item
BSP_NOSPI Removed - SPI channels must be explicitly selected N/A
BSP_NOTWL Replaced by BSP_TPS659XX Exposed as a catalog item
BSP_NORTC Replaced by BSP_TPS659XX_RTC Exposed as a catalog item
BSP_NOMCBSP Removed -McBSP channels must be explicitly selected N/A
BSP_NOBACKLIGHT Replaced by BSP_BACKLIGHT Exposed as a catalog item
BSP_NOTOUCH Replaced by BSP_TSC2046_TOUCH Exposed as a catalog item
BSP_NOKEYBD Replaced by BSP_TPS659XX_KEYPAD Exposed as a catalog item
BSP_NOAUDIO Replaced by BSP_TPS659XX_WAVE Exposed as a catalog item
BSP_NOSDHC Removed - SDHC must be explicitly selected N/A
BSP_NODISPLAY Replaced by BSP_OMAP_DSS Exposed as a catalog item
BSP_NOPWRKEY Replaced by BSP_TPS659XX_PWRKEY Exposed as a catalog item
BSP_NOBATTERY Removed - Battery must be explicitly selected Exposed as a catalog item
BSP_NOUSB Removed - USB must be explicitly selected N/A
BSP_USBOTG Replaced by BSP_OMAP_MUSBOTG Exposed as a catalog item
BSP_NOUSBHSOTG Replaced by BSP_OMAP_MUSBOTG Exposed as a catalog item
BSP_NOUSBHSFN Replaced by BSP_OMAP_MUSBFN Exposed as a catalog item
BSP_NOUSBHSHCD Replaced by BSP_OMAP_MUSBHCD Exposed as a catalog item
BSP_USBHSOTG_ISP1504 Replaced by BSP_OMAP_MUSBOTG_ISP1504 Exposed as a catalog item
BSP_USBHSOTG_TPS659XX Replaced by BSP_OMAP_MUSBOTG_TPS659XX Exposed as a catalog item
BSP_NO_BSPINFO Available To be set manually
BSP_FLASH_PLAYER Available To be set manually
BSP_BSQUARE_FLASH_DEMO Removed N/A
BSP_TI_DVSDK Available To be set manually
BSP_DSPLINK Available Automatically selected when selecting a codec in the catalog
BSP_CMEM Available Automatically selected when selecting a codec in the catalog
BSP_DSHOWFILTER Available Automatically selected when selecting a codec in the catalog
BSP_SDMAPROXY Available Automatically selected when selecting a codec in the catalog
BSP_H264_DECODE_FILTER Available Exposed as a catalog item
BSP_MPEG4_DECODE_FILTER Available Exposed as a catalog item
BSP_MPEG2_DECODE_FILTER Available Exposed as a catalog item
BSP_AAC_DECODE_FILTER Available Exposed as a catalog item
BSP_MP3_DECODE_FILTER Available Exposed as a catalog item
BSP_3GPP_DEMUX Available Exposed as a catalog item
BSP_AAC_PARSER Available Exposed as a catalog item
BSP_DMAI_SAMPLE_APPLICATIONS Available Exposed as a catalog item
BSP_NOSHAREETH Removed - Was no longer used in BSP 6.15 N/A
BSP_SIMPLE_BENCHMARK Available Exposed as a catalog item
BSP_SHELL_EXTENSIONS_DO_CMD Available Exposed as a catalog item
BSP_EXPANSION_MAGNUM Removed - Missing support due to lack of hardware N/A
IMGNODFLTDDK Available Set by default in EVM_OMAP3530.bat. Can be overriden.