MCUSW
Fls User Guide

Introduction

This document details AUTOSAR BSW Flash module implementation

  • Supported AUTOSAR Release : 4.3.1
  • Supported Configuration Variants : Pre-Compile
  • Vendor ID : FLS_VENDOR_ID (44)
  • Module ID : FLS_MODULE_ID (92)

The Flash Driver provides services for reading, writing, erasing flash memory and Execute-in-Place (XIP) mode for external Flash Device.
The driver supports the following devices:

Device Flash Protocol Boards supported
MT35XU512ABA1G12 OSPI J721E
S28HS512T XSPI J721S2, J7200, J784S4, AM62X_SK, AM62PX, J722S
MT25QU512ABB QSPI J721S2

The main tasks of the FLS driver are:

  • Perform storage mode applications:
    • Read from flash.
    • Write to flash.
    • Erase Flash.
    • Compare and Blank Check flash memory location.

Fls Driver Architecture/Design

Please refer the Flash design, which is included as part of CSP.


Functional Description

The Fls Module uses internal OSPI peripheral as the serial bus to transfer data to and from the attached flash device.

Programming of clock source for the flash, is beyond the scope of this document. The Clock programming is taken care by the test application.

1 Fls instance is supported by this driver implementation.

Back To Top


Configuration

The Fls Driver implementation supports multiple configuration variants (refer section Introduction), the driver expects generated Fls_Cfg.h to be present as (Configuration Folder Structure). Please refer (Build) to specify path to generated configuration. The associated Fls configuration generated files Fls_Cfg.c, and Fls_PBcfg.c to be present as shown (Configuration Folder Structure)

The following section details on the unsupported features and additional features added.


Variance / Deviation from the specification


FlsDacEnable

This parameter is the switch between Direct Access Mode (DAC) and Indirect Access Mode (INDAC) used by the OSPI module to communicate with the Flash Device. The Flash will be memory mapped when running in DAC mode, and execution in place will happen directly from flash memory. In INDAC mode, data transfer between system memory and external flash occurs through the internal SRAM.


FlsXipEnable

This parameter is the switch to turn on or off XIP mode. Only XIP Read mode is supported in current driver. XIP mode will only be functional in DAC mode of operation.


FlsOspiClkSpeed

This parameter defines the Clock Speed for the OSPI peripheral. The supported clock speeds are as follows:

  1. 133Mhz (133333333U) - This Clock freq works with all modes of the Flash Driver.
  2. 166Mhz (166666666U) - This Clock freq is fully supported in INDAC mode of operations. In DAC mode, only read operation is supported.

FlsDtrEnable

This parameter is the switch between Double Transfer Rate (DTR) and Single Transfer Rate (STR) for OSPI Flash.


FlsPhyEnable

This parameter is the switch to turn on and off PHY mode.


Features that are not supported:

Following features outlined in Specification are not supported:

  1. Fast vs Normal Mode - devices only has one mode of execution for OSPI Flash. Only normal mode is supported. Relevant features not implemented include:
    1. FlsSetModeAPI
    2. FlsDefaultMode
    3. FlsMaxReadFastMode
    4. FlsMaxWriteFastMode
  2. Access Code Placement - Write and Erase in XIP mode is not supported. Only Read in XIP implemented. Relevant features not implemented include:
    1. FlsAcLoadOnJobStart
    2. FlsAcErase
    3. FlsAcWrite
  3. Timeout Supervision - Relevant features not implemented include:
    1. FlsTimeoutSupervision
    2. FlsCallCycle
  4. FlsSector - Internal Flash Device Info structure used instead of FlsSector
    1. Fls_NorOspiInfo structure is used by driver for flash device information.
  5. DET RunTime Error is not supported. DET Dev Errors and DET Transient Faults are supported.

Back To Top



Non Standard Service APIs


Ospi_RegisterReadback

As noted from the previous MCAL implementation, some of the critical configuration registers could potentially be corrupted by other entities (s/w or h/w). One of the recommended detection methods would be to periodically read-back the configuration and confirm configuration is consistent. The service API defined below shall be implemented to enable this detection

Description Comments
Service Name Ospi_RegisterReadback Can potentially be turned OFF (Refer to Design Document provided in CSP)
Syntax Ospi_RegisterReadback( P2VAR(CSL_ospi_flash_cfgRegs, AUTOMATIC, SPI_APPL_DATA) RegRbPtr) E_OK: Register read back has been done, E_NOT_OK: Register read back failed
Service ID NA
Sync / Async Sync
Reentrancy Reentrant
Parameter in None
Parameters out RegRbPtr Pointer to where to store the readback values. If this pointer is NULL_PTR, then the API will return E_NOT_OK.
Return Value Std_ReturnType E_OK, E_NOT_OK

