TMS570LS0914: FEE data corrupted

Part Number: TMS570LS0914
Other Parts Discussed in Thread: HALCOGEN

Hi Team,

I am working on a TMS570LS0914 based application with the following setup:

System Configuration

  • MCU: TMS570LS0914
  • Bootloader present
  • Application start address: 0x00020000
  • Tool: HALCoGen (TI FEE driver)
  • FEE storage: Flash Bank 7
  • FEE configuration:
    • Number of blocks: 16
    • Block size: 64 bytes
    • Block overhead: 24 bytes
    • Virtual sectors:
      • Total: 4
      • Per EEPROM: 2
    • Virtual page size: 8 bytes
    • Variable datasets: Enabled
    • Checksum: Enabled 

Observations

  • Without bootloader
    • Application runs correctly
    • FEE read/write works as expected
    • ASW (application software) behavior is normal
  • With bootloader (app at 0x20000)
    • BSW works correctly
    • FEE APIs execute without returning explicit errors
    • BUT ASW behavior becomes incorrect
  • Key Finding
    • When I disable all NVM/FEE-related parameters, the ASW works correctly
    • This indicates the issue is related to FEE data read/write affecting ASW variables
  • Critical Observation (Block-specific behavior)
    • FEE has 16 blocks (64 bytes each)
    • Data is used in multiple blocks (e.g., Block 5 and Block 6) 

 Case 1:Using Block 6 only → ASW works correctly

 Case 2:Using both Block 5 and Block 6 → ASW fails

 Case 3:Disabling Block 5 → ASW works again 

Analysis Done

  • Verified linker configuration:
    • Application located at 0x00020000
    • No obvious RAM overlap
  • FEE data stored in Bank 7
  • Behavior suggests:
    • No direct crash or exception
    • Possible data corruption during FEE read
  • Issue seems position/layout dependent, not specific to block content 

  Questions

  1. Could this be related to:
    • FEE block packing across virtual sector boundaries?
    • Alignment issues due to 8-byte write granularity?
  2. Is there any known issue when:
    • Application is relocated (bootloader case)
    • FEE layout remains unchanged?
  3. Does FEE require:
    • Additional free space (beyond configured blocks) for internal operations like garbage collection
  4. Could virtual sector size be insufficient leading to:
    • corruption when additional blocks (e.g., Block 5) are enabled?
  5. Any known constraints regarding:
    • block ordering
    • block alignment
    • or total usable capacity vs configured capacity? 

Regards,

Prajakta