Hi All,
I'm trying to use the FEE driver with a TMS570LS3137.
I call TI_Fee_Init() and can see that the Flash memory at 0xF0200000 has been initialised with the correct headers, but doing a TI_Fee_WriteSync() doesn't seem to add any blocks.
In the init of my main I have:
/* Initialize FEE. This will create Virtual sectors, initialize global variables etc.*/ TI_Fee_Init(); do { TI_Fee_MainFunction(); FeeStatus=TI_Fee_GetStatus(0); } while(FeeStatus!= IDLE);
Then in my main loop I have:
TI_Fee_MainFunction(); FeeStatus=TI_Fee_GetStatus(0); if((FeeStatus == IDLE) && (CtrlParams.FlashEEControl == 1)) { /* Write the block into EEP Synchronously. Write will not happen if data is same. */ TI_Fee_WriteSync(1, (uint8 *) &Params); CtrlParams.FlashEEControl = 2; } FeeStatus=TI_Fee_GetStatus(0); if((FeeStatus == IDLE) && (CtrlParams.FlashEEControl == 2)) { /* Write the block into EEP Synchronously. Write will not happen if data is same. */ TI_Fee_WriteSync(2, (uint8 *) &CtrlParams); CtrlParams.FlashEEControl = 3; }
My virtual sector and block configuration in ti_fee_cfg.c is:
const Fee_VirtualSectorConfigType Fee_VirtualSectorConfiguration[TI_FEE_NUMBER_OF_VIRTUAL_SECTORS] = { /* Virtual Sector 1 */ { /* Virtual sector number */ 1U, /* Bank */ 7U, /* Start Sector */ (Fapi_FlashSectorType)0U, /* End Sector */ (Fapi_FlashSectorType)0U }, /* Virtual Sector 2 */ { /* Virtual sector number */ 2U, /* Bank */ 7U, /* Start Sector */ (Fapi_FlashSectorType)1U, /* End Sector */ (Fapi_FlashSectorType)1U } , /* Virtual Sector 3 */ { /* Virtual sector number */ 3U, /* Bank */ 7U, /* Start Sector */ (Fapi_FlashSectorType)2U, /* End Sector */ (Fapi_FlashSectorType)2U } , /* Virtual Sector 4 */ { /* Virtual sector number */ 4U, /* Bank */ 7U, /* Start Sector */ (Fapi_FlashSectorType)3U, /* End Sector */ (Fapi_FlashSectorType)3U } }; /* Block Configurations */ /* SourceId : HL_Fee_SourceId_2 */ /* DesignId : HL_FEE_DesignId_3, HL_FEE_DesignId_8 */ /* Requirements : HL_FEE_SR2, HL_FEE_SR3, HL_FEE_SR4, HL_FEE_SR6, HL_FEE_SR85, HL_FEE_SR86 HL_FEE_SR87, HL_FEE_SR88, HL_FEE_SR89, HL_FEE_SR90, HL_FEE_SR91 */ const Fee_BlockConfigType Fee_BlockConfiguration[TI_FEE_NUMBER_OF_BLOCKS] = { /* Block 1 */ { /* Block number */ 1U, /* Block size */ (NUM_OF_STORED_EE_PARAMS * 4)/*200U*/, /* Block immediate data used */ TRUE, /* Number of write cycles */ 0x8U, /* Device Index */ 0x00000000U, /* Number of DataSets */ 1U, /* EEP number */ 1U } , /* Block 2 */ { /* Block number */ 2U, /* Block size */ (NUM_OF_STORED_EE_CANPARAMS * 4)/*200U*/, /* Block immediate data used */ TRUE, /* Number of write cycles */ 0x8U, /* Device Index */ 0x00000000U, /* Number of DataSets */ 1U, /* EEP number */ 1U } , /* If project needs more than 16 blocks, add additional blocks here and also modify TI_FEE_TOTAL_BLOCKS_DATASETS and TI_FEE_NUMBER_OF_BLOCKS in ti_fee_cfg.h */ /* USER CODE BEGIN (1) */ /* USER CODE END */ };
Should this work, or am I setting something up incorrectly?
There seems to be confusing use of EEP numbers of 0/1 and 1/2 in the sample code and documents.
Can anyone offer any pointers?
Regards, Ian.