Fls_dataOverflowUnderflowIntrEnable

This API Enable Under/Overflow Interrupts of the hardware unit and returns the status.

Description Comments
Service Name Fls_dataOverflowUnderflowIntrEnable Fls_dataOverflowUnderflowIntrEnable Enable Under/Overflow Interrupts of the hardware unit
Syntax Fls_dataOverflowUnderflowIntrEnable(uint32 intrFlag)
Service ID NA
Sync / Async Sync
Reentrancy Reentrant
Parameter in intrFlag Interrupt Enable flag for Underflow=2U Interrupt Enable flag for Overflow=128U
Parameters out NA
Return Value Std_ReturnType E_OK: Interrupt Enabled E_NOT_OK: Interrupt Enable failed

Fls_dataOverflowUnderflowIntrDisable

This API Disable Under/Overflow Interrupts of the hardware unit and returns the status.

Description Comments
Service Name Fls_dataOverflowUnderflowIntrDisable Spi_dataOverflowUnderflowIntrDisable Disable Under/Overflow Interrupts of the hardware unit and returns the status.
Syntax Fls_dataOverflowUnderflowIntrDisable(uint32 intrFlag)
Service ID NA
Sync / Async Sync
Reentrancy Reentrant
Parameter in intrFlag Interrupt Disable flag for Underflow=2U Interrupt Disable flag for Overflow=128U
Parameters out NA
Return Value Std_ReturnType E_OK: Interrupt Disabled E_NOT_OK: Interrupt Disabled failed

Fls_dataOverflowUnderflowIntrGetStatus

This API gets status of Under/Overflow Interrupts of the hardware unit and returns the status.

Description Comments
Service Name Fls_dataOverflowUnderflowIntrGetStatus Fls_dataOverflowUnderflowIntrGetStatus gets status of Under/Overflow Interrupts of the hardware unit
Syntax Fls_dataOverflowUnderflowIntrGetStatus(uint32 intFlags)
Service ID NA
Sync / Async Sync
Reentrancy Reentrant
Parameter in intrFlag Interrupt Enable flag
Parameters out NA
Return Value ospiIrqstatus OSPI_NO_EVENT: No underflow event OSPI_EVENT_PENDING: Underflow Event OSPI_STATUS_READ_FAIL: Status read fail

Fls_dataOverflowUnderflowIntrStatusClear

This API clear Under/Overflow Interrupts of the hardware unit and returns the status.

Description Comments
Service Name Fls_dataOverflowUnderflowIntrStatusClear Fls_dataOverflowUnderflowIntrStatusClear clear Under/Overflow Interrupts of the hardware unit and returns the status.
Syntax Fls_dataOverflowUnderflowIntrStatusClear(uint32 intrFlag)
Service ID NA
Sync / Async Sync
Reentrancy Reentrant
Parameter in intrFlag Interrupt Enable flag for Underflow=2U Interrupt Enable flag for Overflow=128U
Parameters out NA
Return Value Std_ReturnType E_OK: Interrupt status clears E_NOT_OK: Interrupt status clear failed

Back To Top


Constraints

The driver can have unexpected behavior and loss of functionality if unsupported values are passed into configurator or unsupported combinations are used. Below is a list of such constraints.

  • Configurator Input Values Constraints:
    1. maxReadNormalMode and maxWriteNormalMode values should be aligned with (multiples of) the Flash device page size.
    2. sectorList structure should not be changed, as that is specific to Flash Device.
    3. ospiClkSpeed should be either 133333333U or 166666666U.
    4. FlsDeviceType should be either FLS_NOR or FLS_NAND based on flash device type.
    5. FlsProtocolMode should be either FLS_OSPI, FLS_XSPI, or FLS_QSPI based on supported flash protocol mode.
  • Feature Combination Constraints:
    1. When using Interrupt mode, dacEnable should be set to FALSE. Interrupt mode is only available when using INDAC mode.
    2. When using Interrupt mode, maxWriteNormalMode value has to be equal to page size of flash device. Please see Fls_Cfg.c sample configuration file in the examples/Fls/fls_app_intr.
    3. If operating in XIP mode, dacEnable has to be enabled, and Interrupt mode has to be set to STD_OFF.
    4. In Interrupt mode, BlankCheck API and Compare API are not supported and should be disabled.
    5. For XSPI supported devices, write and erase is not functional in DAC mode. Only Read is possible in DAC mode. Please use INDAC mode for writing and erasing flash.
    6. QSPI protocol on J721S2 does not currently support PHY Tune and DDR/DTR.

