1 - AutoSAR FEE Parameter Configuration

 

3 - AutoSAR FEE Parameter Configurations


                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
            
 
 
 
 
 

 
 
AutoSAR FEE Parameter  
Configuration Document 
 
 
 
 
 
 
 
Texas Instruments Incorporated 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
ABSTRACT 
 
AutoSAR  Flash  EEPROM  Emulation  (AutoSAR  FEE)  driver  utilizes  Code  Generation 
Tool  to  generate  the  configuration  parameters  required  for  EEPROM  emulation.  Code 
Generation  Tool  is  used  to  configure  parameters  like  which  Flash  Sectors  to  use,  the 
number  of  Blocks,  Block  Size  etc.  for  EEPROM  emulation.  Code  Generation  Tool 
generates two files (Fee_cfg.h & Fee_cfg.c) depending on the configuration. 
 
This document describes the parameters used by Code Generation Tool to generate the 
AutoSAR FEE Configuration parameters.  
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
Revision History  
 

Version  Release 
Author 
Comment 
Date 
1.0 
09/16/2012  Vishwanath  Initial version 
Reddy 
1.1  
10/10/2012  Vishwanath  Add configuration parameter 
Reddy 
FEE_NUMBER_OF_VIRTUAL_SECTORS_EEP1 
1.2 
11/20/2012  Vishwanath  Remove FeeSetModeSupported 
Reddy 
1.3 
06/11/2013  Vishwanath  Add configuration parameter’s: 
Reddy 
FEE_NUMBER_OF_UNCONFIGUREDBLOCKSTOCOPY, 
FEE_NUMBER_OF_EIGHTBYTEWRITES 
1.4 
01/06/2014  Vishwanath  Added configuration parameter 
Reddy 
FEE_CHECK_BANK7_ACCESS 
1.5 
09/25/2014  Vishwanath  Configuration update to support TMS570LS05xx, 
Reddy 
TMS570LS07xx, TMS570LS09xx. Range updated for 
FEE_VirtualSectorNumber, Virtual Sectors. 
New configuration parameter 
FEE_TOTAL_BLOCKS_DATASETS added. 
1.6 
12/31/2014  Vishwanath  Add new Configuration parameters. 
Reddy 
FEE_VIRTUALSECTOR_SIZE, 
FEE_PHYSICALSECTOR_SIZE,  
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC 
Note added in section 1.6 FEE Sector Configuration. 
1.7 
01/07/2015  Vishwanath  Remove Device_Header.h from fee_cfg.h file. 
Reddy 
1.8 
01/21/2015  Vishwanath  Added comments for FEE_TOTAL_BLOCKS_DATASETS, 
Reddy 
FEE_NUMBER_OF_EEPS and  
FEE_NUMBER_OF_BLOCKS 
 
 
Configuration Changes 
 
Parameter added/ Modified 
Change 
 
 
FeeCRCEnable 
New 
FeeWriteCounterSave 
New 
FeeNumberOfEEPS 
New 
FeeDevErrorDetect 
New 
FeeBlockOverhead 
Changed to 0x18 
FeeEEPNumber(in block configuration) 
New 
FeeNumberOfVirtualSectorsEEP1 
New 
FEE_NUMBER_OF_UNCONFIGUREDBLOCKSTOCOPY 
New 
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
FEE_NUMBER_OF_EIGHTBYTEWRITES 
New 
FEE_CHECK_BANK7_ACCESS 
New 
FEE_TOTAL_BLOCKS_DATASETS 
New 
FEE_VIRTUALSECTOR_SIZE 
New 
FEE_PHYSICALSECTOR_SIZE 
New 
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC  New 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
Table of Contents  
 

Introduction .............................................................................................................. 7 
1.1 
FEE Published information ............................................................................... 7 
1.1.1 
Block OverHead ......................................................................................... 7 
1.1.2 
Maximum Blocking Time ............................................................................ 7 
1.1.3 
Page OverHead ......................................................................................... 8 
1.1.4 
Sector OverHead ....................................................................................... 8 
1.2 
FEE General Settings ...................................................................................... 9 
1.2.1 
Virtual Page size ........................................................................................ 9 
1.2.2 
Driver Index................................................................................................ 9 
1.2.3 
Error Notification ...................................................................................... 10 
1.2.4 
End Notification ........................................................................................ 10 
1.2.5 
Frequency ................................................................................................ 11 
1.2.6 
Enable Polling mode ................................................................................ 11 
1.2.7 
Enable Error Correction ........................................................................... 12 
1.2.8 
Error Correction Handling ......................................................................... 12 
1.2.9 
Cyclic Redundancy Check ....................................................................... 13 
1.2.10  Block Write counter save.......................................................................... 13 
1.2.11  Number of EEPs ...................................................................................... 14 
1.2.12  Development error Detect ........................................................................ 14 
1.2.13  Non configured blocks to copy ................................................................. 15 
1.2.14  Number of eight byte writes ...................................................................... 15 
1.2.15  Check BANK7 Address Range ................................................................. 16 
1.2.16  Total Blocks and Data Sets ...................................................................... 16 
1.2.17  Generate Device and Virtual sector structures ......................................... 17 
1.2.18  Required Virtual Sector Size .................................................................... 18 
1.2.19  FEE bank Physical Sector Size ................................................................ 19 
1.3 
Number of Blocks .......................................................................................... 20 
1.3.1 
Blocks ...................................................................................................... 20 
1.4 
Number of Virtual Sectors .............................................................................. 20 
1.4.1 
Virtual Sectors .......................................................................................... 20 
1.4.2 
Virtual Sectors for EEP1........................................................................... 21 
1.5 
FEE functions ................................................................................................ 21 
1.5.1 
FEE_GetVersionInfo ................................................................................ 21 
1.6 
FEE Sector Configuration .............................................................................. 22 
1.6.1 
FEE_VirtualSectorConfiguration ............................................................... 22 
1.6.1.1 
FEE_VirtualSectorNumber ................................................................ 22 
1.6.1.2 
FEE_VirtualSectorBank .................................................................... 23 
1.6.1.3 
FEE_VirtualSectorStart ..................................................................... 23 
1.6.1.4 
FEE_VirtualSectorEnd ...................................................................... 24 
1.6.2 
Example Virtual Sector Configuration ....................................................... 25 
1.7 
FEE Block Configuration ................................................................................ 26 
1.7.1 
FEE Block Configuration .......................................................................... 26 
1.7.1.1 
FEE_BlockNumber............................................................................ 26 
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.7.1.2 
FEE_BlockSize ................................................................................. 27 
1.7.1.3 
FEE_NumberOfWriteCycles .............................................................. 27 
1.7.1.4 
FEE_UseImmediateData .................................................................. 28 
1.7.1.5 
FEE Device Index ............................................................................. 28 
1.7.1.6 
FeeNumberOfDataSets ..................................................................... 29 
1.7.1.7 
FEE EEP Number ............................................................................. 29 
1.7.2 
Example Block Configuration ................................................................... 30 
1.8 
Header Files .................................................................................................. 31 
1.8.1 
Header Files for Fee_cfg.h ....................................................................... 31 
1.8.2 
Header Files for Fee_cfg.c ....................................................................... 31 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1  Introduction 
The  following  sections  describe  each  parameter  in  the  Fee_ParamDef.axml  file 
used  by  Code  Generation  Tool  and  the  corresponding  configuration  parameter 
generated.  Code  Generation  Tool  generates  two  files  (Fee_Cfg.c  and  Fee_cfg.h) 
depending  on  the  configuration  values.  This  section  describes  each  configuration 
value  in  the  above  two  files  and  their  relation  to  the  parameter  defined  in  the 
Fee_ParamDef.axml file. 
1.1  FEE Published information 
1.1.1  Block OverHead 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeBlockOverhead 
 
 
Description 
Indicates the number of bytes used for Block 
Header. 
 
 
Generated configuration 
FEE_BLOCK_OVERHEAD is set to the value 
assigned to FeeBlockOverhead. 
 
 
Default Value 
0x18 
 
 
Parameter Range 
Fixed to 0x18. 
 
 
Parameter Type 
uint8 
 
 
Target file 
Fee_cfg.h 
1.1.2  Maximum Blocking Time  
Parameter defined in 
 
Fee_ParamDef.axml 
FeeMaximumBlockingTime 
 
 
Description 
Indicates the maximum allowed blocking time for any 
Fee call.  
 
 
Generated configuration 
FEE_MAXIMUM_BLOCKING_TIME is set to the 
value assigned to FeeMaximumBlockingTime. 
Default Value 
600.00 
 
 
Parameter Range 
Fixed to 600 µs. 
 
 
Parameter Type 
float 
Target file 
Fee_cfg.h 
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.1.3  Page OverHead 
Parameter defined in 
 
Fee_ParamDef.axml 
FeePageOverhead 
 
 
Description 
Indicates the Page Overhead in bytes. 
 
 
Generated configuration 
FEE_PAGE_OVERHEAD is set to the value 
assigned to FeePageOverhead. (0x0) 
 
 
Default Value  
0x0 
 
 
Parameter Range 
Fixed to 0x0. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_cfg.h 
1.1.4  Sector OverHead 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeVirtualSectorOverhead 
 
 
Description 
Indicates the number of bytes used for Virtual Sector 
Header. 
 
 
Generated configuration 
FEE_VIRTUAL_SECTOR_OVERHEAD is set to the 
value assigned to FeeVirtualSectorOverhead (0x10). 
 
 
Default Value 
0x10 
 
 
Parameter Range 
Fixed to 0x10. 
 
 
Parameter Type 
uint8 
Target File 
Fee_cfg.h 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2  FEE General Settings 
1.2.1  Virtual Page size 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeVirtualPageSize 
 
 
Description 
Indicates the virtual page size in bytes. 
 
 
Generated configuration 
FEE_VIRTUAL_PAGE_SIZE is set to the value 
assigned to FeeVirtualPageSize. (0x8) 
 
 
Default Value 
0x8 
 
 
Parameter Range 
Fixed to 0x8. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_cfg.h 
 
 
 
 
 
 
1.2.2   Driver Index 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeIndex 
 
 
Description 
Instance ID of FEE module. Should always be 0x0. 
 
 
Generated configuration 
FEE_INDEX is set to the value assigned to 
FeeIndex. (0x0) 
 
 
Default Value 
0x0 
 
 
Parameter Range 
Fixed to 0x0. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_cfg.h 
 
 
 
 
Texas Instruments Incorporated                                                      

 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.3  Error Notification 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNvmJobErrorNotification 
 
 
Description 
Call back function to notify a Job Error. 
 
 
Generated configuration 
FEE_NVM_JOB_ERROR_NOTIFICATION is set to 
the defined function name. This is relevant only if 
Polling mode is OFF. 
 
 
Default Value 
NvM_JobErrorNotification 
 
 
Parameter Range 
User defined function name. 
 
 
Parameter Type 
string  
 
 
Target File 
Fee_cfg.h 
   
 
 
 
 
1.2.4  End Notification 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNvmJobEndNotification 
 
 
Description 
Call back function to notify end of a Job. 
 
 
Generated configuration 
FEE_NVM_JOB_END_NOTIFICATION is set to the 
defined function name. This is relevant only if Polling 
mode is OFF. 
 
 
Default Value 
NvM_JobEndNotification 
 
 
Parameter Range 
User defined function name. 
 
 
Parameter Type 
string 
 
 
Target File 
Fee_cfg.h 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
10 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.2.5  Frequency 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeFrequency  
 
 
Description 
Device operating frequency in MHz. 
 
 
Generated configuration 
FEE_OPERATING_FREQUENCY is set to the value 
assigned to FeeFrequency.  
FeeFrequency is equivalent to the HCLK frequency 
in the TMS570 clock tree. 
It is recommended to copy the value of HCLK 
obtained by configuring the TMS570 clock tree 
during MCU configuration to this parameter. 
 
 
Default Value 
160.0 
 
 
Parameter Range 
Device dependent parameter. Refer to the device 
datasheet to know the range. 
 
 
Parameter Type 
float 
 
 
Target File 
Fee_cfg.h 
 
 
1.2.6  Enable Polling mode 
Parameter defined in 
 
Fee_ParamDef.axml 
FeePollingMode 
 
 
Description 
Indicates if polling mode is enabled/disabled. 
 
 
Generated configuration 
FEE_POLLING_MODE is set to STD_ON if polling is 
enabled else it is set to STD_OFF. Currently, this 
parameter should be always STD_ON. 
 
 
Default Value 
STD_ON 
 
 
Parameter Range 
STD_ON/STD_OFF 
 
 
Parameter Type 
Boolean 
 
 
Target File 
Fee_cfg.h 
 
 
Texas Instruments Incorporated                                                      
11 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.2.7 
Enable Error Correction 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeEnableErrorCorrection 
 
 
Description 
Indicates if error correction is enabled. 
 
 
Generated configuration 
FEE_FLASH_ERROR_CORRECTION_ENABLE 
Is set to STD_ON if Error Correction is enabled else 
it is set to STD_OFF. This parameter is not used 
anymore. 
 
 
Default Value 
STD_OFF 
 
 
Parameter Range 
STD_ON/STD_OFF 
 
 
Parameter Type 
Boolean 
 
 
Target File 
Fee_cfg.h 
 
1.2.8 
Error Correction Handling 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeFlashErrCorrHandlingType 
 
 
Description 
Indicates desired action to be taken on detection of 
bit errors. 
 
 
Generated configuration 
FEE_FLASH_ERROR_CORRECTION_HANDLING 
is set to the value assigned to 
FeeFlashErrCorrHandlingType. Only Fee_None is 
supported. 
 
 
Default Value 
Fee_None 
 
 
Parameter Range 
Fee_None or Fee_Fix 
 
 
Parameter Type 
enum {Fee_none, Fee_Fix} 
 
 
Target File 
Fee_cfg.h  
 
 
 
 
Texas Instruments Incorporated                                                      
12 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.9     Cyclic Redundancy Check 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeCRCEnable 
 
Pre-processor switch to enable the CRC for blocks. 
Description 
STD_ON: CRC for blocks is enabled. 
STD_OFF:CRC disabled 
 
 
Generated configuration 
FEE_FLASH_CRC_ENABLE is set to STD_ON if 
CRC check is enabled else it is set to STD_OFF. If 
enabled, 16 bit CRC of the block is generated. 
 
 
Default Value 
STD_OFF  
 
 
Parameter Range 
STD_ON / STD_OFF 
 
 
Parameter Type 
Boolean 
 
 
 
Target File 
Fee_cfg.h  
1.2.10      Block Write counter save 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeWriteCounterSave 
 
Pre-processor switch to enable the block write 
Description 
counter. STD_ON: Block Write counter is enabled. 
STD_OFF:Block Write counter is disabled 
 
 
Generated configuration 
FEE_FLASH_WRITECOUNTER_SAVE is set to 
STD_ON  if block write counter save is enabled else 
it is set to STD_OFF. 
 
 
Default Value 
STD_OFF  
 
 
Parameter Range 
STD_ON / STD_OFF 
 
 
Parameter Type 
Boolean 
 
 
 
Target File 
Fee_cfg.h  
 
 
 
 
Texas Instruments Incorporated                                                      
13 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.11      Number of EEPs 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfEEPS 
 
Number of EEP's configured. 1 - Only one EEP 
Description 
configured. All Virtual Sectors can be used by this 
EEP. 2 - Two EEP's configured. Each EEP can use 
two Virtual Sectors. 
 
 
Generated configuration 
FEE_NUMBER_OF_EEPS is set to 1 if all virtual 
sectors are used by one EEP. If virtual sectors are 
shared between two EEPs, it is set to 2. 
Default Value 
1  
Parameter Range 
1/2 
Parameter Type 
Uint8 
Target File 
Fee_cfg.h  
Note: If GUI is calculating this parameter from the configuration, this parameter 
may not be present in BSWMD file. 
1.2.12  Development error Detect 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeDevErrorDetect 
 
Pre-processor switch to enable and disable 
Description 
development error detection. true: Development 
error detection enabled. false: Development error 
detection disabled. 
 
 
Generated configuration 
FEE_DEV_ERROR_DETECT Is set to STD_ON if 
Set Mode supported is required else it is set to 
STD_OFF. 
 
 
Default Value 
STD_OFF  
 
 
Parameter Range 
STD_ON/STD_OFF 
 
 
Parameter Type 
boolean 
 
 
 
