![]() |
MCUSW
|
This document details AUTOSAR BSW Flash module implementation
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, J742S2 |
MT25QU512ABB | QSPI | J721S2 |
The main tasks of the FLS driver are:
Please refer the Flash design, which is included as part of CSP.
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.
The Fls Driver implementation supports multiple configuration variants (refer section Introduction), the driver expects generated Fls_Cfg.h, Fls_NOR_Device.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 current driver supports the following protocols for custom flash devices:
Ensure the correct protocol is selected based on the flash device’s capabilities.
The FlsMemConfiguration section of the EB Tresos configurator allows the user to define custom flash devices. Key fields and their descriptions for custom flash configuration include:
FLS_NOR
FLS_OSPI
67108864
(64KB)4096
(4KB)4096
(4KB) for hybrid sectors.FlsNORUniformSectorSize
. It will default to FlsNORUniformSectorSize which represents the regular sector size.0x4000000
(64MB)0x100
(256B)0xFF
.0xC7
for supported devices, 0U
if unsupported.0x01
for supported devices, 0U
if unsupported.In addition to the above, other fields are also present in the configuration, such as commands for read, write, and specific flash operations, which are similarly defined for supported and unsupported devices. Above is the description of some key fields.
Ensure all relevant commands are defined according to the flash device’s datasheet.
The image below illustrates the Custom Flash Configuration in the EB Tresos tool, where the user can define parameters such as the NOR device type, protocol mode, sector sizes, and various command configurations. These fields allow seamless integration and customization of external flash devices by configuring the appropriate values for each field.
Select the added flash in the FlsExternalFlashSelect
Field :
The driver uses two primary configuration files:
Both files are generated based on the configuration fields set in the configurator. Ensure that both files are included correctly in the build path to avoid errors.
Sector Size Configuration In the FLS driver configuration, two key fields help in defining the size of sectors in the flash memory:
NOR_UNIFORM_SECTOR_SIZE: This field represents the size of the sectors when the flash uses a regular or uniform sector size throughout the memory. If the flash device has consistent sector sizes across the entire memory, this macro is used to define the sector size.
Example:
In such cases, the flash memory has uniform sectors of 64KB, and this value will be used for erasing, writing, and reading operations. The system will rely on this macro alone to manage sector-related operations.
Example
Protocol Configuration
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.
Fls_NOR_Device.h
. This file to be placed along with Fls_Cfg.h
in configuration section.As the Fls driver supports different flash protocols, and the configuration differs based on the selected protocol:
NOR_BLOCK_SIZE
macro is used when configuring devices with the XSPI protocol. The block size value defines the erase unit size for the flash memory.NOR_SECTOR_SIZE
macro is utilized. This configuration reflects the sector size used for read, write, and erase operations specific to these protocols.(When configuring flash devices using the FlsMemConfiguration
field, ensure that the correct protocol is set so that the driver can apply the appropriate block or sector sizes based on the selected flash type.)
Handling Flash Operations
The driver supports the following operations for custom flash devices:
Error Handling for Custom Flash Devices
When integrating custom flash devices, pay attention to the following error handling mechanisms:
0U
in the configuration to avoid operation failure.Key Considerations
When configuring a custom flash device, ensure the following:
FlsNORCmdPageProg
, FlsNORCmdSecErase
) are supported by the custom flash. Unsupported commands should be set to 0U
.0xFF
for erased data. Ensure the FlsNORErasedData is correctly set.0U
, and the driver will fall back on the regular FlsNORUniformSectorSize.The FLS driver incorporates safety checks to ensure data integrity and proper operation across supported flash devices. These checks include boundary verifications for uniform and hybrid sector sizes, valid address alignment, and command execution correctness. Although the driver is thoroughly tested and verified for the following flash devices:
It is important to note that when adding custom flash devices, these safety mechanisms will ensure that the driver performs appropriate validations during read, write, and erase operations. While custom devices can be configured, it is critical to refer to the device's datasheet to ensure proper configuration of commands, sizes, and addressing modes. For any device not listed here, ensure that it adheres to similar specifications to the tested devices to maintain the driver's integrity and safety standards.
The following section details on the unsupported features and additional features added.
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.
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.
This parameter defines the Clock Speed for the OSPI peripheral. The supported clock speeds are as follows:
This parameter is the switch between Double Transfer Rate (DTR) and Single Transfer Rate (STR) for OSPI Flash.
This parameter is the switch to turn on and off PHY mode.
Following features outlined in Specification are not supported:
In compliance with project-specific requirements, the FlsSectorList field has been removed from the configurator. Instead, the flash-related information, such as sector size, block size, and page size, is now defined through the fields in FlsMemConfiguration. These fields include:
This deviation from the AUTOSAR specification ensures a more streamlined and flexible configuration for flash devices. The use of the FlsMemConfiguration fields allows for easier integration of custom flash devices while maintaining necessary safety and validation checks.
By using these macros, the driver automatically adapts the flash parameters based on the selected flash in the FlsExternalFlashSelect field. This modification allows support for custom flash devices while still adhering to core safety mechanisms, even though it deviates from the strict AUTOSAR spec implementation. Refer section (refer section Configuration) for custom flash addition.
With the introduction of the updated flow, including the new Fls_NOR_Device.h
, existing customers must adjust their configurations to align with the new structure. Follow the steps below to transition smoothly:
Fls_NOR_Device.h
)**:Fls_NOR_m35xu512.h
or Fls_NOR_s28hs512t.h
.Fls_NOR_Device.h
.FlsMemConfiguration
field in the EB Tresos configurator to define flash parameters such as:Fls_NOR_Device.h
will contain all necessary macro definitions for these fields.Fls_Brd_Nor.c
) reference the new Fls_NOR_Device.h
macros and settings.FlsMemConfiguration
within EB Tresos.Fls_NOR_Device.h
for any custom commands or configurations.FlsMemConfiguration
field.Fls_NOR_Device.h
and ensure all device settings are correctly defined.Fls_NOR_Device.h
macros.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 |
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 |
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 |
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 |
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 |
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.
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.
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.
There PHY algorthm used in J7200, J721E, J721S2, and J784S4,J742S2 are based on calibration algorithm. 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:
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
Please follow steps detailed in section (Build) to build library or example. Please note that OSPI Boot mode is not applicable for Fls module.
The below Fls Test Applications are available:
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.
M35XU512_4BYTE_ADDRESSING
Flash in the configurator under FlsMemConfiguration field.Note: SDR mode does not support Phy Tune
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.
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.
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.
This implementation depends on MemIf module and uses its imported types such as MemIf_JobResultType, MemIf_ModeType and MemIf_StatusType.
This implementation depends on Fee module for callback notification to notify the module environment about job end and job error.
Development errors are reported to the DET using the service Det_ReportError(), when enabled. The driver interface (Fls.h) lists the SID.
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 |
Transient errors are reported to the DET using the service Det_reportDetTransientFault(). The driver interface (Fls.h) lists the SID.
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 |
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
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)
Interrupt Storage Mode (fls_app_intr)
Performance Measurements
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 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 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 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!