Back To Top


Interrupt Configuration

The Driver does not register any interrupt service routine(ISR), it’s expected that consumer of this driver registers the required interrupt handler.

The interrupt number associated with instance of the Fls is detailed in TRM. Please refer FlsApp_InterruptConfig() in fls_app_intr test application for reference.

Please note that interrupt implementation is only available when running with INDAC mode. BlankCheck and Compare APIs are not supported with interrupt mode.

Back To Top


Power-up

The driver doesn't configure the functional clock and power for the Fls modules. It's expected that secondary boot loader(SBL) power-up the required modules. Please refer SBL documentation.

Back To Top


PHY Tune Module Algorithm

There PHY algorthm used in J7200, J721E, J721S2, and J784S4 are based on calibration algorithm. AM62AX, AM62X, AM62PX, J722S, and QSPI device on J721S2 do not have PHY tune as of now.

The Phy tune data vector must first be flashed into the last sector of flash memory, and then during first read operation, Phy tune will be calibrated.

The example application can be used as reference for this.

Some restrictions that Fls driver has right now with respect to the SoC:

  1. Phy Tune should only be enabled for DAC mode.
  2. The algorithm vector should be flashed to last sector in memery.
  3. For J721E, the algorithm vector can be written using DAC or INDAC mode.
  4. For XSPI device on J7200, J721S2, J784S4, the algorithm vector can only be written using INDAC mode, as write/erase is not functional on these boards in INDAC mode in this release.

Note:PHY Algorithm not validated on SMPU

Back To Top


Driver Adaption for new flash protocol and new flash device

Current FLS driver uses OSPI, XSPI, and QSPI protocol modes and supports the three NOR Flash devices for all devices (MT35XU512ABA1G12, S28HS512T, and MT25QU512ABB).

If variation to the supported features are needed, user will need to take care to modify the driver to accommodate changes.

  1. Configuring other flash protocols
    • All protocols should be able to use existent OSPI files: Fls_Ospi.c and Fls_Ospi.h.
    • The board config files (Fls_Brd_Nor.c) will need slight modification to ensure that Flash Device is configured correctly when using other protocols.
    • Then Fls_Brd_Nor_<new protocol>.c file need to be added to support functions specific to that new flash protocol.
  2. Integrating new Flash Device
    • Configure plugin with required flash memory configuration for new flash device such as device name, device type, protocol mode. This can be done based on the flash device specification.
    • Each flash device will need to have its own header file which defines device specific commands. If a new Flash device is integrated, such a header file will need to be created and included by the driver files. Examples of such header files are Fls_NOR_m35xu512.h, Fls_NOR_s28hs512t.h, and Fls_NOR_mt25qu512abb.h.
    • Next, the board configuration files (Fls_Brd_Nor.c, etc.) will need to be modified to work with the new flash device. The APIs in the board configuration files are used to set the flash device settings. They should be carefully modified to ensure that correct commands are being written on the flash device. This can be done based on the flash device specification.
  • Note: Writing incorrect commands can break the flash device and make is obsolete. Proper care should be taken to ensure integration had been done correctly. ]
  • Note: Please note that the PHY Tune algorithm is not expected to work with other flash devices.

Back To Top


QSPI device support on J721S2

J721S2 support both XSPI flash device (s28hs512t) and QSPI flash device (mt25qu512abb). The build command "FLS_PROTOCOL=qspi" and "FLS_PROTOCOL=ospi" is used to differentiate between using XSPI vs QSPI flash device. example/Fls/QSPI_Cfg has QSPI configuration files. Currently only one flash device can be used at a time on J721S2.

Refer to Build and Running the Application for QSPI build instructions.
Refer to Configuration Folder Structure for QSPI configuration folder

Back To Top


Build and Running the Application

Please follow steps detailed in section (Build) to build library or example. Please note that OSPI Boot mode is not applicable for Fls module.