Target File 
Fee_cfg.h  
 
 
Texas Instruments Incorporated                                                      
14 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.2.13  Non configured blocks to copy 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfUnconfiguredBlocksToCopy 
 
Defines the maximum number of non configured 
Description 
blocks to be copied during virtual sector swap. This 
parameter is used if project configures and writes 10 
blocks at start of the project, then reduce the number 
of blocks to let’s say 8 blocks, but still want the other 
two blocks to be present in Flash. In this case, 
project should configure this parameter to 2. 
 
 
Generated configuration 
FEE_NUMBER_OF_UNCONFIGUREDBLOCKSTO
COPY is set to defined value. 
 
 
Default Value 

 
 
Parameter Range 
0 -255 
 
 
Parameter Type 
Uint8 
 
 
 
Target File 
Fee_cfg.h  
 
1.2.14  Number of eight byte writes 
 
Parameter defined in 
FeeNumberOfEightByteWrites 
Fee_ParamDef.axml 
 
Defines the number of 8 byte writes to be done in 
Description 
main function call. If configured to 2, main function 
writes 16 bytes per call. 
 
 
Generated configuration 
FEE_NUMBER_OF_EIGHTBYTEWRITES is set to 
defined value. 
 
 
Default Value 

 
 
Parameter Range 
1-255 
 
 
Parameter Type 
Uint8 
 
 
 
Texas Instruments Incorporated                                                      
15 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
 
Target File 
Fee_cfg.h  
1.2.15  Check BANK7 Address Range 
 
Parameter defined in 
FEE_CHECK_BANK7_ACCESS 
Fee_ParamDef.axml 
 
Pre processor switch to enable EEPROM address 
Description 
range check during read/write. 
 
 
Generated configuration 
FEE_CHECK_BANK7_ACCESS is set to defined 
value. 
 
 
Default Value 
STD_OFF 
 
 
Parameter Range 
STD_ON/STD_OFF 
 
 
Parameter Type 
boolean 
 
 
 
Target File 
Fee_cfg.h  
1.2.16  Total Blocks and Data Sets 
 
Parameter defined in 
FEE_TOTAL_BLOCKS_DATASETS 
Fee_ParamDef.axml 
Description 
Macro to indicate total blocks and data sets 
configured. 
Generated configuration 
FEE_TOTAL_BLOCKS_DATASETS is set to defined 
value. 
Default Value 

Parameter Range 
1-65536 
Parameter Type 
Uint16 
Target File 
Fee_cfg.h  
 
Note: This configuration should calculate total number of blocks and data sets 
configured in the structure Fee_BlockConfiguration. For example, if 5 blocks are 
configured with block 1 has 1 data set, block 2 has 4 data sets, block 3 has 2 
data sets, block 4 has 5 data sets, block 5 has 3 data sets, then  
FEE_TOTAL_BLOCKS_DATASETS = [(1)+(4)+(2)+(5)+(3)] = 15(sum of all data 
sets). 
If GUI is calculating this parameter from the configuration, this parameter may 
not be present in BSWMD file. 
 
 
 
Texas Instruments Incorporated                                                      
16 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.17  Generate Device and Virtual sector structures 
Parameter defined in 
FEE_GENERATE_DEVICEANDVIRTUALSECTORS
Fee_ParamDef.axml 
TRUC 
 
Pre processor switch to enable/disable generation of 
Description 
Device and Virtual sector structures. 
 
 
Generated configuration 
FEE_GENERATE_DEVICEANDVIRTUALSECTORS
TRUC is set to defined value. 
 
 
Default Value 
STD_OFF 
 
 
Parameter Range 
STD_ON/STD_OFF 
 
 
Parameter Type 
boolean 
 
 
 
Target File 
Fee_cfg.h  
 
Note: When this macro is turned ON, Fee_VirtualSectorConfiguration  and 
Device_FlashDevice  are generated during run time.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
17 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.18  Required Virtual Sector Size  
 
Parameter defined in 
FEE_VIRTUALSECTOR_SIZE 
Fee_ParamDef.axml 
 
Macro to indicate the required virtual sector size in 
Description 
kilo bytes. This macro is only used when 
FEE_GENERATE_DEVICEANDVIRTUALSECTORS
TRUC is STD_ON. Based on 
FEE_VIRTUALSECTOR_SIZE and 
FEE_NUMBER_OF_VIRTUAL_SECTORS, elements 
of the structure Fee_VirtualSectorConfiguration will 
be populated during runtime. 
 
 
Generated configuration 
FEE_VIRTUALSECTOR_SIZE is set to defined 
value. 
 
 
Default Value 
None 
 
 
Parameter Range 
4-32(see below note) 
 
 
Parameter Type 
Uint8 
 
 
Target File 
Fee_cfg.h  
 
Note: Depending on the device, parameter range can be different.  
For TMS570LS12xx/11xx family devices, FEE bank is 4*16KB. Macro can take a 
value of 16 or 32. For TMS570LS09xx, TMS570LS07xx, TMS570LS05xx family 
devices, FEE bank is 16*4KB. Macro can take a value of 4 or 8 or 12 or 16 or 32.  
FEE_VIRTUALSECTOR_SIZE * FEE_NUMBER_OF_VIRTUAL_SECTORS 
should not exceed the total available FEE bank size on device. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
18 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.2.19  FEE bank Physical Sector Size  
 
Parameter defined in 
FEE_PHYSICALSECTOR_SIZE 
Fee_ParamDef.axml 
 
Macro to indicate the physical sector size on the 
Description 
device. This macro is only used when 
FEE_GENERATE_DEVICEANDVIRTUALSECTORS
TRUC is STD_OFF. This parameter is used to select 
device specific files. 
 
 
Generated configuration 
FEE_PHYSICALSECTOR_SIZE is set to defined 
value. 
 
 
Default Value 
None. 
 
 
Parameter Range 
4/16 
 
 
Parameter Type 
Uint8 
 
 
 
Target File 
Fee_cfg.h  
 
Note: This macro can only have 4/16 as value.  
For TMS570LS12xx/11xx family devices, sector size is 16. For TMS570LS09xx, 
TMS570LS07xx, TMS570LS05xx family devices, sector size is 4. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
19 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.3  Number of Blocks 
1.3.1  Blocks 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfBlocks 
 
 
Description 
Defines the number of Data Blocks used for 
EEPROM emulation. This is sum of all the blocks 
configured on EEP1 and EEP2. 
 
 
Generated configuration 
FEE_NUMBER_OF_BLOCKS is set to the defined 
value. 
 
 
Default Value 
0x1 
 
 
Parameter Range 
0x1  to 0xFFFE 
 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_cfg.h 
Note: If GUI is calculating this parameter from the configuration, this parameter 
may not be present in BSWMD file. 
 
1.4  Number of Virtual Sectors 
1.4.1  Virtual Sectors 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfVirtualSectors 
 
 
Description 
Defines the number of Virtual Sectors used for FEE.  
 
 
Generated configuration 
FEE_NUMBER_OF_VIRTUAL_SECTORS is set to 
the defined value. 
 
 
Default Value 
0x2 
 
Min :0x2 Max : 0x4,For 
Parameter Range 
TMS570LS01227/TMS570LS1113. 
 
Min : 0x2 Max : 16, For TMS570LS05xx, 
TMS570LS07xx, TMS570LS09xx. 
 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_cfg.h 
 
 
 
Texas Instruments Incorporated                                                      
20 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.4.2  Virtual Sectors for EEP1 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfVirtualSectorsEEP1 
 
 
Description 
Defines the number of Virtual Sectors used for 
EEP1.  
 
 
Generated configuration 
FEE_NUMBER_OF_VIRTUAL_SECTORS_EEP1 is 
set to the defined value. 
 
 
Default Value 
0x0 
 
 
Parameter Range 
Min : 0x0 Max : 
(FEE_NUMBER_OF_VIRTUAL_SECTORS-0x02) 
 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_cfg.h 
 
Note: FEE_NUMBER_OF_VIRTUAL_SECTORS_EEP1 should be configured as 
zero if FEE_NUMBER_OF_EEPS = 1. 
 
1.5  FEE functions 
1.5.1  FEE_GetVersionInfo 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeVersionInfoApi 
 
 
Description 
Indicates if the user can use the function 
Fee_GetVersionInfo(). 
 
 
Generated configuration 
FEE_VERSION_INFO_API is set to STD_ON if 
FeeVersionInfoApi is enabled else it is set to 
STD_OFF. 
 
 
Default Value 
STD_ON 
 
 
Parameter Range 
STD_ON / STD_OFF 
 
 
Parameter Type 
Boolean 
 
 
Target File 
Fee_cfg.h 
 
 
Texas Instruments Incorporated                                                      
21 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.6  FEE Sector Configuration 
Note: The structure definition Fee_VirtualSectorConfiguration in fee_cfg.c should 
be under the conditional compile check  
#if (FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC == STD_OFF). 
Projects need not configure below parameters when above macro is turned ON. 
1.6.1  FEE_VirtualSectorConfiguration 
 
 
Array Name 
FEE_VirtualSectorConfiguration 
Description  
Used to define a Virtual Sector 
 
Fee_VirtualSectorConfigType.  
Array Type  
This is a structure having the following members. 
 
 
 
Members 
FeeVirtualSectorNumber 
Virtual Sector's Number. 
EEPROM emulation is 
FeeFlashBank 
supported only on Bank 7 for 
F021 devices.. 
 
FeeStartSector 
Starting Sector in the Bank for 
this Virtual Sector. 
 
FeeEndSector 
Ending Sector in the Bank for 
this Virtual Sector. 
The configurations described in the following sections are repeated for each 
Virtual Sector. 
1.6.1.1  FEE_VirtualSectorNumber 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeSectorNumber 
 
 
Description 
Used to assign a number to the Virtual Sector. 
 
 
Generated configuration 
FeeVirtualSectorNumber is set to the value assigned 
to the symbolic name for the Virtual Sector. 
 
 
Default Value 

 
 
Parameter Range 
Min : 0x1,  Max : 0x4,For 
TMS570LS01227/TMS570LS1113 
 
Min : 0x1 Max : 16, For TMS570LS05xx, 
TMS570LS07xx, TMS570LS09xx 
 
 
Parameter Type 
uint16 
 
 
Texas Instruments Incorporated                                                      
22 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
 
Target File 
Fee_Cfg.c  
 
1.6.1.2  FEE_VirtualSectorBank 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeSectorBank 
 
 
Description 
Indicates the Flash Bank used by the Virtual Sector. 
All the Virtual Sectors should use the same Flash 
Bank. EEPROM emulation is supported only on 
Bank 7 for F021 devices. 
 
 
Generated configuration 
FeeFlashBank is set to the value assigned to 
FeeSectorBank.  
 
 
Default Value 
0x7 for F021 devices. 
 
 
Parameter Range 
Fixed to 0x7 for F021 devices. 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_Cfg.c 
1.6.1.3   FEE_VirtualSectorStart 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeSectorStart 
 
 
Description 
Indicates the Flash Sector in the Bank used by the 
Virtual Sector as the Start sector. 
 
 
Generated configuration 
FeeStartSector is set to the value assigned to 
FeeSectorStart. 
 
 
Default Value 
0x0 
 
 
Parameter Range 
Device specific, can use any Sector of the selected 
Flash Bank. Please refer to the device datasheet 
“Flash Memory Map” for more details. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_Cfg.c 
 
 
Texas Instruments Incorporated                                                      
23 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.6.1.4   FEE_VirtualSectorEnd 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeSectorEnd 
 
 
Description 
Indicates the Flash Sector in the Bank used by the 
Virtual Sector as the End sector. 
 
 
Generated configuration 
FeeEndSector is set to the value assigned to 
FeeSectorEnd. 
 
 
Default Value 
0x0 
 
 
Parameter Range 
Device specific, can use any Flash Sector of the 
selected Flash Bank. It should be greater than the 
FEE Start Sector. Please refer to the device 
datasheet “Flash Memory Map” for more details. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
24 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.6.2  Example Virtual Sector Configuration 
#if (FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC == STD_OFF) 
const Fee_VirtualSectorConfigType Fee_VirtualSectorConfiguration[] = 

    /* Virtual Sector 1 */ 
    { 
        1,     /* Virtual sector number */ 
        7,     /* Bank                     */ 
        0,     /* Start Sector          *//*(0, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
        0,     /* End Sector           *//*(3, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
    }, 
    /* Virtual Sector 2 */ 
    { 
        2,     /* Virtual sector number */ 
        7,     /* Bank                     */ 
        1,     /* Start Sector          *//*(4, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
        1,     /* End Sector           *//*(7, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
    }, 
    /* Virtual Sector 3 */   

        3,     /* Virtual sector number */ 
        7,     /* Bank                     */ 
        2,     /* Start Sector          *//*(8, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
        2,     /* End Sector           *//*(11, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
    }, 
    /* Virtual Sector 4 */ 
    { 
        4,     /* Virtual sector number */ 
        7,     /* Bank                     */ 
        3,     /* Start Sector          *//*(12, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
        3,     /* End Sector           *//*(15, For TMS570LS05xx, TMS570LS07xx, TMS570LS09xx)*/ 
    }, 
}; 
#endif 
 
 
 
 
 
 
 
 
 
 
Texas Instruments Incorporated                                                      
25 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.7  FEE Block Configuration 
1.7.1  FEE Block Configuration 
 
 
Array Name 
Fee_BlockConfiguration 
Description  
Used to define a block 
 
Fee_BlockConfigType. 
Array Type  
This is a structure with the following members. 
 
 
 
Members 
FeeBlockNumber 
Indicates Block's Number. 
 
 
FeeBlockSize 
Defines Block's Size in bytes. 
 
FeeImmediateData 
Indicates if the block is used 
for immediate data. 
Number of write cycles 
FeeNumberOfWriteCycles 
required for this block . 
FeeDeviceIndex 
Indicates the device index.  
Indicates the number of Datasets 
FeeNumberofDatasets 
for this Block. 
FeeEEPNumber 
Indicates the number of EEP. 
 
The configurations described in the following sections are repeated for each 
Block. 
1.7.1.1  FEE_BlockNumber 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeBlockNumber 
 
 
Description 
Assigns a number for the Block. 
 
 
Generated configuration 
FeeBlockNumber is set to a numeric value. It is 
equal to the BlockNumber. 
 
 
 
Default Value 

 
 
Parameter Range 
Min : 0x1 Max : 0xFFFE 
 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_Cfg.c 
 
 
Texas Instruments Incorporated                                                      
26 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.7.1.2  FEE_BlockSize  
Parameter defined in 
 
Fee_ParamDef.axml 
FeeBlockSize 
 
 
Description 
Indicates the size of the Block in bytes. 
 
 
Generated configuration 
FeeBlockSize is set to the value assigned to 
FeeBlockSize. 
 
 
Default Value 
0x008 
 
 
Parameter Range 
0x1 to 0xFFFE 
 
 
Parameter Type 
uint16 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
 
 
1.7.1.3  FEE_NumberOfWriteCycles 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeNumberOfWriteCycles 
 
 
Description 
Indicates the number of clock cycles required to write 
to a flash address location. 
 
 
Generated configuration 
FeeNumberOfWriteCycles is set to the value 
assigned to FeeNumberOfWriteCycles. 
 
 
Default Value 
0x1 
 
 
Parameter Range 
Device or core/flash tech dependent parameter. 
 
 
Parameter Type 
uint32 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
Texas Instruments Incorporated                                                      
27 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
 
1.7.1.4  FEE_UseImmediateData 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeImmediateData 
 
 
Description 
Indicates if the block is used for immediate data. 
 
 
Generated configuration 
FeeImmediateData is set to the value assigned to 
FeeImmediateData. 
 
 
Default Value 
FALSE 
 
 
Parameter Range 
TRUE / FALSE 
 
 
Parameter Type 
Boolean 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
1.7.1.5  FEE Device Index 
 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeDeviceIndex 
 
 
Description 
Indicates the device index. This will always be 0. 
 
 
Generated configuration 
FeeDeviceIndex is set to the value 0x0. 
 
 
Default Value 
0x0 
 
 
Parameter Range 
Fixed to 0x0. 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
 
Texas Instruments Incorporated                                                      
28 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.7.1.6  FeeNumberOfDataSets 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeDataset 
 
 
Description 
Indicates the number of Datasets for this particular 
Block . 
 
 
Generated configuration 
FeeNumberOfDataSets is set to the value assigned 
to FeeDataset. 
 
 
Default Value 
0x01 
 
 
Parameter Range 
0x1 to 0xFF 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
1.7.1.7 
FEE EEP Number 
 
 
Parameter defined in 
 
Fee_ParamDef.axml 
FeeEEPNumber 
 
 
Description 
Number indicating into which EEP does the block go. 
0 -- Block will be configured on EEP1. 1 -- Block will 
be configured on EEP2. 
 
 
Generated configuration 
FeeEEPNumber is set to the value assigned. 
 
 
Default Value 
0x0 
 
 
Parameter Range 
0x00/0x01 
 
 
Parameter Type 
uint8 
 
 
Target File 
Fee_Cfg.c 
 
 
 
 
Texas Instruments Incorporated                                                      
29 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
1.7.2  Example Block Configuration 
 
/* Block Configuration */ 
const Fee_BlockConfigType Fee_BlockConfiguration[] = 

    /* Block 1 */ 
    { 
        0x01,       
 /* Block number                  
*/ 
        0x0010,      
/* Block size                    
 
*/ 
        TRUE,      
 /* Block immediate data used  
 */ 
        0x00000064,   /* Block number of write cycles   */ 
        0,            
 /* Device Index                   
*/ 
        1, 
 
/* Number of DataSets 
 
*/ 
        0  
 
/* EEP number 
 
 
*/ 
    }, 
    /* Block 2 */ 
    { 
        0x02,        
/* Block number                   
*/ 
        0x000B,      
/* Block size                   
 
 */ 
        TRUE,       
/* Block immediate data used      */ 
        0x00000064,   /* Block number of write cycles   */ 
        0,            
/* Device Index                   
 */ 
        1, 
 
/* Number of DataSets 
 
*/ 
        1  
 
/* EEP number 
 
 
*/ 
    }, 
    /* Block 3 */ 
    { 
        0x03,        
/* Block number                   
*/ 
        0x000B,      
/* Block size                   
 
 */ 
        TRUE,       
/* Block immediate data used      */ 
        0x00000064,   /* Block number of write cycles   */ 
        0,            
/* Device Index                   
 */ 
        1, 
 
/* Number of DataSets 
 
*/ 
        1  
 
/* EEP number 
 
 
*/ 
    }, 
    
    /* Block 4 */ 
    { 
        0x04,        
/* Block number                   
*/ 
        0x000B,      
/* Block size                   
 
 */ 
        TRUE,       
/* Block immediate data used      */ 
        0x00000064,   /* Block number of write cycles   */ 
 
 
Texas Instruments Incorporated                                                      
30 
 


     
                                                                            AutoSAR FEE Parameter Configuration (Rev 1.8)   
 
 
        0,            
/* Device Index                   
 */ 
        1, 
 
/* Number of DataSets 
 
*/ 
        0  
 
/* EEP number 
 
 
*/ 
    }, 
}; 
1.8 
Header Files 
 