QSPI build instructions:

  • J721S2 supports both XSPI and QSPI flash. The build parameter "FLS_PROTOCOL", which has 2 values: ospi and qspi, is used to specify which protocol to build on J721S2. It is defaulted to "ospi" mode if "FLS_PROTOCOL is not specified. For none J721S2 devices, please ignore FLS_PROTOCOL parameter.
  • Examples:
    • make -s fls_app_dac fls_app_indac BOARD=j721s2_evm SOC=j721s2 will build fls_app_dac and fls_app_indac applications on OSPI0 interface, which builds Fls_Brd_Nor_Xspi.c and uses XSPI device, S28HS512T. Since "FLS_PROTOCOL" parameter is not mentioned in the build command, "ospi" mode is used by default.
    • make -s fls_app_dac fls_app_indac BOARD=j721s2_evm SOC=j721s2 FLS_PROTOCOL=qspi will build fls_app_dac and fls_app_indac applications on OSPI1 interface, which builds Fls_Brd_Nor_Qspi.c and uses the QSPI flash device, MT25QU512ABB.
    • If "FLS_PROTOCOL=qspi" is used on non J721S2 devices, then ospi will be used since qspi is only supported on j721s2.

The below Fls Test Applications are available:

  1. fls_app_dac - Test Application to demo DAC storage mode
  2. fls_app_indac - Test Application to demo INDAC storage mode and general flash usage
  3. fls_app_intr - Testing interrupt mode. Requires clean flash build since different interrupt fls_cfg.h needs to be included. Clean build required even if's the same fls protocol

Please refer to Configuration Folder Structure on which of the three configuration folders each Fls Test Apllication uses.

Note: Please do a clean build (make -s allclean) when a different configuration folder is used. Each configuration folder header files have different define values.

Back To Top


Steps to run example application

Please follow steps detailed in section (Build) to build example

Poll Mode - Storage Mode

Test Applications fls_app_dac and fls_app_indac will run as packaged, just build and the executable will be generated.

Interrupt Mode - Storage Mode

Build fls_app_intr and run. Uses different configuration files than Poll Mode, so please build this application on a clean build.

Back To Top


Dependencies on SW Modules


DET

This implementation depends on the DET in order to report development errors and can be turned OFF. Refer section (Development Error Reporting) for detailed error codes.

Back To Top


SchM

This implementation requires one level of exclusive access to guard critical sections. Invokes SchM_Enter_Fls_FLS_EXCLUSIVE_AREA_0 (), SchM_Exit_Fls_FLS_EXCLUSIVE_AREA_0 () to enter critical section and exit.

In the example implementation (Driver File Structure SchM_Fls.c) , all the interrupts on CPU are disabled. However, disabling of the enabled Fls interrupt should suffice.

Back To Top


MemIf

This implementation depends on MemIf module and uses its imported types such as MemIf_JobResultType, MemIf_ModeType and MemIf_StatusType.

Back To Top


Fee

This implementation depends on Fee module for callback notification to notify the module environment about job end and job error.

Back To Top


Driver File Structure

  1. Driver implemented by : Fls.h, Fls_Irq.h, Fls.c, Fls_Brd_Nor_Ospi.c, Fls_Brd_Nor_Xspi.c, Fls_Brd_Nor_Qspi.c, Fls_Irq.c, Fls_Ospi.c, Fls_Ospi.h, Fls_Brd_Nor.c, and Fls_Brd_Nor.h
  2. Flash Devices by : Fls_NOR_m35xu512.h, Fls_NOR_mt25qu512abb.h, and Fls_NOR_s28hs512t.h
  3. Example Application by : FlsApp_Startup.h, FlsApp_Startup.c and FlsApp.c
  4. Phy tune algorithm files: nor_spi_patterns.c, nor_spi_patterns.h, nor_spi_phy_tune.c and nor_spi_phy_tune.h

Back To Top


Configuration Folder Structure

  • There are 3 configuration folders: examples_config/Fls_Demo_Cfg, examples/Fls/QSPI_Cfg, and examples/Fls/fls_app_intr
  • Note: Please do a clean build (make -s allclean) when a different configuration folder is used. Each configuration folder header files have different define values.
    • For example, if fls_app_indac (uses examples_config/Fls_Demo_Cfg) is built, please do a clean build when fls_app_intr (uses examples/Fls/fls_app_intr) is needed.
  • Example Configuration by : Fls_Cfg.h, Fls_Cfg.c, Fls_Cfg_dac.c, Fls_Cfg_indac.c and Fls_PBcfg.c

Fls configuration files in examples_config/Fls_Demo_Cfg folder

  • Used by OSPI0 interface (OSPI/XSPI flash device) build in fls_app_dac and fls_app_indac applications.
  • make -s fls_app_dac fls_app_indac BOARD=... SOC=... will use configuration files in this folder. Since FLS_PROTOCOL is defaulted to ospi, it's optional to specify "FLS_PROTOCOL=ospi".