The following header files are included in the files generated by the Code 
Generation Tool. 
1.8.1 
Header Files for Fee_cfg.h 
The following files are included in Fee_cfg.h 
1.  MemIf_Types.h 
1.8.2 
Header Files for Fee_cfg.c 
The following files are included in Fee_cfg.c 
1.  Fee.h 
2.  Fee_Cbk.h 
3.  SchM_Fee.h 
 
This file should also include version check as following: 
 
#if (FEE_AR_MAJOR_VERSION != 0x03) 
    #error Fee_Cfg.c: FEE_AR_MAJOR_VERSION of Fee.h is incompatible. 
#endif /* FEE_AR_MAJOR_VERSION */ 
#if (FEE_AR_MINOR_VERSION != 0x00) 
    #error Fee_Cfg.c: FEE_AR_MINOR_VERSION of Fee.h is incompatible. 
#endif /* FEE_AR_MINOR_VERSION */ 
#if (FEE_AR_PATCH_VERSION != 0x01) 
    #error Fee_Cfg.c: FEE_AR_PATCH_VERSION of Fee.h is incompatible. 
#endif /* FEE_AR_PATCH_VERSION */ 
#if (FEE_SW_MAJOR_VERSION != 1) 
    #error Fee_Cfg.c: FEE_SW_MAJOR_VERSION of Fee.h is incompatible. 
#endif /* FEE_SW_MAJOR_VERSION */ 
#if (FEE_SW_MINOR_VERSION != 20) 
    #error Fee_Cfg.c: FEE_SW_MINOR_VERSION of Fee.h is incompatible. 
#endif /* FEE_SW_MINOR_VERSION */ 
#if (FEE_SW_PATCH_VERSION != 0) 
    #error Fee_Cfg.c: FEE_SW_PATCH_VERSION of Fee.h is incompatible. 
#endif /* FEE_SW_PATCH_VERSION */ 
 
 
Texas Instruments Incorporated                                                      
31 
 

4 - AutoSAR FEE User Guide

AutoSAR F021 FEE User's Guide

6 - AutoSAR FEE User Guides

 
AutoSAR FEE Driver 
 
 
 

Us 
er's Guide
 
                User Manual 
 
 
 
 
 
 
 
Version 1.14 
 
Aug05, 2016 
 
Copyright  Texas Instruments Incorporated 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Read This First 
 

 
 
IMPORTANT NOTICE 
 
Texas Instruments and its subsidiaries (TI) reserve the right to make changes to their products or to 
discontinue any product or service without notice, and advise customers to obtain the latest version of 
relevant information to verify, before placing orders, that information being relied on is current and 
complete. All products are sold subject to the terms and conditions of sale supplied at the time of order 
acknowledgment, including those pertaining to warranty, patent infringement, and limitation of liability. 
TI warrants performance of its products to the specifications applicable at the time of sale in 
accordance with TI’s standard warranty. Testing and other quality control techniques are utilized to the 
extent TI deems necessary to support this warranty. Specific testing of all parameters of each device is 
not necessarily performed, except those mandated by government requirements. 
Customers are responsible for their applications using TI components. 
In order to minimize risks associated with the customer’s applications, adequate design and operating 
safeguards ought to be provided by the customer so as to minimize inherent or procedural hazards. 
TI assumes no liability for applications assistance or customer product design. TI does not warrant or 
represent that any license, either express or implied, is granted under any patent right, copyright, mask 
work right, or other intellectual property right of TI covering or relating to any combination, machine, or 
process in which such products or services might be or are used. TI’s publication of information 
regarding any third party’s products or services does not constitute TI’s approval, license, warranty or 
endorsement thereof. 
Reproduction of information in TI data books or data sheets is permissible only if reproduction is without 
alteration and is accompanied by all associated warranties, conditions, limitations and notices.  
Representation or reproduction of this information with alteration voids all warranties provided for an 
associated TI product or service  is an unfair and deceptive business practice, and TI is neither 
responsible nor liable for any such use. 
Resale of TI’s products or services with statements different from or beyond the parameters stated by 
TI for that product or service voids all express and any implied warranties for the associated TI product 
or service, is an unfair and deceptive business practice, and TI is not responsible nor liable for any such 
use. 
Also see: Standard Terms and Conditions of Sale for Semiconductor Products.  
www.ti.com/sc/docs/stdterms.htm 
Mailing Address: 
Texas Instruments 
Post Office Box 655303 
Dallas, Texas 75265 
 
Copyright © 2012, Texas Instruments Incorporated 
 
 
 
 
 
 
 
 
 
 
 
 

 


Preface 
Read This First 
 
About This Manual 
This  user  manual serves as a software programmer’s handbook for working with the 
AutoSAR FEE Driver.  It  provides necessary information regarding how to build and use AutoSAR 
FEE Driver in user systems and applications.  
It also provides details regarding the AutoSAR FEE Driver functionality, the requirements it 
places on the hardware and software environment where it can be deployed, how to customize/ 
configure it etc. It also provides supplementary information regarding steps to be followed for proper 
installation/ un-installation of the AutoSAR FEE Driver.  
 
Important Notes 
Customers have to include F021 API library  v2.01.01 or greater. 
Abbreviations 
 
1-1.  Table of Abbreviations 
 
Abbreviation 
Description 
AutoSAR FEE Driver 
This is TI coined name for the product. 
FEE 
Flash EEPROM Emulation 
 
 
 3 
 

Read This First 
 

 
 
Document Revision History  
 
Version 
Date 
Revision History 
1.0 
09/25/2012 
Initial version 
1.1 
11/08/2012 
Changes for EA2 
1.2 
11/21/2012 
Additional changes for BETA 
1.3 
12/12/2012 
Add error recovery prototypes 
1.4 
06/11/2013 
Add software revision history. Added new 
configuration tags information. 
1.5 
10/23/2013 
Updated software revision history. 
1.6 
01/03/2014 
Add new configuration parameter for  
address range check for Read/Write. 
Check for Multi bit error during Read. 
MISRA fixes. 
1.7 
09/11/2014 
Manual Suspend/Resume feature added. 
1.8 
10/15/2014 
RAM Optimization changes. 
1.9 
10/31/2014 
Support TMS570LS05xx, TMS570LS07xx, 
TMS570LS09xx. Range updated for 
FEE_VirtualSectorNumber, Virtual Sectors 
1.10 
01/21/2015 
Changes related to unification of Archer and 
Champion. 
1.11 
10/14/2015 
Bugfix for block lost issue. 
1.12 
11/20/2015 
Enhancement for “Do not change FEE state 
to IDLE after copying of the blocks is 
completed” 
1.13 
03/15/2016 
Bugfix for “Block offset address does not get 
updated correctly, if copy operation was 
interrupted.” Added section “Important Notes” 
1.14 
08/05/2016 
Updated software revision history. 
 
Software Revision History  
 
Version 
Date 
Revision History 
00.01.00 
08/31/2012 
Initial version 
 


00.01.01 
10/29/2012 
Changes for implementing Error Recovery 
00.01.02 
11/30/2012 
Misra Fixes, Memory segmentation changes 
00.01.03 
01/14/2013 
Changes as requested by Vector. If there is an immediate 
erase/invalidate block  request before writing of a block ,  
API should return the job status as JOB_OK. 
00.01.04 
02/12/2013 
Integration issues fix.  Fixed issues regarding integration of 
FEE with NvM. 
00.01.05 
03/04/2013 
Added Deleting a block feature 
00.01.06 
03/11/2013 
Added feature : copying of unconfigured blocks. 
00.01.07 
03/15/2013 
Added feature : Number of 8 bytes writes, fixed issue with 
copy blocks. 
00.01.08 
04/05/2013 
Added feature : CRC check for unconfigured  blocks, Main 
function modified to complete writes as fast as possible, 
Added Non polling mode support. 
00.01.09 
04/19/2013 
Warning removal, Added feature comparison of data 
during write. 
00.01.10 
06/11/2013 
Fixed issue with erase sector. Also fixed issue with 2 
EEPROM’s where if one EEPROM is locked with error 
condition, other EEPROM will not get locked. 
01.10.00 
10/23/2013 
Updated software to support more than two VS. 
01.20.00 
01/03/2014 
Add new configuration parameter for address range check 
for Read/Write. 
Check for Multi bit error during Read. 
MISRA fixes. 
01.20.01 
09/11/2014 
Manual Suspend/Resume feature added. 
01.21.00 
10/15/2014 
RAM Optimization changes. New configuration parameter 
FEE_TOTAL_BLOCKS_DATASETS added. 
01.22.00 
01/21/2015 
Add new Configuration parameters. 
FEE_VIRTUALSECTOR_SIZE, 
FEE_PHYSICALSECTOR_SIZE,  
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC 
 
01.23.00 
10/14/2015 
Bugfix for block lost issue. 
01.23.01 
11/20/2015 
Enhancement for “Do not change FEE state to IDLE after 
copying of the blocks is completed” 
01.23.02 
03/15/2016 
Bugfix for “Block offset address does not get updated 
correctly, if copy operation was interrupted.” 
 
 5 
 

Read This First 
 

 
 
01.23.03 
08/05/2016 
Fee_Getstatus API should return MEMIF_BUSY, if FEE is 
doing internal operations. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


Contents 
 
Read This First ................................................................................................................... 3 
Contents ............................................................................................................................... 7 
Table of tables .................................................................................................................... 9 
Table of figures ................................................................................................................. 10 
Chapter 1 ............................................................................................................................ 11 
AutoSAR FEE Driver Introduction ............................................................................... 11 
1.1 
Overview ................................................................................................. 12 
1.1.1 
Functions supported in the AutoSAR FEE Driver ............................ 12 
1.1.2 
System Requirements ..................................................................... 13 
Chapter 2 ............................................................................................................................ 14 
AutoSAR FEE Driver Design Overview ...................................................................... 14 
Overview ........................................................................................................... 14 
2.1 
Flash EEPROM Emulation Methodology ................................................ 15 
2.1.1 
Virtual Sector Organization .............................................................. 15 
2.1.2 
Data Block Organization .................................................................. 18 
2.1.3 
Available Commands ....................................................................... 20 
2.1.4 
Status Codes ................................................................................... 20 
2.1.5 
Job Result........................................................................................ 20 
Chapter 3 ............................................................................................................................ 21 
Integration Guide ............................................................................................................. 21 
3.1 
Error Recovery Implementation .............................................................. 21 
3.2 
Single and Double bit Error Corrections ................................................. 22 
3.3 
Memory Mapping .................................................................................... 22 
3.4 
Symbolic Constants and Enumerated Data types .................................. 23 
3.5 
Data Structures ....................................................................................... 26 
3.6 
AutoSAR FEE Driver Configuration Parameters ..................................... 27 
3.6.1 
Block Overhead ............................................................................... 27 
3.6.2 
Maximum Blocking Time ................................................................. 27 
3.6.3 
Page Overhead ............................................................................... 27 
3.6.4 
Sector  Overhead ............................................................................ 27 
3.6.5 
Virtual Page Size ............................................................................. 28 
3.6.6 
Driver Index ..................................................................................... 28 
3.6.7 
Job Error Notification ....................................................................... 28 
 
 7 
 

Contents 
 

 
 
3.6.8 
Job End  Notification ........................................................................ 28 
3.6.9 
FEE Operating Frequency................................................................ 29 
3.6.10 
Polling Mode .................................................................................... 29 
3.6.11 
Enable Error Correction ................................................................... 29 
3.6.12 
Error Correction Handling................................................................. 30 
3.6.13 
Block Write Counter Save ................................................................ 30 
3.6.14 
Enable CRC ..................................................................................... 30 
3.6.15 
NumberOfEEPs ................................................................................ 30 
3.6.16 
Number of Blocks ............................................................................. 31 
3.6.17 
Number of Virtual Sectors ................................................................ 31 
3.6.18 
Number of Virtual Sectors on EEP1 ................................................. 31 
3.6.19 
Number of Eight Byte Writes ............................................................ 31 
3.6.20 
Maximum Number of non configured blocks to copy ........................ 32 
3.6.21 
Address Range check during Read/Write ........................................ 32 
3.6.22 
Number of blocks and Data Sets ...................................................... 32 
3.6.23 
Generate Device and Virtual Sector Structures ................................ 32 
3.6.24 
Required Virtual Sector Size ............................................................ 33 
3.6.25 
FEE bank Physical Sector Size ........................................................ 33 
3.6.26 
Virtual Sector Configuration ............................................................. 34 
3.6.27 
Block Configuration .......................................................................... 36 
3.7 
API Classification .................................................................................... 40 
3.7.1 
Initialization ...................................................................................... 40 
3.7.2 
Data Operations ............................................................................... 40 
3.7.3 
Information ....................................................................................... 41 
3.7.4 
Internal Operations ........................................................................... 41 
3.7.5 
Cancel/ Terminate Operations ......................................................... 41 
3.7.6 
Error Information and Recovery Operations ..................................... 41 
3.7.7 
Suspend/Resume Erase Sector ....................................................... 42 
3.8 
Integration Example ................................................................................ 43 
3.9 
API Specification ..................................................................................... 44 
3.9.1 
AutoSAR FEE Driver Functions ....................................................... 44 
3.10  Privilege Mode access ............................................................................ 53 
3.11  Deviations from Autosar3.x requirements ............................................... 53 
3.12  Important Notes ....................................................................................... 53 

 
 
 
 
 
 
 


Table of tables 
 
 
1-1.  Table of Abbreviations ............................................................................................ 3 
Document Revision History ............................................................................................ 4 
Software Revision History ............................................................................................... 4 
2-1.  Virtual Sector Header States ............................................................................... 17 
2-2.  Virtual Sector Header backup States ....................................................................... 17 
4.  Data Block Header Field Definitions ..................................................................... 19 
2-2.  Data Block Header Field Definitions .................................................................. 19 
5.  Data Block States ....................................................................................................... 19 
4-1.  AutoSAR FEE Driver Symbolic Constants ....................................................... 25 
4-2.  AutoSAR FEE Driver Published Information Data Structure ...................... 26 
4-3.  AutoSAR FEE Driver General Configuration Data Structure ...................... 26 
4-4.  AutoSAR FEE Driver Initialization APIs ............................................................ 40 
4-5.  AutoSAR FEE Driver Data Operation APIs ...................................................... 40 
4-6.  AutoSAR FEE Driver Information APIs ............................................................. 41 
4-7.  AutoSAR FEE Driver Internal Operation APIs ................................................. 41 
4-8.  AutoSAR FEE Driver Terminate/Cancel Operation APIs .............................. 41 
4-9.  AutoSAR FEE Driver Error Info and Recovery APIs ......................................... 41 
4-10.  TI FEE Driver Suspend/Resume Erase Sector APIs .................................... 42 
 
 
 
 9 
 

Table of figures 
 

 
 
Table of figures 
  
Figure 1 Virtual Sector Organization ...................................................................... 16 
Figure 2 Virtual Sector Header .............................................................................. 17 
Figure 3 Data Block Structure ................................................................................ 18 
 
 
 
 
10 

Chapter 1 
AutoSAR FEE Driver Introduction 
 
This chapter introduces the AutoSAR FEE Driver to the user by providing a brief overview of 
the purpose and construction of the AutoSAR FEE Driver along with hardware and software 
environment specifics in the context of AutoSAR FEE Driver deployment. 
 
 
 11 
 

AutoSAR FEE Driver Introduction 
 
 
  
 
1.1  Overview  
This section describes the functional scope of the AutoSAR FEE Driver and its feature set. It 
introduces the AutoSAR FEE Driver to the user along with the functional decomposition and 
run-time specifics regarding deployment of AutoSAR FEE Driver in user’s application. 
Many applications require storing small quantities of system related data (e.g., calibration 
values, device configuration) in a non-volatile memory, so that it can be used, modified or 
reused even after power cycling the system. EEPROMs are primarily used for this purpose. 
EEPROMs have the ability to erase  and  write  individual bytes of memory many times over 
and the programmed locations retain the data over a long period even when the system is 
powered down.  
The objective of  AutoSAR FEE Driver  is to provide a set of software functions intended to 
use a Sector of on-chip Flash memory as the emulated EEPROM. These software functions 
are transparently used by the application program for writing, reading and modifying the data. 
The  AutoSAR FEE Driver  contains AutoSAR interface functions and any additional 
management functions needed to operate properly.  
A list of functions supported by the AutoSAR FEE Driver can be found in Section 1.1.1.  The 
primary function responsible for Fee management is the function Fee_Manager.  This 
function shall operate asynchronously and with little or no user intervention after 
configuration, maintaining the Fee structures in Flash memory.  When using the AutoSAR 
interface,  Fee_MainFunction  function will be called on a cyclic basis  which  in turn  calls 
Fee_Manager  when no other pending Fee operations are pending.  When not using the 
AutoSAR interface, the user shall be responsible for calling Fee_MainFunction function on a 
cyclic basis so that it can perform internal operations. 
1.1.1 
Functions supported in the AutoSAR FEE Driver 
The Autosar FEE Driver provides the following functional services: 
Initialization: 
• 
Fee_Init  
       
Operations: 
• 
Fee_Write 
• 
Fee_Read 
• 
Fee_EraseImmediateBlock 
• 
Fee_InvalidateBlock 
• 
Fee_Cancel 
Information: 
• 
Fee_GetStatus  
• 
Fee_GetJobResult 
• 
Fee_GetVersionInfo 
Internal Operations: 
• 
Fee_MainFunction 
 
12 

Error Information and Recovery: 
• 
TI_FeeErrorCode 
• 
TI_Fee_ErrorRecovery 
Suspend/Resume Erase of Sector: 
• 
TI_Fee_SuspendResumeErase 
1.1.2  System Requirements 
The AutoSAR FEE Driver is supported on platforms characterized by the following Software 
and Hardware requirements. 
1.1.2.1 
Software 
The  AutoSAR FEE Driver  was developed and validated on a system with the following 
operating system and software installed 
• 
Operating System : Win7 
• 
Codegeneration tools : TM570 Code Generation tools 4.9.5 
• 
Fee Configuration Files : The user needs to generate two configuration files using  
a  configuration  tool  to successfully deploy and use AutoSAR FEE Driver.  These 
two files (Fee_Cfg.h & Fee_Cfg.c) define which Flash sectors to be used for 
EEPROM emulation, define Data Blocks ,Block Size and other configuration 
parameters.  
• 
Flash API library : The AutoSAR FEE Driver  uses the Flash API library for 
performing program/erase operations.  Customers have to use  F021 v2.01.01  or 
greater. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 13 
 

AutoSAR FEE Driver Design Overview 
 
 
  
 
Chapter 2 
AutoSAR FEE Driver Design 
Overview 
 
Overview  
The Flash EEPROM Emulation (Fee) module contains AutoSAR interface functions and 
additional management functions needed to operate it  properly.  A list of functions 
supported by the AutoSAR FEE Driver can be found in Section 1.1.1.   
This chapter describes the implementation method followed for Flash EEPROM emulation 
in the AutoSAR FEE Driver. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14 

2.1  Flash EEPROM Emulation Methodology 
The EEPROM Emulation Flash bank is divided into two or more Virtual Sectors. Each Virtual 
Sector is further partitioned into several Data Blocks.  Data Blocks can be further partitioned 
into Datasets. A minimum of two Virtual Sectors are required for Flash EEPROM emulation.  
The initialization routine (Fee_Init) identifies which Virtual Sector to be used and marks it as 
Active. The data is written to the first empty  location in the Active Virtual Sector. If there is 
insufficient space in the current Virtual Sector to update the data, it switches over to the next 
Virtual Sector and copies all the valid data from the other Data Blocks in the current Virtual 
Sector to the new one. After copying all the valid data, the current Virtual Sector is erased 
and the new one is marked as Active Virtual Sector. Any new data is now written into the new 
Active Virtual Sector and the erased Virtual Sector is used again once this new Virtual Sector 
has insufficient space. 
Virtual Sectors and Data Blocks have certain space allocated to maintain the status 
information which is described in more detail in the following sections. 
2.1.1  Virtual Sector Organization 
The Virtual Sector Structure is the basic organizational unit used to partition the EEPROM 
Emulation  Flash  Bank.  This structure can contain one or more contiguous Flash Sectors 
contained within one Flash Bank.  A minimum of 2 Virtual Sectors are required to support 
the Flash EEPROM Emulation (FEE) Driver. 
The internal structure of the Virtual Sector contains a Virtual Sector Header, a static Data 
Structure and the remaining space is used for Data Blocks. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 15 
 

AutoSAR FEE Driver Design Overview 
 
 
  
 
 
Virtual Sector Organization 
 

Virtual Sector Header
Block 3
Block 5 DS4
… Block n
Block n
Block 3
Block 3
Block 5 DS3
Block 0
Block 1 DS2
Block 3
Block 2
Virtual
Sector
Block 5 DS4
Block X
0
Block X
Block X
Block X
Block n
Block X
Block 3
Block 5 DS3
Block 2
Block n
Virtual Sector Header
Block n
Block5 DS3
… Block 3
Block 1 DS2
Block 2
Block n
Block 5 DS4
Block 5 DS3
Virtual
Sector
Block X
1
Block X
Block X
Block X
Block X
Block X
 
 
 
 
 
Figure 1 Virtual Sector Organization 
 
16 

2.1.1.1 
Virtual Sector Header 
 
The Virtual Sector Header consists of two 64bit words (16 bytes) that start at the first 
address for a Virtual Sector Structure.  The state of the Virtual Sector Structure is 
maintained in the Virtual Sector Header. 
 
The Status Word is the first 64 bit word of the Virtual Sector Header and is used to 
indicate the current state of the Virtual Sector. 
 
 
 
64 bit Status Word 
 
 32 bit backup 
Erase Count 
Version Number          
 Status   
          8 bits reserved 
(20 bits) 
(4 Bits) 
 
Figure 2 Virtual Sector Header 
 
 
The following table indicates the various states a Virtual Sector can be in. 
 
State 
Value 
Invalid Virtual Sector 
0xFFFFFFFFFFFFFFFF 
Empty Virtual Sector 
0x0000FFFFFFFFFFFF 
Copy Virtual Sector 
0x00000000FFFFFFFF 
Active Virtual Sector 
0x000000000000FFFF 
Ready for Erase 
0x0000000000000000 
2-1.  Virtual Sector Header States 
 
Invalid Virtual Sector:  This Virtual Sector is either in process of being erased or has 
not yet been initialized. 
 
Empty Virtual Sector:  This indicates the Virtual Sector has been erased and 
initialized and can be used to store data. 
 
Copy Virtual Sector:   This indicates that the Data Block Structure is being moved 
from a full Virtual Sector to this one to allow for moving of the Active Virtual Sector. 
 
Active Virtual Sector:  This Virtual Sector is the active one. 
 
Ready for Erase:   This Virtual Sector’s Data Block Structure has been correctly 
replicated to a new Virtual Sector and is now ready to be erased and initialized for re-
use.Virtual Sector Information Record  is the second 64 bit word in the Virtual Sector 
header. It is used to record information needed by the Virtual Sector management 
algorithm.  Currently the first 4 bits are used to indicate the current version of the Virtual 
Sector and the next 20 bits are used to indicate the number of times the Virtual Sector 
has been erased. The erase count is incremented each time the Virtual Sector is 
erased. The remaining bits are reserved for future use. 
 
 
State 
Value 
Copy Virtual Sector 
0xFFFFFFFF 
Active Virtual Sector 
0x00000000 
2-2.  Virtual Sector Header backup States 
 
 17 
 

AutoSAR FEE Driver Design Overview 
 
 
  
 
 
If the normal Virtual sector header is corrupted, then the backup status will be used to 
know the VS state. 
 
After VS header, the next 8 bytes are used to know erase status of the VS. It says, if the 
erase was started/completed/ready for erase. Next 8 bytes are reserved. 
0x 0000FFFFFFFFFFFF – Erase of other VS started 
0x 00000000FFFFFFFF – Erase of other VS completed 
0x000000000000FFFF   – This VS is ready for Erase. 
2.1.2 
Data Block Organization 
 
The Data Block is used to define where the data within a Virtual Sector is mapped.  
One or more variables can be within a Data Block based on the user definition.  The 
smallest amount of data that can be stored within the Data Block is 64 bits. The Data 
Block Structure is limited to the size of the Virtual Sector it resides in.  
Note: The size of all the Data Blocks cannot exceed the Virtual Sector length. 
 
When a Data Packet write exceeds the available space of the current Virtual Sector, 
the Data Block structure is duplicated in the next Virtual Sector to be made active. 
 
Data Block Structure 
 
Block5 
Dataset2 
Block5 
Dataset6 
Block1 
Dataset2 
Block3 
Dataset1 
Header 
Header 
Header 
Header 
Block4 
Dataset4 
Block2 
Dataset2 
Block1 
Dataset8 
Block2 
Dataset3 
Header 
Header 
Header 
Header 
 
Figure 3 Data Block Structure 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18 

2.1.2.1 
Data Block Header 
 
The Data Block Header is  24  bytes in length and is used to indicate the location 
information (address) of valid data within a Virtual Sector.  
 
A Standard Data Block Header has the following fields 
  
 
 
 
 
Block Number (16 bits)   
 
                Block size (16 bits) 
 
 

Block W/E Cycle count - optional (32 bits) / reserved if saving not enabled 
 
 
 

CRC - optional (32 bits) 
 
 
 

 
 
 
Address of previous Valid Block (32 bits) 
 
 

 
 
 
 
Block St
 S atus (64 bits) 
 
 
 
4.  Data Block Header Field Definitions 
 
A Standard Data Block Header has the following fields 
Bit(s) 
Field 
Description 
191-176 
Block Number 
This is used to indicate the block number. 
175-160 
Block size 
Indicates size of block 
159-128 
W/E counter 
Indicates write/erase counter for a block 
127-96 
CRC 
Indicates CRC of block 
95-64 
Address 
Address of the previous valid block 
 
 
Status of the 
These 64 bits indicate the Status of the Block. The 
63-0 
Block   
following Table lists all the possible combinations for the 
 
Block Status. 
2-2.  Data Block Header Field Definitions 
 
 

State 
Value 
Empty Block  
0xFFFFFFFFFFFFFFFF 
Start Program Block 
0xFFFFFFFFFFFF0000 
Valid Block 
0xFFFFFFFF00000000 
Invalid Block 
0xFFFF000000000000 
Corrupt Block 
0x0000000000000000 
5.  Data Block States 
 
Block Status is used to ensure that data integrity is maintained even if the Block (data) 
update process is interrupted by an uncontrolled event such as a power supply failure or 
reset. 
 
Empty Block:  New Data can be written to this Block. 
 
 19 
 

AutoSAR FEE Driver Design Overview 
 
 
  
 
 
Start Program Block:  This indicates that the Data Block is in the progress of being 
programmed with data. 
 
Valid Block:  This indicates that the Data Block is fully programmed and contains Valid 
Data. 
 
Invalid Block:  This indicates that the Data Block contains invalid or old data. 
 
Corrupt Block:   This indicates that the Data Block is corrupted and the Software should 
ignore this Block. 
 
2.1.3  Available Commands 
 
The following list describes the available commands.  
1. 
Write: This command shall program a Flash memory block. 
2. 
Read: This command shall copy a continuous Flash memory block. 
3. 
Erase Immediate: This command shall change the status of the block to Invalid in 
the Data Block header to Erase it. 
4. 
Invalidate Block: This command shall change the status of the block to Invalid in 
the Data Block header to invalidate it. 
 
2.1.4  Status Codes 
This indicates the status of the Fee module. It can be in one of the following states 
1. MEMIF_UNINIT:  The Fee Module has not been initialized. 
2. MEMIF_IDLE: The Fee Module is currently idle. 
3. MEMIF_BUSY: The Fee Module is currently busy. 
4. MEMIF_BUSY_INTERNAL: The Fee Module is currently busy with internal  
   management operations 
 
2.1.5  Job Result 
This indicates the result of the last job. The job result can be any one of the following 
states 
1. MEMIF_JOB_OK: The last job has finished successfully 
2. MEMIF_JOB_PENDING:    The last job is waiting for execution or is currently being      
    executed. 
3. MEMIF_JOB_CANCELLED: The last job has been cancelled.   
4. MEMIF_JOB_FAILED:  The last read/erase/write job failed. 
5. MEMIF_JOB_INCONSISTENT: The requested block is inconsistent, it may contain  
    corrupted data. 
6. MEMIF_JOB_INVALID: The requested block has been invalidated.  The requested  
    read operation cannot be performed 
 
 
 
 
 
 
20 

Chapter 3 
Integration Guide 
 