QSPI Fls configuration in examples/Fls/QSPI_Cfg folder

  • Used by OSPI1 interface (QSPI flash device) build (FLS_PROTOCOL=qspi) in fls_app_dac and fls_app_indac applications.
  • Only used on J721S2 since QSPI flash protocol is only supported on J721S2.
  • make -s fls_app_dac fls_app_indac BOARD=j721s2_evm SOC=j721s2 FLS_PROTOCOL=qspi will use configuration files in this folder. Must specify "FLS_PROTOCOL=qspi".

OSPI and QSPI interrupt configuration in examples/Fls/fls_app_intr folder

  • Used by OSPI0 interface and OSPI1 interface in fls_app_intr application, respectively.
  • make -s fls_app_intr BOARD=j721s2_evm SOC=j721s2 FLS_PROTOCOL=qspi and make -s fls_app_intr BOARD=... SOC=... will use configuration files in this folder.

Back To Top


Error Handling


Development Error Reporting

Development errors are reported to the DET using the service Det_ReportError(), when enabled. The driver interface (Fls.h) lists the SID.

Back To Top


Error codes

Type of Error Related Error code Value (Hex)
API service called with wrong parameter FLS_E_PARAM_CONFIG 0x01
API service called with wrong parameter FLS_E_PARAM_ADDRESS 0x02
API service called with wrong parameter FLS_E_PARAM_LENGTH 0x03
API service called with wrong parameter FLS_E_PARAM_DATA 0x04
API service used without module initialization FLS_E_UNINIT 0x05
API called when module is busy FLS_E_BUSY 0x06
API called with a Null Pointer FLS_E_PARAM_POINTER 0x0A

Back To Top


Transient Faults Reporting

Transient errors are reported to the DET using the service Det_reportDetTransientFault(). The driver interface (Fls.h) lists the SID.

Back To Top


Fault codes

Type of Error Related Error code Value (Hex)
Flash Erase Failed in HW FLS_E_ERASE_FAILED 0x01
Flash Write Failed in HW FLS_E_WRITE_FAILED 0x02
Flash Read Failed in HW FLS_E_READ_FAILED 0x03
Flash Compare Failed in HW FLS_E_COMPARE_FAILED 0x04
Expected HW ID not matched FLS_E_UNEXPECTED_FLASH_ID 0x05

Back To Top


API Description

The AUTOSAR BSW Flash Driver specification details the APIs required for Flash Driver. Please refer to (Refer to Design Document provided in CSP) for detailed API description.

Refer API Documentation for details

Back To Top


Example Application

The example application demonstrates use of Fls module, the list below identifies key steps performed in the example. The configuration file is present at (Configuration Folder Structure).

Polled Storage Mode (fls_app_dac and fls_app_indac)

  • Initializes “Result Status Flags: Fls_JobDoneSuccess and Fls_JobDoneError”
  • Perform Pinmux configuration needed and initializes Board.
  • Core Application ()
    • Fls_Init() - Takes FlsConfigSet as input and Initializes Flash and OSPI
    • Fls_OSPI_configClk () - Configure the OSPI Clocks
    • Set starting address to base address of flash device, and data size to 1M Bytes
    • Fls_GetVersionInfo() - Prints module version info
    • Fls_GetStatus() - Gets the Module status
    • Fls_Erase() - Submits Erase job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_BlankCheck() - Submits BlankCheck job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Write() - Submits Write job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Read() - Submits Read job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Compare() - Submits Compare job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.

Interrupt Storage Mode (fls_app_intr)

  • Initializes “Result Status Flags: Fls_JobDoneSuccess and Fls_JobDoneError”
  • Perform Pinmux configuration needed and initializes Board.
  • FlsApp_InterruptConfig()
    • Register the Interrupt and ISR
  • Core Application ()
    • Fls_Init() - Takes FlsConfigSet as input and Initializes Flash and OSPI
    • Fls_OSPI_configClk () - Configure the OSPI Clocks
    • Set starting address to base address of flash device, and data size to 1M Bytes
    • Fls_GetVersionInfo() - Prints module version info
    • Fls_GetStatus() - Gets the Module status
    • Fls_Erase() - Submits Erase job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Read() - Submits Read job to manually compare erased data
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Write() - Submits Write job
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.
    • Fls_Read() - Submits Read job to manually compare written data
    • Fls_MainFunction() - Called in while loop, processes job, and exits when Fls_JobEndNotification/Fls_JobErrorNotification reached.