This chapter discusses the AutoSAR FEE Driver  run-time interfaces that comprise the API 
classification & usage scenarios and the API specification itself in association with its data types 
and structure definitions.  Users will have to integrate TI FEE along with the Flash F021 library. 
The  TI FEE Driver  uses the Flash API library for performing program/erase operations. The  
apprioprate Flash API library depending on the type of Flash technology has to be included in 
the.(F021 API V2.01.01 or greater). Users also need to integrate the generated configuration files. 
3.1  Error Recovery Implementation  
Projects should implement error recovery mechanism to recover from serious errors. They 
should call the API TI_FeeErrorCode( ) periodically to check if there are any severe 
errors(Error_TwoActiveVS, Error_TwoCopyVS, Error_SetupStateMachine, Error_NoActiveVS, 
Error_CopyButNoActiveVS, Error_NoFreeVS, Error_EraseVS
). If error is any of the above type, 
then API TI_Fee_ErrorRecovery( ) should be called with proper parameters.  
If the error is of type Error_TwoActiveVS or  Error_TwoCopyVS or 
Error_CopyButNoActiveVS, then the application has to provide info on  which of the VS needs to be 
corrected in u8VirtualSector. TI_Fee_u16ActCpyVS will provide info on which of the VS’s are 
Active/Copy. For error of type Error_CopyButNoActiveVS, TI_Fee_u16ActCpyVS will provide info 
on which VS is Copy. In this case, the second argument for the TI_Fee_ErrorRecovery should be 
the copy VS number. Error recovery API will mark the VS as Active. 
If the error is of type Error_NoFreeVS, then the application has to provide info on which of 
the VS needs to be erased in u8VirtualSector. TI_Fee_u16ActCpyVS will provide info on which VS 
is active. 
If the error is of type Error_SetupStateMachine, recheck configuration. Configure RWAIT, 
EWAIT and operating frequency correctly. 
If the error is of type Error_EraseVS, this means either erasing or a blank check of VS failed. 
Call error recovery function to perform erase again. Check the variables 
TI_Fee_GlobalVariables[u8EEPIndex].Fee_u16ActiveVirtualSector / 
TI_Fee_GlobalVariables[u8EEPIndex].Fee_u16CopyVirtualSector to know which of the VS’s are 
active/copy. Erase other sectors. 
Application can access the variable “TI_Fee_u16ActCpyVS” to know details about the VS’s.  
Prototype for the API’s are: 
TI_Fee_ErrorCodeType TI_FeeErrorCode(uint8 u8EEPIndex); 
void TI_Fee_ErrorRecovery(TI_Fee_ErrorCodeType Error Code, uint8 u8VirtualSector); 
If two EEPROM’s are configured, then TI_FeeErrorCode has to be called cyclically with different 
index. 
Ex: TI_FeeErrorCode(0) and TI_FeeErrorCode(1) 
 
 21 
 

Integration Guide 
 
 
  
 
If Error is of type Error_TwoActiveVS and TI_Fee_u16ActCpyVS = 0x0003, this means VS 1 and 2 
are Active. 
If projects want to make VS 1 as Active, then  
Call  TI_Fee_ErrorRecovery(Error_TwoActiveVS, 2); 
Virtual sector 2 will be marked as Ready for Erase. 
Virtual sector numbers start from 1. 
3.2  Single and Double bit Error Corrections  
FEE software provides a mechanism to detect single and double bit errors.  In order to use 
this feature, application has to make sure that  “EE_EDACMODE[3:0]: Error Correction Mode” 
in “EE_CTRL1”  should be set to a value other than 0101,  “EE_ONE_EN: Error on One Fail 
Enable”  
should be enabled, “EE_ZERO_EN: Error on Zero Fail Enable” should be enabled, 
EE_EDACEN[3:0]: Error Detection and Correction Enable” should be set to a value other 
than 0101. 
Projects have to then call error hook functions TI_Fee_ErrorHookSingleBitError (  )  and 
TI_Fee_ErrorHookDoubleBitError (  )  in ESM.  For single bit error, an event is generated on 
channel 35 of ESM and for double bit error on channel 36 of ESM. 
 
3.3  Memory Mapping 
Following macros can be used for reallocating code, constants and variables. 
•  FEE_START_SEC_CONST_UNSPECIFIED 
•  FEE_STOP_SEC_CONST_UNSPECIFIED 
•  FEE_START_SEC_CODE 
•  FEE_STOP_SEC_CODE 
•  FEE_START_SEC_VAR_INIT_UNSPECIFIED 
•  FEE_STOP_SEC_VAR_INIT_UNSPECIFIED 
 
22 

3.4  Symbolic Constants and Enumerated Data types 
This section summarizes all the symbolic constants specified as either 
#define macros and/or enumerated C data types. Described alongside the 
macro or enumeration is the semantics or interpretation of the same in 
terms of what value it stands for and what it means. 
 
Group or Enumeration Class 
Symbolic Constant Name 
Description or 
Evaluation 
Fee_StatusType 
FEE_OK 
Function returned no 
error 
FEE_ERROR 
Function returned an 
error 
 
VsState_Invalid =1 
Virtual Sector is Invalid 
VirtualSectorStatesType 
VsState_Empty =2 
Virtual Sector is Empty 
VsState_Copy =3 
Virtual Sector is Copy 
VsState_Active =4 
Virtual Sector is Active 
VsState_ReadyForErase =5 
Virtual Sector is Ready 
for Erase 
 
Block_StartProg=1 
Write/Erase/Invalid 
 
operation is in progress 
 
on this Block  
BlockStatesType 
Block_Valid=2 
Block is Valid 
Block_Invalid=3 
Block is Invalid 
 
Error_Nil=0 
 
 
Error_TwoActiveVS=1 
 
 
Error_TwoCopyVS=2 
 
 
Error_SetupStateMachine=3 
 
 
Error_CopyButNoActiveVS=4 
 
 
Error_NoActiveVS=5 
 
 
Error_BlockInvalid=6 
 
Fee_ErrorCodeType 
Error_NullDataPtr=7 
 
Error_NoFreeVS=8 
 
Error_InvalidVirtualSectorPara
 
meter=9 
 
 23 
 

Integration Guide 
 
 
  
 
Error_ExceedSectorOnBank=1
 

Error_EraseVS=11 
 
Error_BlockOffsetGtBlockSize
 
=12 
Error_LengthParam=13 
 
Error_FeeUninit=14 
 
Error_Suspend=15 
 
Error_InvalidBlockIndex=16 
 
Error_NoErase=17 
 
Error_CurrentAddress=18 
 
Error_Exceed_No_Of_DataSet
 
s=19 
 
Fee_None 
Take no action on single 
bit errors 
Fee_FlashErrorCorrectionActionType 
Fee_Fix 
Correct single bit errors 
 
MEMIF_UNINIT 
FEE Module is 
Uninitialized 
 
MEMIF_IDLE 
FEE Module is Idle 
Fee_StatusCodeType 
MEMIF_BUSY 
FEE Module is Busy 
MEMIF_BUSY_INTERNAL 
FEE Module is 
performing internal 
operations 
 
Erase 
If  set to ‘1’ indicates 
Erase operation is in 
 
progress 
Fee_StatusWordType_UN 
ReadSync 
If  set to ‘1’ indicates 
Synchronous Read 
operation is in progress 
ProgramFailed 
If  set to ‘1’ indicates 
there was an error during 
write operation. This is 
now deprecated. 
Read 
If  set to ‘1’ indicates 
Read operation is in 
progress 
Writesync 
If  set to ‘1’ indicates 
Sync Write operation is 
 
24 

in progress 
WriteAsync 
If  set to ‘1’ indicates 
Async Write operation is 
in progress 
EraseImmediate 
If  set to ‘1’ indicates 
Erase immediate 
operation is in progress 
InvalidateBlock 
If  set to ‘1’ indicates 
Invalidate operation is in 
progress 
Copy 
If  set to ‘1’ indicates 
Copy operation is in 
progress 
Initialized 
If  set to ‘1’ indicates 
FEE is initialized. This is 
now deprecated. 
SingleBitError 
If  set to ‘1’ indicates 
there was a single bit 
error during read 
operation. This is now 
deprecated. 
FEE_SW_MAJOR_VERSION 
#define Macro which indicates the Major version of the 
FEE 
FEE_SW_MINOR_VERSION 
#define Macro which indicates the Minor version of the 
FEE 
FEE_SW_PATCH_VERSION 
#define Macro which indicate the Patch version of the FEE 
4-1.  AutoSAR FEE Driver Symbolic Constants 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
 25 
 

Integration Guide 
 
 
  
 
3.5  Data Structures 
This section summarizes the entire  user visible data structure elements pertaining to the 
AutoSAR FEE Driver run-time interfaces. 
 
 
Name 
Fee_PublishedInformationType  
 
Description 
Used to contain Published Information 
Fields 
Data 
Range 
Description 
type 
FeeBlockOverhead 
Uint8 
0x18 
Block OverHead in bytes 
FeeMaximumBlockingTime  Float32 
600us 
Maximum Blocking time in us 
FeePageOverhead 
Uint8 
0x0 
Page overhead in bytes 
FeeVirtualSectorOverhead 
Uint8 
0x10 
Virtual Sector overhead in bytes 
4-2.  AutoSAR FEE Driver Published Information Data Structure 
 
Name 
 
Fee_GeneralConfigType 
 
Description 
Used to contain General configuration 
information 
Fields 
Data 
Range 
Description 
type 
FeeDevErrorDetect 
boolean 
STD_ON/ 
Indicates if 
STD_OFF 
Development Error 
Detection is enabled 
FeeIndex 
uint32 

Instance ID of this 
module. Should 
always be 0 
*FeeNvmJobEndNotification 
Fee_Call

Mapping to upper level 
backType 
job end notification 
*FeeNvmJobErrorNotification 
Fee_Call

Mapping to upper level 
backType 
job error notification 
FeePollingMode 
boolean 
STD_ON/ 
Indicates if polling 
STD_OFF 
mode is enabled 
FeeVersionInfoApi 
boolean  
STD_ON/ 
Indicates if version 
STD_OFF 
info API is compiled. 
FeeVirtualPageSize 
uint16 
0x8 
Defines the virtual 
page size 
4-3.  AutoSAR FEE Driver General Configuration Data Structure 
 
 
26 

3.6  AutoSAR FEE Driver Configuration Parameters 
The AutoSAR FEE Driver needs two configuration files. These two files (Fee_Cfg.h & 
Fee_cfg.c) define which Flash sectors to be used for EEPROM emulation, define Data 
Blocks, Block Size and other configuration parameters. This section describes the 
configuration parameters in the AutoSAR FEE Driver. 
 
3.6.1 
Block Overhead 
 
Parameter Name 
FEE_BLOCK_OVERHEAD  
Description 
Indicates the number of bytes used for Block Header. 
Default Value 
0x18 
Parameter Range 
Fixed to 0x18 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_BLOCK_OVERHEAD 0x18 
 
3.6.2 
Maximum Blocking Time 
 
Parameter Name 
FEE_MAXIMUM_BLOCKING_TIME  
Description 
Indicates the maximum allowed blocking time for any Fee call. 
Default Value 
600.00 
Parameter Range 
Fixed to 600.00 µs. 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_MAXIMUM_BLOCKING_TIME 600.00 
 
3.6.3 
Page Overhead 
 
Parameter Name 
FEE_PAGE_OVERHEAD  
Description 
Indicates the Page Overhead in bytes. 
Default Value 
0x0 
Parameter Range 
Fixed to 0x0 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_PAGE_OVERHEAD 0x0 
3.6.4 
Sector  Overhead 
 
Parameter Name 
FEE_VIRTUAL_SECTOR_OVERHEAD 
Description 
Indicates the number of bytes used for Virtual Sector 
Header. 
Default Value 
0x10 
Parameter Range 
Fixed to 0x10 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_VIRTUAL_SECTOR_OVERHEAD 0x10 
 
 27 
 

Integration Guide 
 
 
  
 
 
3.6.5    Virtual Page Size 
 
 
Parameter Name 
FEE_VIRTUAL_PAGE_SIZE  
Description 
Indicates the virtual page size in bytes. 
Default Value 
0x8 
Parameter Range 
Fixed to 0x8 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_VIRTUAL_PAGE_SIZE 0x8 
 
3.6.6    Driver Index 
 
 
Parameter Name 
FEE_INDEX  
Description 
Instance ID of FEE module. Should always be 0x0 
Default Value 
0x0 
Parameter Range 
Fixed to 0x0 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_INDEX 0x0 
 
3.6.7    Job Error Notification 
 
Parameter Name 
FEE_NVM_JOB_ERROR_NOTIFICATION  
Description 
Call back function to notify a Job Error. This is only applicable if 
polling mode is OFF. 
Default Value 
NvM_JobErrorNotification 
Parameter Range 
User defined function name 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NVM_JOB_ERROR_NOTIFICATION  
NvM_JobErrorNotification  
 
3.6.8    Job End  Notification   
 
Parameter Name 
FEE_NVM_JOB_END_NOTIFICATION  
Description 
Call back function to notify a Job End. This is only applicable if 
polling mode is OFF. 
Default Value 
NvM_JobEndNotification 
Parameter Range 
User defined function name 
 
28 

Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NVM_JOB_END_NOTIFICATION  
NvM_JobEndNotification 
 
3.6.9  FEE Operating Frequency 
 
 
Parameter Name 
FEE_OPERATING_FREQUENCY  
Description 
Device operating frequency in MHz. It is equivalent to the 
HCLK frequency in the TMS570 clock tree. 
Default Value 
160 
Parameter Range 
Device dependent parameter. Refer to the device 
datasheet to know the range. 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_OPERATING_FREQUENCY 160 
 
3.6.10 
Polling Mode 
 
 
Parameter Name 
FEE_POLLING_MODE 
Description 
Indicates if polling mode is enabled/disabled. Currently, this 
parameter should always be STD_ON. 
Default Value 
STD_ON 
Parameter Range 
STD_ON/ STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_POLLING_MODE STD_ON 
 
3.6.11 
Enable Error Correction 
 
 
Parameter Name 
FEE_FLASH_ERROR_CORRECTION_ENABLE 
Description 
Used to enable/disable Error Correction Used to enable ECC for 
EEPROm data. This configuration parameter is no longer used. 
Default Value 
STD_OFF 
Parameter Range 
STD_ON/ STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_FLASH_ERROR_CORRECTION_ENABLE 
STD_OFF 
 
 
 
 
 29 
 

Integration Guide 
 
 
  
 
 
3.6.12   Error Correction Handling 
 
Parameter Name 
FEE_FLASH_ERROR_CORRECTION_HANDLING 
Description 
Indicates desired action to be taken on detection of bit 
errors. Currently only Fee_None is supported. 
Default Value 
Fee_None  
Parameter Range 
Fee_None or Fee_Fix  
Target File 
Fee_cfg.h 
Sample Configuration 
#define 
FEE_FLASH_ERROR_CORRECTION_HANDLING  
Fee_None  
3.6.13   Block Write Counter Save 
 
Parameter Name 
FEE_WRITECOUNTER_SAVE 
Description 
Used to enable/disable saving of write/erase counter value 
in to block header. 
Default Value 
STD_OFF 
Parameter Range 
STD_ON/ STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define  FEE_WRITECOUNTER_SAVE  STD_OFF  
3.6.14   Enable CRC 
 
Parameter Name 
FEE_ CRC_ENABLE 
Description 
Used to enable/disable 16 bit CRC. If enabled, 16 bit CRC 
is calculated and written into Block header.  
Default Value 
STD_OFF 
Parameter Range 
STD_ON/ STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_ CRC_ENABLE STD_OFF 
3.6.15   NumberOfEEPs 
 
Parameter Name 
FEE_NUMBER_OF_EEPS 
Description 
Used to configure number of emulations on a single bank. 
Default Value 

Parameter Range 
1-2 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_EEPS 1  
 
30 

3.6.16  Number of Blocks 
 
Parameter Name 
FEE_NUMBER_OF_BLOCKS  
Description 
Defines the number of Data Blocks used for EEPROM 
emulation. 
Default Value 
0x1 
Parameter Range 
0x1 to 0xFFFE 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_BLOCKS 0x10  
3.6.17 
Number of Virtual Sectors 
 
Parameter Name 
FEE_NUMBER_OF_VIRTUAL_SECTORS 
Description 
Defines the number of Virtual Sectors used for FEE.. 
Default Value 
0x2 
Min :0x2 Max : 0x4,For TMS570LS01227/TMS570LS1113. 
Parameter Range 
Min : 0x2 Max : 16, For TMS570LS05xx, TMS570LS07xx, 
TMS570LS09xx. 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_VIRTUAL_SECTORS 0x2  
3.6.18 
Number of Virtual Sectors on EEP1 
 
Parameter Name 
FEE_NUMBER_OF_VIRTUAL_SECTORS_EEP1 
Description 
Defines the number of Virtual Sectors used for EEP1 
Default Value 
0x2 
Parameter Range 
0 to FEE_NUMBER_OF_VIRTUAL_SECTORS-2 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_VIRTUAL_SECTORS_EEP1 0x2  
3.6.19 
Number of Eight Byte Writes 
 
Parameter Name 
FEE_NUMBER_OF_EIGHTBYTEWRITES 
Description 
Defines the number of 8 byte writes to be performed in Main 
Function. 
Default Value 
0x1 
Parameter Range 
1 to 255 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_EIGHTBYTEWRITES 0x1  
 
 
 
 
 31 
 

Integration Guide 
 
 
  
 
3.6.20     Maximum Number of non configured blocks to copy 
 
Parameter Name 
FEE_NUMBER_OF_UNCONFIGUREDBLOCKSTOCOPY 
Description 
Defines the maximum number non configured blocks to copy. 
Default Value 
0x0 
Parameter Range 
0 to 255 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_NUMBER_OF_ 
UNCONFIGUREDBLOCKSTOCOPY 0x0  
3.6.21     Address Range check during Read/Write 
 
Parameter Name 
FEE_CHECK_BANK7_ACCESS 
Description 
Defines the maximum number non configured blocks to copy. 
Default Value 
STD_OFF 
Parameter Range 
STD_ON/STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_CHECK_BANK7_ACCESS  STD_OFF 
3.6.22     Number of blocks and Data Sets 
 
Parameter Name 
FEE_TOTAL_BLOCKS_DATASETS 
Description 
Defines the total data sets in block configuration. 
Default Value 

Parameter Range 
1-65536 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_TOTAL_BLOCKS_DATASETS  1 
 
3.6.23     Generate Device and Virtual Sector Structures 
 
Parameter Name 
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC 
Description 
Used to enable/disable generation of Device and Virtual sector 
structures. 
Default Value 
STD_OFF 
Parameter Range 
STD_ON/STD_OFF 
Target File 
Fee_cfg.h 
Sample Configuration 
#define 
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC 
STD_OFF 
 
 
32 

Note: When FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC=STD_ON, 
device (Device_FlashDevice) and virtual sector 
configuration(Fee_VirtualSectorConfiguration) structures are populated during 
runtime. Also, these structures will be placed in RAM. Projects should take care 
that only FEE driver has access to these structures. When it’s STD_OFF, 
structures are places in flash and are const. 
    
3.6.24     Required Virtual Sector Size 
 
Parameter Name 
FEE_VIRTUALSECTOR_SIZE 
Description 
Defines the size of virtual sector. 
Default Value 
None 
Parameter Range 
4-32(see below note) 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_VIRTUALSECTOR_SIZE 4 
 
Note: Depending on the device, parameter range can be different.  
For TMS570LS12xx/11xx family devices, FEE bank is 4*16KB. Macro can take a value of 
16 or 32. For TMS570LS09xx, TMS570LS07xx, TMS570LS05xx family devices, FEE bank 
is 16*4KB. Macro can take a value of 4 or 8 or 12 or 16 or 32.  
FEE_VIRTUALSECTOR_SIZE * FEE_NUMBER_OF_VIRTUAL_SECTORS should not 
exceed the total available FEE bank size on device. This macro is only used when 
FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC is STD_ON. Based on 
FEE_VIRTUALSECTOR_SIZE and FEE_NUMBER_OF_VIRTUAL_SECTORS, elements 
of the structure Fee_VirtualSectorConfiguration will be populated during runtime. 
3.6.25     FEE bank Physical Sector Size 
 
Parameter Name 
FEE_PHYSICALSECTOR_SIZE 
Description 
Defines the size of one physical sector on the device. 
Default Value 
None 
Parameter Range 
4/16(see below note) 
Target File 
Fee_cfg.h 
Sample Configuration 
#define FEE_PHYSICALSECTOR_SIZE 4 
 
Note: This macro can only have 4/16 as value.  
For TMS570LS12xx/11xx family devices, sector size is 16. For TMS570LS09xx, 
TMS570LS07xx, TMS570LS05xx family devices, sector size is 4. This macro is only used 
when FEE_GENERATE_DEVICEANDVIRTUALSECTORSTRUC is STD_OFF. This 
parameter is used to select device specific files. 
 
 
 
 
 
 
 
 
 33 
 

Integration Guide 
 
 
  
 
3.6.26     Virtual Sector Configuration 
 
Array Name 
FEE_VirtualSectorConfiguration  
Description 
Used to define a Virtual Sector 
Array Type 
Fee_VirtualSectorConfigType.  
This is a structure having the following members. 
Members 
FeeVirtualSectorNumber 
Virtual Sector's Number. 
Flash Bank for EEPROM 
FeeFlashBank 
emulation, Only Bank 7 for 
F021 devices. 
Starting Sector in the Bank for 
FeeStartSector 
this Virtual Sector. 
Ending Sector in the Bank for 
FeeEndSector 
this Virtual Sector. 
Target File 
Fee_cfg.c 
The configurations described below are repeated for each Virtual Sector. 
3.6.26.1  FeeVirtualSectorNumber  
 
Parameter Name 
FeeVirtualSectorNumber  
Description 
Each Virtual Sector is assigned a number starting from 0x1 
Default Value 
0x1 
Min : 0x1,  Max : 0x4,For 
Parameter Range 
TMS570LS01227/TMS570LS1113 
Min : 0x1 Max : 16, For TMS570LS05xx, TMS570LS07xx, 
TMS570LS09xx 
Target File 
Fee_cfg.c 
3.6.26.2  FeeFlashBank   
Parameter Name 
FeeFlashBank 
Description 
Indicates the Flash Bank used by the Virtual Sector. All the 
Virtual Sectors should use the same Flash Bank. EEPROM 
emulation is supported only on Bank 7 for F021 devices 
Default Value 
0x7 for F021 devices 
Parameter Range 
Fixed to 0x7 for F021 devices. 
Target File 
Fee_cfg.c 
3.6.26.3  FeeStartSector   
 
Parameter Name 
FeeStartSector 
Description 
Indicates the Flash Sector in the Bank used by the Virtual 
Sector as the Start sector. 
Default Value 
0x0 
 
34 

Parameter Range 
Device specific, can use any Sector of the selected Flash 
Bank. Please refer to the device datasheet “Flash Memory 
Map” for more details. 
Target File 
Fee_cfg.c 
3.6.26.4  FeeEndSector   
 
Parameter Name 
FeeEndSector 
Description 
Indicates the Flash Sector in the Bank used by the Virtual Sector 
as the End sector. 
Default Value 
0x0 
Parameter Range 
Device specific, can use any Flash Sector of the selected Flash 
Bank. It should be greater than the FEE Start Sector. Please 
refer to the device datasheet “Flash Memory Map” for more 
details. 
Target File 
Fee_cfg.c 
3.6.26.5  Sample Virtual Sector Configuration 
The following code snippet indicates one of the possible configurations for the Virtual 
Sectors: 
/* Virtual Sector Configuration */ 
const TI_FeeVirtualSectorConfigType TI_FeeVirtualSectorConfiguration[] = 

    /* Virtual Sector 1 */ 
    { 
        1,     /* Virtual sector number */ 
        7,     /* Bank                  
  */ 
        0,     /* Start Sector             */ 
        0,     /* End Sector               */ 
    }, 
    /* Virtual Sector 2 */ 
    { 
        2,     /* Virtual sector number */ 
        7,     /* Bank                   
  */ 
        1,     /* Start Sector               */ 
        1,     /* End Sector               */ 
    }, 
}; 
 
Note: All the Virtual Sectors should have the same Flash Bank. 
Only Bank 7 is supported for EEPROM emulation on F021 devices. 

 
 
 
 
 
 
 

 
 35 
 

Integration Guide 
 
 
  
 
3.6.27  Block Configuration 
 
Array Name 
Fee_BlockConfiguration 
Description 
Used to define a Data Block 
Array Type 
Fee_BlockConfigType. 
This is a structure having the following members. 
Members 
Indicates Block's 
FeeBlockNumber 
Number. 
Defines Block's Size in 
FeeBlockSize 
bytes. 
Indicates if the block is 
FeeImmediateData 
used for immediate data. 
Number of write cycles 
FeeNumberOfWriteCycles 
required for this block . 
Indicates the device 
FeeDeviceIndex 
index. 
Indicates the number of 
FeeNumberofDatasets 
Datasets for this Block. 
Indicates on which EEP, 
FeeEEPNumber 
this block is configured. 
Target File 
Fee_cfg.c 
The configurations described below are repeated for each Data Block. 
 
3.6.27.1  FeeBlockNumber   
 
Parameter Name 
FeeBlockNumber 
Description 
Each block is assigned a unique number starting from 0x1. 
Default Value 
0x1 
Parameter Range 
Min : 0x1,  Max : 0xFFFE 
Target File 
Fee_cfg.c 
 
3.6.27.2  FeeBlockSize    
 
Parameter Name 
FeeBlockSize 
Description 
Indicates the size of the Block in bytes. 
Default Value 
0x08 
Parameter Range 
0x1 to 0xFFFE 
Target File 
Fee_cfg.c 
 
36 

3.6.27.3  FeeImmediateData    
 
Parameter Name 
FeeImmediateData 
Description 
Indicates if the block is used for immediate data. 
Default Value 
FALSE 
Parameter Range 
TRUE / FALSE 
Target File 
Fee_cfg.c 
3.6.27.4  FeeNumberOfWriteCycles    
 
Parameter Name 
FeeNumberOfWriteCycles 
Description 
Indicates the number of clock cycles required to write 
to a flash address location. 
Default Value 
0x1 
Parameter Range 
Device or core/flash tech dependent parameter. 
Target File 
Fee_cfg.c 
 
3.6.27.5  FeeDeviceIndex     
 
Parameter Name 
FeeDeviceIndex 
Description 
Indicates the device index. This will always be 0. 
Default Value 
0x0 
Parameter Range 
Fixed to 0x0 
Target File 
Fee_cfg.c 
3.6.27.6  FeeNumberOfDataSets      
 
Parameter Name 
FeeNumberOfDataSets 
Description 
Indicates the number of Datasets for this particular 
Block . 
Default Value 
0x1 
Parameter Range 
0x1 to 0xFF 
Target File 
Fee_cfg.c 
 
 
 
 
 37 
 

Integration Guide 
 
 
  
 
3.6.27.7  FeeEEPNumber      
 
Parameter Name 
FeeEEPNumber 
Description 
Indicates into which EEP, this block is configured. 
Default Value 
0x0 
Parameter Range 
0x0 to 0x1 
Target File 
Fee_cfg.c 
3.6.27.8  Sample Block Configuration 
The following code snippet indicates one of the possible configurations for the Blocks: 
/* Block Configuration */ 
const TI_FeeBlockConfigType TI_Fee_BlockConfiguration[] = 

    /* Block 1 */ 
    { 
        0x01,      
  /* Block number                 
*/ 
        0x004,      
  /* Block size                    
*/ 
        0x10,  /* Block number of write cycles */ 
       TRUE,      /* Block immediate data used    */ 
 
        0,           
/* Device Index                  
*/ 
        1, 
 
/* Number of DataSets    
*/ 
 
        0 
 
/* EEP Number    
 
*/ 
 
    }, 
    /* Block 2 */ 
    { 
        0x02,        
/* Block number                  
*/ 
        0x008,      
/* Block size                    
 */ 
        0x10,  /* Block number of write cycles */ 
        TRUE,      /* Block immediate data used    */ 
        0,           
/* Device Index                  
*/ 
        2, 
 
/* Number of DataSets    
*/ 
 
        1 
 
/* EEP Number    
 
*/ 
    }, 
    /* Block 3 */ 
    { 
        0x03,       
 /* Block number                  
*/ 
        0x0004,      
 /* Block size                    
*/ 
        0x10,  /* Block number of write cycles */ 
       TRUE,      /* Block immediate data used    */  
        0,           
/* Device Index                  
*/ 
        3, 
 
/* Number of DataSets    
*/ 
        1 
 
/* EEP Number    
 
*/ 
    }, 
 
/* Block 4 */ 
    { 
        0x04,        
/* Block number                  
*/ 
        0x001A,     /* Block size                   
 
 */ 
 
38 

        0x10,  /* Block number of write cycles  */ 
        TRUE,      /* Block immediate data used    */ 
        0,           
/* Device Index                  
*/ 
        4, 
 
/* Number of DataSets    
*/ 
 
        0 
 
/* EEP Number    
 
*/ 
 
    }, 
}; 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 39 
 

Integration Guide 
 
 
  
 
3.7  API Classification 
This section introduces the application-programming interface for the AutoSAR FEE Driver 
by grouping them into logical units. This is intended for the user to get a quick understanding 
of the AutoSAR FEE Driver  APIs. For detailed descriptions please refer to the API 
specification section that follows this section. 
3.7.1  Initialization 
The AutoSAR FEE Driver APIs that are intended for use in initialization of the FEE module 
are listed below.  
 
Name  
Description 
Fee_Init 
Used to initialize the FEE module 
4-4.  AutoSAR FEE Driver Initialization APIs 
 
3.7.2  Data Operations 
The  AutoSAR FEE Driver  APIs that are intended for performing  Data operations on Data 
Blocks are listed below.  
 
Name  
Description 
Fee_Write 
Used to initiate a Write Operation to a 
Data Block.  Fee_MainFunction should 
be called at regular intervals to finish 
the Write Operation 
Fee_Read 
Fee_MainFunction should be called at 
regular intervals to finish  this Operation 
Fee_EraseImmediateBlock 
Used to initiate an Erase Operation of a 
Data Block.  Fee_MainFunction should 
be called at regular intervals to finish  
this Operation 
Fee_InvalidateBlock 
Used to initiate an Invalidate Operation 
on a Data Block. Fee_MainFunction 
should be called at regular intervals to 
finish this Operation 
4-5.  AutoSAR FEE Driver Data Operation APIs 
 
 
 
 
 
40 

3.7.3   Information  
The AutoSAR FEE Driver APIs that are intended to get information about the status of the 
FEE Module are listed below.  
 
Name  
Description 
Fee_GetVersionInfo 
Used to get the Driver version. 
Fee_GetStatus 
Used to get the status of the FEE module. 
Fee_GetJobResult 
Used to get the job result of a Data 
Operation. 
4-6.  AutoSAR FEE Driver Information APIs 
 
3.7.4  Internal Operations  
The  AutoSAR FEE Driver  APIs that are used to  perform internal operations of the FEE 
Module are listed below.  
 
Name  
Description 
Fee_MainFunction 
Used to complete the Data Operations 
initiated by any of the Data Operation 
functions. 
 
 
4-7.  AutoSAR FEE Driver Internal Operation APIs 
3.7.5  Cancel/ Terminate Operations  
The  AutoSAR FEE Driver  APIs that are used to cancel/terminate an ongoing Data 
Operation are listed below.  
 
Name  
Description 
Fee_Cancel 
Used to cancel an ongoing write, erase, 
invalidate or read operation. 
4-8.  AutoSAR FEE Driver Terminate/Cancel Operation APIs 
3.7.6  Error Information and Recovery Operations  
The TI FEE Driver APIs that are used to provide error information and recover from severe 
errors.  
 
Name  
Description 
TI_FeeErrorCode 
Function to know the error type. 
Function to recover from severe errors. 
TI_Fee_ErrorRecovery 
4-9.  AutoSAR FEE Driver Error Info and Recovery APIs 
 
 
 41 
 

Integration Guide 
 
 
  
 
3.7.7 Suspend/Resume Erase Sector  
The TI FEE Driver APIs that are used to suspend/Resume erasing of sector.  
 
Name  
Description 
TI_Fee_SuspendResumeErase  Function to suspend/resume erasing 
of sectors. 
4-10.  TI FEE Driver Suspend/Resume Erase Sector APIs 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 
42 

3.8   Integration Example 
This section depicts a flow chart for a typical FEE operation. 
Initialization 
To be called only once at the 
Fee_Init() 
beginning to initialize the FEE 
 
module.  
FEE is in IDLE state after 
successful initialization 

Call any one of the data 
operation functions as required. 
A new operation can be initiated 
only when the module is in “Idle” 
state. 
Schedule a Data Operation 
FEE_Write() / 
FEE_EraseImmediateBlock() / 

To be called at regular 
FEE_InvalidateBlock() / 
intervals to complete the Data 
FEE_Read() 
operation. 
 
Schedule Other 
Fee_Main() 
Application Tasks 
 
TI_Fee_Main calls 
TI_FeeInternal_FeeM
anager 

Fee_GetStatus() 
 
Called by Fee_Main() whenever in 
No 
IDLE? 
“Idle” state to handle internal 
ti
 
Yes 
Fee_GetJobResult() 
Returns the Job result of the last 
 