Performance Measurements

  • You can turn on the performance measurements for the storage mode app by enabling the "PERF_TEST" macro in FlsApp.c. This is enabled by default.

Back To Top


Example Log

fls_app_dac

    FLS_APP_DAC: 
    ------------------FLS Sample Application - STARTS !!! ------------------
    FLS_APP_DAC: 
    Running on J7 ES 
    FLS_APP_DAC: OSPI0 controller will be configured for OSPI/XSPI flash
    FLS_APP_DAC: FLS spi_test Initiating and Starting.
    FLS_APP_DAC: Variant - Pre Compile being used !!!
    FLS_APP_DAC: Configuring Clocks.
    FLS_APP_DAC: Clock Configured at 166666666Hz
    
    FLS MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 92
    SW Major Version    : 10
    SW Minor Version    : 0
    SW Patch Version    : 0
    
    FLS_APP_DAC: DATA SIZE TEST is 0x100000 
    FLS_APP_DAC: Offset is 0x0 
    
    FLS_APP_DAC:
    *****************Writing PHY Tune Data to last sector in memory*****************
    FLS_APP_DAC: Erasing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC: Blank Checking 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC: Writing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    FLS_APP_DAC: 
    Write 1048576 bytes at transfer rate 107557 Kbps 
    
    FLS_APP_DAC: Comparing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC:
    *************************Writing PHY Tune Data complete*************************

    FLS_APP_DAC: Erasing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC: Blank Checking 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC: Writing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    FLS_APP_DAC: 
    Write 1048576 bytes at transfer rate 2533 Kbps 
    
    FLS_APP_DAC: Reading 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    FLS_APP_DAC: 
    Read 1048576 bytes at transfer rate 40725 Kbps 
    
    FLS_APP_DAC: Comparing 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    
    FLS_APP_DAC: Reading 
    FLS_APP_DAC: Job Processing in Progress.
    FLS_APP_DAC: Job Ends: SUCCESS
    FLS_APP_DAC: 
    Read 1048576 bytes at transfer rate 41341 Kbps 
    
    FLS_APP_DAC: All tests have passed! 