operation. 
  
 
 
 43 
 

Integration Guide 
 
 
  
 
3.9  API Specification 
 
This section constitutes the detailed reference for the entire API set published to users of the 
AutoSAR FEE Driver.  
For each of the published API listed, the following attributes are specified 
  Prototype: The signature of the function and or macro method in question 
  Description: The functionality of the procedure or macro 
  Arguments: The list of parameters supplied by the user 
  Return value: The evaluated return value from the procedure invoked 
3.9.1  AutoSAR FEE Driver Functions 
3.9.1.1 
Fee Initilization Function 
 
Prototype 
void Fee_Init( ) 
Description 
Used to initialize the FEE module 
Arguments 
None 
Return value 
None 
 
The function Fee_Init() shall initialize the Fee module. This function shall initialize all Flash 
Memory relevant registers (hardware) with parameters provided in the given configuration 
set.   
The function Fee_Init() shall initialize all Fee module global variables and those controller 
registers that are needed for controlling the flash device and that do not influence or 
depend on other (hardware) modules.  Registers that can influence or depend on other 
modules shall be initialized by a common system module. 
This function shall set the Fee module state to MEMIF_IDLE after successfully finishing the 
Fee module initialization.   
Note: Do not call Fee_Init API multiple times in a single power cycle. There are 
chances of some blocks getting lost(if there are different block configurations for 
different instances of Fee_Init call ), if it’s called multiple times. If project 
requirement  needs to call Fee_Init multiple times, make sure .data and .bss sections 
are cleared before calling Fee_Init.
 
 
 
 
 
 
44 

3.9.1.2 
Fee Write Function 
 
Std_ReturnType Fee_Write( 
Prototype 
 
uint16 BlockNumber, 
 
uint8* DataBufferPtr 

Description 
Used to initiate a Write Operation on a Data 
Block / DataSet within a Data Block 
BlockNumber  The BlockNumber should comprise of the 
number of the logical block and the Dataset 
index within that logical block. The number of the 
logical block is left shifted by the maximum 
number of Datasets configures 
 
(NVM_DATASET_SELECTION_BITS) and then 
ts
combined with the Dataset index to obtain the 
n
e

BlockNumber parameter. 
m
u

DataBufferPtr 
rg
Pointer to data buffer. 
A
Return value 
E_OK:  The write job was accepted by the Fee 
module 
E_NOT_OK:  The write job was not accepted by 
the Fee module. 
 
The function Fee_Write() shall take the block start address and calculate the   
corresponding memory write address.  This function shall copy the given/computed 
parameters to module internal variables, initiate a write job, set Fee module status to 
MEMIF_BUSY, set the job result to MEMIF_JOB_PENDING and return with E_OK. 
The Fee module shall execute the job of the function Fee_Write() asynchronously within the 
Fee module’s main function.  This function shall write one or more complete flash pages to 
the Flash device.  The job of this function shall program a Flash memory block with data 
provided via DataBufferPtr. 
 
This function shall check the following: 
1.  That the write length is greater than 0. If this check fails, this function shall reject 
the Write job and return with E_NOT_OK. 
2.  That the Fee module has been initialized.  If this check fails, this function shall 
reject the Write job and return with E_NOT_OK.   
3.  That the Fee module is currently not busy.  If this check fails, this function shall 
reject the Write job and return with E_NOT_OK. 
4.  The given data buffer pointer for not being a null pointer.  If this check fails, this 
function shall reject the Write job and return with E_NOT_OK.   
Projects can configure FEE_NUMBER_OF_EIGHTBYTEWRITES to suitable value. By 
default this is 0x1. This means 8 bytes of data are written for every main function call. If this 
parameter is configured to 0x2, 16 bytes of data are written. 
 
 45 
 

Integration Guide 
 
 
  
 
3.9.1.3 
Fee Read Function 
Std_ReturnType Fee_Read( 
Prototype 
 
uint16 BlockNumber, 
 
uint16 BlockOffset, 
 
uint8* DataBufferPtr, 
 
uint16 Length 

Description 
Used to perform a Read Operation on a Data Block / 
DataSet within a Data Block 
BlockNumber  The BlockNumber should comprise of the number of 
 
the logical block and the Dataset index within that 
logical block. The number of the logical block is left 
shifted by the maximum number of Datasets 
configures (NVM_DATASET_SELECTION_BITS) 
and then combined with the Dataset index to obtain 
the BlockNumber parameter. 
 
ts

Read address offset inside the block. 
n
BlockOffset 
e
m
u

DataBufferPtr  Pointer to data buffer. 
rg
Number of bytes to read. 
A
Length 
Return value 
E_OK:  The Read job was completed successfully.  
E_NOT_OK:  The Read job was not completed 
successfully. 
The function Fee_Read() shall take the block start address and offset and calculate the 
corresponding memory read address.  The address offset and length parameter can 
take any value within the given types range.  This allows reading of an arbitrary number 
of bytes from an arbitrary star address inside a logical block.   
 
The Fee module shall execute the job of the function Fee_Read() asynchronously 
within the Fee module’s main function.  This function shall initiate a read operation 
which copies a continuous Flash memory block starting from the computed start 
address to the size of Length to the buffer pointed to DataBufferPtr. This function shall 
set Fee module status to MEMIF_BUSY, set the job result to MEMIF_JOB_PENDING 
and return with E_OK. 
 
This function shall check the following: 
1.  That the read length is greater than 0. If this check fails, this function shall reject 
the Read job and return with E_NOT_OK. 
2.  That the Fee module has been initialized.  If this check fails, this function shall 
reject the Read job and return with E_NOT_OK.   
3.  That the Fee module is currently not busy.  If this check fails, this function shall 
reject the Read job and return with E_NOT_OK. 
4.  The given data buffer pointer for not being a null pointer.  If this check fails, this 
function shall reject the Read job and return with E_NOT_OK.   
Main function will do complete data read in single main function call. 
 
 
 
46 

3.9.1.4 
Fee Erase Function 
 
Std_ReturnType Fee_EraseImmediateBlock( 
Prototype 
 
uint16 BlockNumber 

Description 
Used to initiate a logical Erase operation on a Data 
Block / DataSet within a Data Block 
BlockNumber  The BlockNumber should comprise of the number of 
 
the logical block and the Dataset index within that 
ts
 
logical block. The number of the logical block is left 
n
e

shifted by the maximum number of Datasets 
m
u

configures (NVM_DATASET_SELECTION_BITS) 
rg
and then combined with the Dataset index to obtain 
A
the BlockNumber parameter. 
Return value 
E_OK:  The Erase job was accepted by the Fee 
module 
E_NOT_OK:  The Erase job was not accepted by 
the Fee module. 
 
The function Fee_  EraseImmediateBlock()  shall take the block number  calculate the 
corresponding memory address for that block.   
 
The Fee module shall execute the job of the function Fee_ EraseImmediateBlock() 
asynchronously within the Fee module’s main function.   
The function Fee_EraseImmediateBlock() ensures that the Fee module can write 
immediate data.  As the Fee module implementation should always be ready to write 
data, unless the block is marked as FeeImmediateData == FALSE, it shall return 
E_OK.  If the block is marked as FeeImmediateData == FALSE it will return 
E_NOT_OK. 
 
This function shall check the following: 
1. 
That the Fee module has been initialized.  If this check fails, this function shall 
reject the Erase job and return with E_NOT_OK.   
2. 
That the Fee module is currently not busy.  If this check fails, this function shall 
reject the Erase job and return with E_NOT_OK. 
3. 
The given Block Number is marked for Immediate Data Write.  If this check fails, 
this function shall reject the Erase job and return with E_NOT_OK.   
 
 
 
 
 
 
 
 
 
 
 
 
 47 
 

Integration Guide 
 
 
  
 
3.9.1.5 
Fee Invalidate Function 
 
Std_ReturnType Fee_InvalidateBlock( 
Prototype 
 
uint16 BlockNumber 

Description 
Used to initiate a logical Invalidate operation on a 
Data Block / DataSet within a Data Block 
BlockNumb
The BlockNumber should comprise of the number of 
 
er 
the logical block and the Dataset index within that 
ts
logical block. The number of the logical block is left 
n
e

 
shifted by the maximum number of Datasets 
m
u

configures (NVM_DATASET_SELECTION_BITS) and 
rg
then combined with the Dataset index to obtain the 
A
BlockNumber parameter. 
Return value 
E_OK:  The Invalidate job was accepted by the Fee 
module 
E_NOT_OK:  The Invalidate job was not accepted by 
the Fee module. 
 
The function Fee_ InvalidateBlock() shall take the block number calculate the 
corresponding memory address for that block.   
The Fee module shall execute the job of the function  
Fee_ InvalidateBlock() asynchronously within the Fee module’s main function.  This 
command shall change the valid bit in the Data Block header to invalidate it. 
 
This function shall check the following: 
1. 
That the Fee module has been initialized.  If this check fails, this function shall 
reject the Invalidate job and return with E_NOT_OK.   
2. 
That the Fee module is currently not busy.  If this check fails, this function shall 
reject the Invalidate job and return with E_NOT_OK. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48 

3.9.1.6 
Fee Get Version Info Function 
 
void Fee_GetVersionInfo( 
Prototype 
 
Std_VersionInfoType* VersionInfoPtr 

Description 
Function to return the version information of the Fee 
module. 
Arguments 
None 
Return value 
None 
 
 
The function Fee_GetVersionInfo() shall return the version information for the Fee module.  
The version information includes: 
-  Module Id 
-  Vendor Id 
-  Fee specific version numbers MM.mm.rr 
•  MM  
– Major Version 
•  mm  
– Minor Version 
•  rr  
– Revision 
 
The function Fee_GetVersionInfo() shall be pre-compile time configurable On/Off by the 
configuration parameter FEE_VERSION_INFO_API. 
 
3.9.1.7 
Fee Get Status Function 
 
Prototype 
MemIf_StatusType Fee_GetStatus() 
Description 
Function to return the status of the Fee module. 
Arguments 
None 
Return value 
MEMIF_UNINIT: The Fee Module has not been 
initialized. 
MEMIF_IDLE:  The Fee Module is currently idle. 
MEMIF_BUSY:  The Fee Module is currently busy. 
MEMIF_BUSY_INTERNAL:  The Fee Module is 
currently busy with internal management 
operations 
 
The function Fee_ GetStatus() shall return the status information for the Fee module.   
 
The function Fee_ GetStatus() shall be pre-compile time configurable On/Off by the 
configuration parameter FEE_GET_STATUS_API. 
 
 
 
 49 
 

Integration Guide 
 
 
  
 
3.9.1.8 
Fee Get Job Result Function 
 
Prototype 
MemIf_JobResultType Fee_GetJobResult() 
Description 
Function to get the job result from the Fee module. 
Arguments 
None 
MEMIF_JOB_OK: The last job has finished 
Return value 
successfully. 
MEMIF_JOB_PENDING: The last job is waiting for 
execution or is currently being executed. 
MEMIF_JOB_FAILED:  The last 
read/erase/write/compare job failed. 
MEMIF_BLOCK_INCONSISTENT:  The requested 
block is inconsistent, it may contain corrupted data. 
MEMIF_JOB_CANCELLED:  The last job has been 
cancelled. 
MEMIF_BLOCK_INVALID:  The requested block has 
been invalidated.  The requested read operation 
cannot be performed. 
 
The function Fee_GetJobResult() shall return the result of the last job  synchronously.  The 
erase, write, read and invalidate functions shall share the same job result, therefore, only 
the result of the last job can be queried. 
 
The function Fee_GetJobResult shall be pre-compile time configurable On/Off by the 
configuration parameter FEE_GET_JOB_RESULT_API. 
 
3.9.1.9 
Fee Main Function 
 
Prototype 
void Fee_MainFunction() 
Description 
Function to handle the requested read/write/erase jobs 
and the internal management operations of the Fee 
module. 
Arguments 
None 
 
Return value 
None 
 
The function Fee_MainFunction() shall asynchronously handle the requested read/write/ 
erase jobs respectively and the internal management operations. 
 
The function shall accept only one read, write, or erase job at a time.  When a job has been 
initiated, the Fee module’s environment shall call the function Fee_MainFunction() cyclically 
until the job is finished.  This function shall only process as much data in one call cycle as 
statically configured for the current job type (read, write or erase).  
 
After a read, erase or write job has been finished; the function shall set the Fee module’s 
job result to MEMIF_JOB_OK if it is currently in state 
 
50 

MEMIF_JOB_PENDING.  Otherwise, it shall leave the result unchanged.  
Furthermore, the function shall set the Fee module’s state to MEMIF_IDLE and call 
the job end notification function. 
 
This function shall at most issue one sector erase command (to the hardware) in 
each cycle. 
 
3.9.1.10  Fee Manager Function 
 
Fee_StatusType 
Prototype 
TI_FeeInternal_FeeManager(void) 
Description 
Function to handle the internal operations of the FEE 
driver. 
Arguments 
None 
 
Return value 
FEE_OK : Function detected No Error 
FEE_ERROR: Function detected an Error 
condition and returned. 
 
The function TI_FeeInternal_FeeFeeManager() manages the Flash EEPROM Emulation 
and is called when no other job is pending by the Fee_MainFunction. This function handles 
all the background tasks to manage the FEE. 
   
 This routine is responsible to 
• 
Determine whether a Virtual Sector Copy operation is in progress. If so, it should 
identify all the Valid Data Blocks in the old Virtual Sector and copy them to the new 
Virtual Sector. 
• 
 Determine if any of the Virtual Sector needs to be erased. If so, it should erase that 
particular Virtual Sector. 
• 
 This function is only called when the Fee module is in MEMIF_IDLE state. It should 
set the Fee module to MEMIF_BUSY_INTERNAL state. 
 
3.9.1.11  Fee Cancel  Function 
 
void Fee_Cancel(void) 
Prototype 
Description 
Function to cancel/terminate an ongoing operation. 
Arguments 
None 
 
Return value 
None 
 
The function Fee_Cancel() provides functionality for cancelling/terminating an ongoing 
operation. This function shall cancel an ongoing flash read, write or erase job and shall 
reset the internal variables making the module ready to accept a new job.  This function 
shall operate synchronously so after returning from this function a new job can be started. 
  
 
 
 51 
 

Integration Guide 
 
 
  
 
3.9.1.12  TI_FeeErrorCode 
 
This function provides functionality to identify occurrence of an error.  
It returns ‘0’ if no error has occurred else it returns an Error code. 
 
TI_FeeErrorCodeType TI_FeeErrorCode(uint8 
Prototype 
u8EEPIndex ) 
Description 
Function to know the error type. 
Arguments 
EEP Index 
 
Return value 
Error code 
 
 
3.9.1.13  TI_Fee_ErrorRecovery 
 
This function provides functionality to recover from any severe errors.  
 
Void TI_Fee_ErrorRecovery(TI_Fee_ErrorCodeType Error 
Prototype 
Code, uint8 u8VirtualSector) 
Function to recover from severe errors. 
Description 
Arguments 
Error_TwoActiveVS 
Error_TwoCopyVS 
Error_SetupStateMachine 
Error Code 
Error_NoActiveVS 
Error_CopyButNoActiveVS 
Error_NoFreeVS 
Virtual Sector Number 
Return value 
None 
 
3.9.1.14   TI_Fee_SuspendResumeErase 
 
This function provides functionality to suspend/Resume of erasing a sector. 
 
void 
Prototype 
TI_Fee_SuspendResumeErase(TI_Fee_EraseCommandType 
Command) 
Description  Function to suspend/Resume erasing of sector. 
Arguments 
Suspend_Erase/Resume_Erase 
 
Return 
none 
value 
 
52 

Note: This API has to be called once after Fee_Init is executed with Suspend_Erase as 
function argument. It has to be called again after application has completed all the 
initialization sequence with Resume_Erase as function argument. 
3.10 Privilege Mode access 
FEE needs following API’s to be executed in Privilege mode: 
- Fee_Init 
- TI_FeeInternal_WriteDataF021 
- TI_Fee_Read 
3.11 Deviations from Autosar3.x requirements 
-  Non Polling mode not supported. 
-  Immediate block writing not accepted when FEE is performing copy of blocks / erase of 
sectors. 
-  No Jobs accepted during copy of blocks /erase of sectors ongoing.(The write job which 
triggered the copy operation will be pending until copy of blocks is completed and then 
erasing of a sector is completed. If there is a powerloss during copying of blocks, then the 
next Fee_Init will resume COPY operation.) 
3.12 Important Notes 

If projects are using bootloader, make sure the active bank in FMAC register is same as 
before the start of bootloader and after the completion of bootloader.  

Projects should not call Fee_Init mutiple times in one power cycle. If it is required to call, 
make sure all the global, static variable sections are cleared before calling Fee_Init. 
 
 
 53 
 

Document Outline


7 - DataSheet_TMS570LS0714

DSPBridge/EPOC

8 - DataSheet_TMS570LS0714_ind

Outline
Page 1
Page 2
Page 3
Page 4

9 - DataSheet_TMS570LS0714s


 
 
 
 
 
 
 
Autosar FEE 01.23.02 
Data Sheet for TMS570LS0714 
14th Mar 2016 
 
 
 
 
 
Copyright © 2003-2016 Texas Instruments Incorporated.  All rights reserved. 
 
Information in this document is subject to change without notice.  Texas Instruments may have pending 
patent applications, trademarks, copyrights, or other intellectual property rights covering matter in this 
document.  The furnishing of this documents is given for usage with Texas Instruments products only and 
does not give you any license to the intellectual property that might be contained within this document.  
Texas Instruments makes no implied or expressed warranties in this document and is not responsible for 
the products based from this document. 

 
Page 1 of 4 



TABLE OF CONTENTS 
 
1 
Memory FootPrint ......................................................................................... 3 
2 
Performance Numbers on API’s ................................................................... 3 
 
 
   
Page 2 of 4 
 



1 
Memory FootPrint 
 
In Bytes 
Modules 
.text 
.const 
.bss 
.data 
 FEE 
20692 
1056  1392 
13 
 
Above readings were taken with following compiler settings: 
 
Compiler version : 5.1.6 
-mv7R4 
--code_state=32 
--float_support=VFPv3D16 
--abi=eabi 
-O2 
-g 
--
diag_warning=261  --diag_warning=118  --diag_warning=225  --diag_error=189  --
diag_error=994 --diag_error=551 --display_error_number  --enum_type=packed 
2 
Performance Numbers on API’s 
  
Numbers In CPU Cycles @ 160 MHz 
API 
Ticks 
Comments 
TI FEE 
Create two active VS, 
one each for   
EEPROM1 and 
Fee_Init() 
2547466  EEPROM2. 
Complete Pending 
Fee_MainFunction() 
2050  INIT writes. 
Fee_Write() 
10084  Measure time to   
complete write 
job.(block size = 8. 
Fee_MainFunction() 
37012  Total 40 bytes) 
When no jobs are 
Fee_MainFunction() 
751  pending. 
Fee_Read() 
3679 
Measure time to 
 
complete Read job(8 
Fee_MainFunction() 
1608  bytes) 
Fee_InvalidateBlock() 
1230   Measure time to 
complete Invalidate 
Fee_MainFunction() 
2035  job. 
Fee_EraseImmediateBlock() 
1514   Measure time to 
Fee_MainFunction() 
2041  complete 
 
 
Page 3 of 4 
 



EraseImmediate job. 
Fee_Cancel() 
318   
Fee_GetJobResult() 
209   
Fee_GetVersionInfo( ) 
73   
Fee_GetStatus( ) 
303 
 
 
Note:  For above readings, 4 physical sectors, each of 4K were combined to one virtual 
sector forming 16K. Two EEPROM’s, each using two 16K virtual sectors. 
 
 
 
Page 4 of 4 
 

Document Outline


10 - DataSheet_TMS570LS1227

DSPBridge/EPOC

11 - DataSheet_TMS570LS1227_ind

Outline
Page 1
Page 2
Page 3
Page 4

12 - DataSheet_TMS570LS1227s


 
 
 
 
 
 
 
Autosar FEE 01.23.02 
Data Sheet for TMS570LS1227 
15th Mar 2016 
 
 
 
 
 
Copyright © 2003-2016 Texas Instruments Incorporated.  All rights reserved. 
 
Information in this document is subject to change without notice.  Texas Instruments may have pending 
patent applications, trademarks, copyrights, or other intellectual property rights covering matter in this 
document.  The furnishing of this documents is given for usage with Texas Instruments products only and 
does not give you any license to the intellectual property that might be contained within this document.  
Texas Instruments makes no implied or expressed warranties in this document and is not responsible for 
the products based from this document. 

 
Page 1 of 4 



TABLE OF CONTENTS 
 
1 
Memory FootPrint ......................................................................................... 3 
2 
Performance Numbers on API’s ................................................................... 3 
 
 
   
Page 2 of 4 
 



1 
Memory FootPrint 
 
In Bytes 
Modules 
.text 
.const 
.bss 
.data 
 FEE 
18856 
128  1012 
13 
 
Above readings were taken with following compiler settings: 
 
Compiler version : 5.0.4 
-mv7R4 
--code_state=32 
--float_support=VFPv3D16 
--abi=eabi 
-O2 
-g 
--
diag_warning=261  --diag_warning=118  --diag_warning=225  --diag_error=189  --
diag_error=994 --diag_error=551 --display_error_number  --enum_type=packed 
2 
Performance Numbers on API’s 
  
Numbers In CPU Cycles @ 160 MHz 
API 
Ticks 
Comments 
TI FEE 
Create two active VS, 
one each for   
EEPROM1 and 
Fee_Init() 
2843034  EEPROM2. 
Complete Pending 
Fee_MainFunction() 
2082  INIT writes. 
Fee_Write() 
9501  Measure time to   
complete write 
job.(block size = 8. 
Fee_MainFunction() 
29786  Total 40 bytes) 
When no jobs are 
Fee_MainFunction() 
746  pending. 
Fee_Read() 
2112 
Measure time to 
 
complete Read job(8 
Fee_MainFunction() 
1608  bytes) 
Fee_InvalidateBlock() 
1258   Measure time to 
complete Invalidate 
Fee_MainFunction() 
2018  job. 
Fee_EraseImmediateBlock() 
1468   Measure time to 
Fee_MainFunction() 
2050  complete 
 
 
Page 3 of 4 
 



EraseImmediate job. 
Fee_Cancel() 
324   
Fee_GetJobResult() 
183   
Fee_GetVersionInfo( ) 
82   
Fee_GetStatus( ) 
335 
 
 
 
 
 
 
Page 4 of 4 
 

Document Outline


13 - Fee_Review_Checklists


Overview

Summary Sheet
Source Code
QAC


Sheet 1: Summary Sheet
























Rev 6.028-Oct-14

Peer Review Summary Sheet



























Component Name:


kzshz2: Intended Use: Identify which component is being reviewed. This should be the Module Short Name from Synergy Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. Fee
Component Revision:


kzshz2: Intended Use: Identify which Synergy revision of this component is being reviewed Rationale: Required for traceability. It will help to ensure this form is not attaced to the the wrong change request. Fee_03.01.00_01.23.03





























Change Owner:


kzshz2: Intended Use: Identify the developer who made the change(s) Rationale: A change request may have more than one resolver, this will help identify who made what change. Change owner identification may be required by indusrty standards. Kevin Smith
Change Request ID:


EA3#10168





























kzshz2: Intended Use: Intended to identify at a high level to the reviewers which areas of the component have been changed. Rationale: This will be good information to know when ensuring appropriate reviews have been completed. Modified File Types:
















































































































































kzshz2: Intended Use: Identify who where the reviewers, what they reviewed, and if the reviewed changes have been approved to release the code for testing. Comments here should be at a highlevel, the specific comments should be present on the specific review form sheet. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. ADD DR Level Move reviewer and approval to individual checklist form Review Checklist Summary:






















































Reviewed:































MDD


XSource Code



Data Dictionary


XQAC



































Integration Manual


Davinci Files








































































Comments:

Source files are provided by third party, which will make majority of the items in the checklist not applicable.






Review consisteted of insuring all files provided by outside parties were included in the baseline.



















































































General Guidelines:
- The reviews shall be performed over the portions of the component that were modified as a result of the Change Request. (Note: If this peer review form was not
completed for pervious versions of this component, the Change Owner should review the entire component and complete the checklist in its entirety prior and check
the form into Syngery. This may be done prior to reviewing the modifications for this Change Result)
- The Change Owner shall responsible for completing the entire checklist (Pre and Group review items) prior holding the initial group review.
- New components should include FDD Owner and Intergator as apart of the Group Review Board (Source Code, Integration Manual, and Davinci Files)
- Select "Yes" and add "N/A" to the comments for checklist items that are not applicable for this change















Sheet 2: Source Code






















Rev 6.028-Oct-14
Peer Review Meeting Log (Source Code Review)

























Source File Name:




kzshz2: Intended Use: Identify which .asm, .c, or .h file is being reviewed Rationale: Required for traceability. It will help to ensure this sheet is not attached to the wrong design review form. N/A
Source File Revision:


kzshz2: Intended Use: Identify which version of the source file is being review. Rationale: Required for traceability between source code and review. Auditors will likely require this. N/A

























Module Design Document Name:




kzshz2: Intended Use: Identify which version of the MDD this source file was written against. Rationale: Needed for traceability between source code and MDD N/A
MDD Revision:


kzshz2: Intended Use: Identify which version of the MDD this source file was written against. Rationale: Needed for traceability between source code and MDD N/A

























Data Dictionary Revision:




kzshz2: Intended Use: Identify which version of the Data Dictionary was referenced for ranges during the source file review. Rationale: Needed for traceability between source code and DD N/A




FDD/SER/CMS























and Revision:


nz63rn: Intended Use: Identify which version of which FDD/CMS/SER this source file was written against. Rationale: Needed for traceability between source code and FDD/CMS/SER N/A

Quality Check Items:

































YesNo
Rationale is required for all answers of No









Pre-review checklist for change ownersSoftware Naming Convention V1.2 followed:








































for variable names








X
Comments:

See comments at end of form














































for constant names








X
Comments:

See comments at end of form














































for function names








X
Comments:

See comments at end of form














































for other names (component, memory








X
Comments:

See comments at end of form







mapping handles, typedefs, etc.)






































All buffered outputs written in every path, i.e. no









X
Comments:

See comments at end of form







possibility of an uninitialized value being written






































Group-review Checklist (review board)Synergy version matches change history





kzshz2: Intended Use: Indicate that the the versioning was confirmed by the peer reviewer(s). Rationale: There have been many occassions where versions were not updated in files and as a result Unit Test were referencing wrong versions. This often time leads to the need to re-run of batch tests.



X
Comments:

See comments at end of form
and Version Control version in file comment block





































Change log contains detailed description of changes









X
Comments:

See comments at end of form
and CR number





































Code accurately implements FDD (Document or Model)








X
Comments:

See comments at end of form







































No Compiler Errors or Warnings verified


KMC: Intended Use: To confirm no compiler errors or warnings exist for the code under review (warnings from contract header files may be ignored). Rationale: This is needed to ensure there will be no errors discovered at the time of integration. A Sandox project should be used; QAC can find compiler errors but not warnings.





X
Comments:

See comments at end of form













































FDD test points exist as display variables: declared








X
Comments:

See comments at end of form







static volatile, written once and never used, names













match the FDD













































Software Design and Coding Standards V2.0 followed:








































Code comments are clear, correct, and adequate







X
Comments:

See comments at end of form








and have been updated for the change: [N40] and














all other rules in the same section as rule [N40],























plus [N75], [N12], [N23], [N33], [N37], [N38],























[N48], [N54], [N77], [N79], [N72]
















































Source file (.c and .h) comment blocks are per







X
Comments:

See comments at end of form








standards and contain correct information: [N41], [N42]







































Function comment blocks are per standards and







X
Comments:

See comments at end of form








contain correct information: [N43]







































Code formatting (indentation, placement of







X
Comments:

See comments at end of form








braces, etc.) is per standards: [N5], [N55], [N56],














[N57], [N58], [N59]
















































Embedded constants used per standards; no







X
Comments:

See comments at end of form








"magic numbers": [N12]







































All variables and constants defined at module







X
Comments:

See comments at end of form








level are included in appropriate MemMap














section: [N25] and Naming Conventions
















































All execution-order-dependent code can be







X
Comments:

See comments at end of form








recognized by the compiler: [N80]







































No possibility of a non-terminating loop: [N63]







X
Comments:

See comments at end of form

















































No possibility of divide by zero: [N65]







X
Comments:

See comments at end of form

















































All integer division and modulus operations







X
Comments:

See comments at end of form








handle negative numbers correctly: [N76]







































All typecasting and fixed point arithmetic,







X
Comments:

See comments at end of form








including all use of fixed point macros and














timer functions, is correct and has no possibility























of unintended overflow or underflow: [N66]
















































No possibility of converting a negative floating







X
Comments:

See comments at end of form








point value to an unsigned type: [N67]







































All conversions between signed and unsigned







X
Comments:

See comments at end of form








types handle msb==1 as intended: [N78]







































No possibility of dereferencing a null







X
Comments:

See comments at end of form








pointer: [N70]







































Global outputs (RTE and Non-RTE) Initialized:







X
Comments:

See comments at end of form








[N24]







































Module outputs are limited to the legal range







X
Comments:

See comments at end of form








defined in the FDD Data dictionary: [N53]







































All code is mapped with FDD (all FDD







X
Comments:

See comments at end of form








subfunctions and/or model blocks identified














with code comments; all code corresponds to























some FDD subfunction and/or model block): [N40]
















































Struct types used for NvM have







X
Comments:

See comments at end of form








elements declared in decreasing order by size














and are not nested or used in arrays: [N84], [N85]
















































No violations of other coding standard rules







X
Comments:

See comments at end of form








identified during review
























































































General Notes / Comments:























Code is provided by TI for the FEE driver, which they do not follow our same coding standards and conventions. The review consisted of ensuring that

files provided with version 1.23.3 of the FEE driver were captured in the baseline for the FEE component.































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Kevin Smith


Review Date :

08/08/16
































Lead Peer Reviewer:


Ramanujan V.


Approved by Reviewer(s):



Yes































Other Reviewer(s):










































































Sheet 3: QAC






















Rev 6.028-Oct-14
Peer Review Meeting Log (QAC Review)


























Module Name:

kzshz2: Intended Use: Identify which .c file is being analyzed Rationale: Required for traceability. It will help to ensure this sheet is not attached to the wrong design review form. N/A

Source File Revision:


N/A

Module

of



























Compliance Guidelines Version:















































kzshz2: Intended Use: Identify specific changes in results (new violation present, previous violation corrected, etc.). Changes to the version of the tool or the way the results were gathered should be described here also. This should be filled out prior to the review by the change owner. Rationale: Gives reviewers an what needs to be focused on. Forces the change owner to compare with previous results to catch any differences that may otherwise go unoticed Brief Summary of Changes (In Results or Tool):


































































Quality Check Items:

































YesNo
Rationale is required for all answers of No









Pre-review
checklist for change owners
QAC version is correct and did not change (List version)







kzshz2: Intended Use: Identify which version of the QAC Subproject was used and if any of the personalities may have changed. Rationale: Will help ensure this is factored into evaluating the results
X
Comments:

See comment section below







































Contract Folder's header files are appropriate





kzshz2: Intended Use: Identify that the contract folder contains only the information required for this component. All other variables, constants, function prototypes, etc. should be removed. Rationale: This will help avoid unit testers having to considers object not used. It will also avoid having other files required for QAC.


X
Comments:

See comment section below









































Group-review Checklist (review board)100% Compliance to the MISRA Compliance GuidelinesX
Comments:

See comment section below







































Cyclomatic complexity and Static path count ok per






Creager, Kathleen: use Browse Function Metrics, STCYC and STPTH

X
Comments:

See comment section below

Design and Coding Standards rule [N47]






































General Notes / Comments:























While QAC was performed on all the source files from TI, none of the warnings were corrected

We verified that there were no QAC warnings for changed lines of code































LN: Intended Use: Identify who were the reviewers and if the reviewed changes have been approved. Rationale: Since this Form will be attached to the Change Request it will confirm the approval and provides feedback in case of audits. KMC: Group Review Level removed in Rev 4.0 since the design review is not checked in until approved, so it would always be DR4. Review Board:


























Change Owner:

Kevin Smith


Review Date :

08/08/16
































Lead Peer Reviewer:


Ramanujan V.


Approved by Reviewer(s):



Yes































Other Reviewer(s):