fls_app_indac

    FLS_APP_INDAC: 
    ------------------FLS Sample Application - STARTS !!! ------------------
    FLS_APP_INDAC: 
    Running on J7 ES 
    FLS_APP_INDAC: OSPI0 controller will be configured for OSPI/XSPI flash
    FLS_APP_INDAC: FLS spi_test Initiating and Starting.
    FLS_APP_INDAC: Variant - Pre Compile being used !!!
    FLS_APP_INDAC: Configuring Clocks.
    FLS_APP_INDAC: Clock Configured at 166666666Hz
    
    FLS MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 92
    SW Major Version    : 10
    SW Minor Version    : 0
    SW Patch Version    : 0
    
    FLS_APP_INDAC: DATA SIZE TEST is 0x100000 
    FLS_APP_INDAC: Offset is 0x0 

    FLS_APP_INDAC: Erasing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Blank Checking 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Writing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 8912 Kbps 
    
    FLS_APP_INDAC: Cancel while Erasing 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Cancel while Writing 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 53350 Kbps 
    
    FLS_APP_INDAC: Erasing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Comparing.Expected to fail as data is erased. 
    FLS_APP_INDAC: Job Processing in Progress.
    Det Error reported
      Module ID       92
      Instance ID     0
      SID             8
      Error ID        8
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Cancel while Comparing.Expected to fail as data is erased. 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Writing to compare again 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 8911 Kbps 
    
    FLS_APP_INDAC: Comparing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Reading 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 44758 Kbps 
    
    FLS_APP_INDAC: Cancel while Reading 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 53349 Kbps 
    
    FLS_APP_INDAC: 
    .......................Changing mode to DAC....................... 
    FLS_APP_INDAC: Reading 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 20022 Kbps 
    
    FLS_APP_INDAC: Comparing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: 
    ....................Changing mode to INDAC..................... 
    FLS_APP_INDAC: Erasing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Blank Checking 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Writing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 8913 Kbps 
    
    FLS_APP_INDAC: Reading 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 44756 Kbps 
    
    FLS_APP_INDAC: Comparing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Cancel Erase Job
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Blank Checking after erase cancel-----Expect to fail
    FLS_APP_INDAC: Job Processing in Progress.
    Det Error reported
      Module ID       92
      Instance ID     0
      SID             10
      Error ID        7
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Erasing again 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Blank Checking after erase again
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Cancel after Writing 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 53350 Kbps 
    
    FLS_APP_INDAC: Comparing after write cancel---Expect to fail
    FLS_APP_INDAC: Job Processing in Progress.
    Det Error reported
      Module ID       92
      Instance ID     0
      SID             8
      Error ID        8
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Writing again. Will pass
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 8914 Kbps 
    
    FLS_APP_INDAC: Comparing.Expected to pass since write passed. 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Erasing 
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: Writing.
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Write 1048576 bytes at transfer rate 8913 Kbps 
    
    FLS_APP_INDAC: Cancel while Reading 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 53349 Kbps 
    
    FLS_APP_INDAC: Reading again
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    FLS_APP_INDAC: 
    Read 1048576 bytes at transfer rate 44751 Kbps 
    
    FLS_APP_INDAC: Cancel while Comparing 
    FLS_APP_INDAC: Cancel job Processing in Progress.
    FLS_APP_INDAC: Error is expected as we are cancelling the operation. 
    FLS_APP_INDAC: Job Ends: ERROR
    
    FLS_APP_INDAC: Comparing again
    FLS_APP_INDAC: Job Processing in Progress.
    FLS_APP_INDAC: Job Ends: SUCCESS
    
    FLS_APP_INDAC: 
    Changing mode to DAC 
    FLS_APP_INDAC: FLS SPI TEST DONE! 

    FLS_APP_INDAC: Ospi configuration Register Readback values  
    FLS_APP_INDAC: CONFIG_REG                                     : 0x81783881
    FLS_APP_INDAC: DEV_INSTR_RD_CONFIG_REG                  : 0x1e03339d
    FLS_APP_INDAC: DEV_INSTR_WR_CONFIG_REG                  : 0x33082
    FLS_APP_INDAC: DEV_DELAY_REG                              : 0x300000a
    FLS_APP_INDAC: DEV_SIZE_CONFIG_REG                          : 0x111003
    FLS_APP_INDAC: SRAM_PARTITION_CFG_REG                     : 0x3f
    FLS_APP_INDAC: DMA_PERIPH_CONFIG_REG                      : 0x0
    FLS_APP_INDAC: MODE_BIT_CONFIG_REG                          : 0x200
    FLS_APP_INDAC: TX_THRESH_REG                              : 0x1
    FLS_APP_INDAC: RX_THRESH_REG                              : 0x1
    FLS_APP_INDAC: PHY_CONFIGURATION_REG                      : 0x2d0021

    FLS_APP_INDAC: All tests have passed!                                                           

fls_app_intr

    FLS_APP_INTR: 
    ------------------FLS Sample Application - STARTS !!! ------------------
    FLS_APP_INTR: OSPI0 controller will be configured for OSPI/XSPI flash
    FLS_APP_INTR: FLS spi_test Initiating and Starting.
    FLS_APP_INTR: Configuring Interrupt.
    FLS_APP_INTR: Variant - Pre Compile being used !!!
    FLS_APP_INTR: Configuring Clocks.
    FLS_APP_INTR: Clock Configured at 166666666Hz
    
    FLS MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 92
    SW Major Version    : 10
    SW Minor Version    : 0
    SW Patch Version    : 0
    
    FLS_APP_INTR: DATA SIZE TEST is 0x100000 
    FLS_APP_INTR: Offset is 0x0 

    FLS_APP_INTR: Erasing 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    
    FLS_APP_INTR: Manual comparing erased data

    FLS_APP_INTR: Calling Read to manually compare 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    FLS_APP_INTR: 
    Read 1048576 bytes at transfer rate 58417 Kbps 
    
    FLS_APP_INTR: Manual Comparing is Correct

    FLS_APP_INTR: Cancel while Writing 
    FLS_APP_INTR: Cancel job Processing in Progress.
    FLS_APP_INTR: Error is expected as we are cancelling the operation. 
    FLS_APP_INTR: Job Ends: ERROR
    FLS_APP_INTR: 
    Write 1048576 bytes at transfer rate 55448 Kbps 
    
    FLS_APP_INTR: Cancel while Reading 
    FLS_APP_INTR: Cancel job Processing in Progress.
    FLS_APP_INTR: Error is expected as we are cancelling the operation. 
    FLS_APP_INTR: Job Ends: ERROR
    FLS_APP_INTR: 
    Read 1048576 bytes at transfer rate 56766 Kbps 
    
    FLS_APP_INTR: Erasing 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    
    FLS_APP_INTR: Manual comparing erased data

    FLS_APP_INTR: Calling Read to manually compare 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    FLS_APP_INTR: 
    Read 1048576 bytes at transfer rate 58439 Kbps 
    
    FLS_APP_INTR: Manual Comparing is Correct

    FLS_APP_INTR: Writing Again without Cancel
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    FLS_APP_INTR: 
    Write 1048576 bytes at transfer rate 13121 Kbps 
    
    FLS_APP_INTR: Reading without cancel 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    FLS_APP_INTR: 
    Read 1048576 bytes at transfer rate 58452 Kbps 
    
    FLS_APP_INTR: Manual Comparing written data 

    FLS_APP_INTR: Calling Read to manually compare 
    FLS_APP_INTR: Job Processing in Progress.
    FLS_APP_INTR: Job Ends: SUCCESS
    FLS_APP_INTR: 
    Read 1048576 bytes at transfer rate 58433 Kbps 
    
    FLS_APP_INTR: Manual Comparing is Correct

    FLS_APP_INTR: 
    Changing mode to DAC 
    FLS_APP_INTR: FLS SPI TEST DONE! 

    FLS_APP_INTR: Ospi configuration Register Readback values  
    FLS_APP_INTR: CONFIG_REG                                      : 0x81783881
    FLS_APP_INTR: DEV_INSTR_RD_CONFIG_REG                   : 0x1e03339d
    FLS_APP_INTR: DEV_INSTR_WR_CONFIG_REG                   : 0x33082
    FLS_APP_INTR: DEV_DELAY_REG                               : 0x300000a
    FLS_APP_INTR: DEV_SIZE_CONFIG_REG                           : 0x111003
    FLS_APP_INTR: SRAM_PARTITION_CFG_REG                      : 0x3f
    FLS_APP_INTR: DMA_PERIPH_CONFIG_REG                       : 0x0
    FLS_APP_INTR: MODE_BIT_CONFIG_REG                           : 0x200
    FLS_APP_INTR: TX_THRESH_REG                               : 0x1
    FLS_APP_INTR: RX_THRESH_REG                               : 0x1
    FLS_APP_INTR: PHY_CONFIGURATION_REG                       : 0x2d0021

    FLS_APP_INTR: All tests have passed! 

fls_app_xip

    FLS_APP_XIP:
    ------------------FLS Sample Application - STARTS !!! ------------------
    FLS_APP_XIP:
     Running on J7 ES
    FLS_APP_XIP: FLS spi_test Initiating and Starting.
    FLS_APP_XIP: Variant - Pre Compile being used !!!
    FLS_APP_XIP: Configuring Clocks.
    FLS_APP_XIP: Clock Configured at 166666666Hz

    FLS MCAL Version Info
    ---------------------
    Vendor ID           : 44
    Module ID           : 92                                                        
    SW Major Version    : 1                                                         
    SW Minor Version    : 2                                                         
    SW Patch Version    : 1                                                         

    FLS_APP_XIP: DATA SIZE TEST is 0x1000                                           
    FLS_APP_XIP: Offset is 0x0                                                      
    FLS_APP_XIP: Erasing                                                            
    FLS_APP_XIP: Job Processing in Progress.                                        
    FLS_APP_XIP: Job Ends: SUCCESS                                                  
    FLS_APP_XIP: Blank Checking                                                     
    FLS_APP_XIP: Job Processing in Progress.                                        
    FLS_APP_XIP: Job Ends: SUCCESS                                                  
    FLS_APP_XIP: Writing                                                            
    FLS_APP_XIP: Job Processing in Progress.                                        
    FLS_APP_XIP: Job Ends: SUCCESS                                                  
    FLS_APP_XIP: Calling XIP app                                                    
    MCU1_0 running                                                                  
    MCU1_0 reports: All tests have passed                                           
    FLS_APP_XIP: Returning from XIP app, returned value is 0xFEEDFACE               
    FLS_APP_XIP: Reading                                                            
    FLS_APP_XIP: Job Processing in Progress.                                        
    FLS_APP_XIP: Job Ends: SUCCESS                                                  
    FLS_APP_XIP: Comparing                                                          
    FLS_APP_XIP: Job Processing in Progress.                                        
    FLS_APP_XIP: Job Ends: SUCCESS                                                  
    FLS_APP_XIP: DONE!    

Back To Top


References

Back To Top