This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS3137: TI FEE - Struck in TI_FeeInternal_PollFlashStatus()

Part Number: TMS570LS3137

Hi, 

We are using TI FEE Driver in our project. 

We have got a scenario where the code got has struck in TI_FeeInternal_PollFlashStatus() API. 
The call to this API is from TI_Fee_Init().

We have few questions related to this. 

1. What could be the reason for this to happen ? 
2. Why is the timeout so long ? 
3. Is there any other recovery mechanism ?


  • 1. What could be the reason for this to happen ? 

    TI_FeeInternal_PollFlashStatus() is to get the flash module status. If the module is busy, the function will wait until the busy bit becomes 0. The timeout in this function, 0xFFFF0000, specifies the maximum time to wait. The code should not get stuck in this function. 

    2. Why is the timeout so long ? 

    The timeout is 0xFFFF0000. It is around 23 seconds. The maximum erase time of one FEE sector is 8 seconds. There are 4 sectors in total, so the maximum erase time of one virtual sector (2 physical sectors) is 16 seconds.

    3. Is there any other recovery mechanism ?

    The Fee_Init() should not take so long. What is your FEE configuration? Do you change the block configuration dynamically, for example increase the number of blocks, and block length, etc?

  • Hi Wang,

    Thanks for your response. 

    (1)
    By looking at the code, it seems like we are checking the ESUSP filed in FMSTAT register. 

    Is that what you mean by "module is busy" ?

    (3)
    The configuration we have used is - Two Virtual Sectors on four physical sectors - Single EEPROM.
    We don't change anything dynamically. 

  • Hi Wang, 

    Have you got any updates on this ? Thanks 

  • Hi Javish,

    Can you post your FEE configuration and code section that shows how the FEE APIs are called? Thanks

  • /** @file ti_fee_cfg.c 
    *   @brief FEE Driver Implementation File
    *   @date 11-Dec-2018
    *   @version 04.07.01
    *  NVM Config tool                 : 3.0.3
    *
    *   This is the FEE configuration parameter file.
    */
    
    /* 
    * Copyright © 2009-2018 Texas Instruments Incorporated - www.ti.com  
    * 
    * 
    *  Redistribution and use in source and binary forms, with or without 
    *  modification, are permitted provided that the following conditions 
    *  are met:
    *
    *    Redistributions of source code must retain the above copyright 
    *    notice, this list of conditions and the following disclaimer.
    *
    *    Redistributions in binary form must reproduce the above copyright
    *    notice, this list of conditions and the following disclaimer in the 
    *    documentation and/or other materials provided with the   
    *    distribution.
    *
    *    Neither the name of Texas Instruments Incorporated nor the names of
    *    its contributors may be used to endorse or promote products derived
    *    from this software without specific prior written permission.
    *
    *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
    *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
    *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
    *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
    *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
    *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
    *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
    *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
    *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
    *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
    *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    *
    */
    
    
    /* USER CODE BEGIN (0) */
    /* USER CODE END */
    
    /* Include Files                                                              */
    
    #include "ti_fee.h"
    
    
    
    /*----------------------------------------------------------------------------*/
    /* Fee Version Check                                                          */
    
     #if (TI_FEE_MAJOR_VERSION != 3U)
         #error TI_FEE_Cfg.c: TI_FEE_SW_MAJOR_VERSION of TI_FEE.h is incompatible.
     #endif /* FEE_SW_MAJOR_VERSION */
     #if (TI_FEE_MINOR_VERSION != 0U)
         #error TI_FEE_Cfg.c: TI_FEE_SW_MINOR_VERSION of TI_FEE.h is incompatible.
     #endif /* FEE_SW_MINOR_VERSION */
     #if (TI_FEE_PATCH_VERSION != 2U)
         #error TI_FEE_Cfg.c: TI_FEE_SW_PATCH_VERSION of TI_FEE.h is incompatible.
     #endif /* FEE_SW_PATCH_VERSION */
    
    /*SAFETYMCUSW 580 S MR:1.1 <APPROVED> "Reason - This is the format to use for specifying memorysections."*/
     #define FEE_START_SEC_CONST_UNSPECIFIED
     /*SAFETYMCUSW 338 S MR:19.1 <APPROVED> "Reason - This is the format to use for specifying memorysections."*/
    #include "MemMap.h" 
    
    /*----------------------------------------------------------------------------*/
    /* TI Fee Configurations                                                     */
    
    /** @struct Fee_VirtualSectorConfigType 	*/
    /*  @brief Virtual Sector Configuration 	*/
    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)1U
        },
            /* Virtual Sector 2 */
        {
            /* Virtual sector number */      2U,
            /* Bank */                       7U,
            /* Start Sector */      (Fapi_FlashSectorType)2U,
            /* 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 */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 2 */
        {
            /* Block number */                     2U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 3 */
        {
            /* Block number */                     3U,
            /* Block size */                       1U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 4 */
        {
            /* Block number */                     4U,
            /* Block size */                       1U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 5 */
        {
            /* Block number */                     5U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 6 */
        {
            /* Block number */                     6U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 7 */
        {
            /* Block number */                     7U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 8 */
        {
            /* Block number */                     8U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 9 */
        {
            /* Block number */                     9U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 10 */
        {
            /* Block number */                     10U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 11 */
        {
            /* Block number */                     11U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 12 */
        {
            /* Block number */                     12U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 13 */
        {
            /* Block number */                     13U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 14 */
        {
            /* Block number */                     14U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 15 */
        {
            /* Block number */                     15U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 16 */
        {
            /* Block number */                     16U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 17 */
        {
            /* Block number */                     17U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 18 */
        {
            /* Block number */                     18U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 19 */
        {
            /* Block number */                     19U,
            /* Block size */                       24U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 20 */
        {
            /* Block number */                     20U,
            /* Block size */                       1U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 21 */
        {
            /* Block number */                     21U,
            /* Block size */                       1U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 22 */
        {
            /* Block number */                     22U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 23 */
        {
            /* Block number */                     23U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 24 */
        {
            /* Block number */                     24U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 25 */
        {
            /* Block number */                     25U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 26 */
        {
            /* Block number */                     26U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 27 */
        {
            /* Block number */                     27U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 28 */
        {
            /* Block number */                     28U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 29 */
        {
            /* Block number */                     29U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 30 */
        {
            /* Block number */                     30U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 31 */
        {
            /* Block number */                     31U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 32 */
        {
            /* Block number */                     32U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 33 */
        {
            /* Block number */                     33U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 34 */
        {
            /* Block number */                     34U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 35 */
        {
            /* Block number */                     35U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 36 */
        {
            /* Block number */                     36U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 37 */
        {
            /* Block number */                     37U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 38 */
        {
            /* Block number */                     38U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 39 */
        {
            /* Block number */                     39U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 40 */
        {
            /* Block number */                     40U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 41 */
        {
            /* Block number */                     41U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 42 */
        {
            /* Block number */                     42U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 43 */
        {
            /* Block number */                     43U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 44 */
        {
            /* Block number */                     44U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 45 */
        {
            /* Block number */                     45U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 46 */
        {
            /* Block number */                     46U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 47 */
        {
            /* Block number */                     47U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 48 */
        {
            /* Block number */                     48U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 49 */
        {
            /* Block number */                     49U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 50 */
        {
            /* Block number */                     50U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 51 */
        {
            /* Block number */                     51U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 52 */
        {
            /* Block number */                     52U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 53 */
        {
            /* Block number */                     53U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 54 */
        {
            /* Block number */                     54U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 55 */
        {
            /* Block number */                     55U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 56 */
        {
            /* Block number */                     56U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 57 */
        {
            /* Block number */                     57U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 58 */
        {
            /* Block number */                     58U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 59 */
        {
            /* Block number */                     59U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 60 */
        {
            /* Block number */                     60U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 61 */
        {
            /* Block number */                     61U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 62 */
        {
            /* Block number */                     62U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 63 */
        {
            /* Block number */                     63U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 64 */
        {
            /* Block number */                     64U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 65 */
        {
            /* Block number */                     65U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 66 */
        {
            /* Block number */                     66U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 67 */
        {
            /* Block number */                     67U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 68 */
        {
            /* Block number */                     68U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 69 */
        {
            /* Block number */                     69U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 70 */
        {
            /* Block number */                     70U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 71 */
        {
            /* Block number */                     71U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 72 */
        {
            /* Block number */                     72U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 73 */
        {
            /* Block number */                     73U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 74 */
        {
            /* Block number */                     74U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 75 */
        {
            /* Block number */                     75U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 76 */
        {
            /* Block number */                     76U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 77 */
        {
            /* Block number */                     77U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 78 */
        {
            /* Block number */                     78U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 79 */
        {
            /* Block number */                     79U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 80 */
        {
            /* Block number */                     80U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 81 */
        {
            /* Block number */                     81U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 82 */
        {
            /* Block number */                     82U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 83 */
        {
            /* Block number */                     83U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 84 */
        {
            /* Block number */                     84U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 85 */
        {
            /* Block number */                     85U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 86 */
        {
            /* Block number */                     86U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 87 */
        {
            /* Block number */                     87U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 88 */
        {
            /* Block number */                     88U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 89 */
        {
            /* Block number */                     89U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 90 */
        {
            /* Block number */                     90U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 91 */
        {
            /* Block number */                     91U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 92 */
        {
            /* Block number */                     92U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 93 */
        {
            /* Block number */                     93U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 94 */
        {
            /* Block number */                     94U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 95 */
        {
            /* Block number */                     95U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 96 */
        {
            /* Block number */                     96U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 97 */
        {
            /* Block number */                     97U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 98 */
        {
            /* Block number */                     98U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 99 */
        {
            /* Block number */                     99U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 100 */
        {
            /* Block number */                     100U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 101 */
        {
            /* Block number */                     101U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        },
            /* Block 102 */
        {
            /* Block number */                     102U,
            /* Block size */                       120U,
            /* Block immediate data used */        TRUE,
            /* Number of write cycles */           0xFFFFU,
            /* Device Index */                     0x00000000U,
            /* Number of DataSets */               1U,
            /* EEP number */                       0U
        }
    		/* 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 */
     
    };
    
    /*SAFETYMCUSW 580 S MR:1.1 <APPROVED> "Reason - This is the format to use for specifying memorysections."*/
    #define FEE_STOP_SEC_CONST_UNSPECIFIED
    /*SAFETYMCUSW 338 S MR:19.1 <APPROVED> "Reason - This is the format to use for specifying memorysections."*/
    #include "MemMap.h"
    
    /*----------------------------------------------------------------------------*/
    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    


    The above is the FEE configuration. 


    We have a scheduler and TI_Fee_Init() is called in the initialization. 

    Other FEE APIs are called form a 5ms periodic task 

  • Are you using RTOS and the FEE APIs are called in your OS tasks?

    As TRM says that the Flash module control registers can only be read and/or written by the CPU while in privileged mode.

    The F021 Flash APIs must be run in a privileged mode (a mode other than user) to allow access to the Flash memory controller registers. If the task is in user mode, the register write operation may cause abort. 

    Can you try the FEE operation in a task which is in a privileged (system) mode? You can create the task by setting the bit  portPRIVILEGE_BIT in uxPriority.

  • We are not using a RTOS, we use a basic scheduler. 

    I believe that the privileged mode has been handled. 

    Does any lower/under voltage affect the FEE's behaviour ?  
      


  • Does any lower/under voltage affect the FEE's behaviour ?  

    The minimum flash pump supply voltage is 3V. Lower voltage does affect the flash operation.

    Can I have your main() function where you call TI_Fee_Init()?

    Do you call F02 Flash API to erase sectors of flash BANK 0 or BANK 1 or write data to flash bank 0 or bank 1?

  • Yes we do use Flash APIs to erase and program BANK0 and BANK1


    This is the call hierarchy of TI_Fee_Init 
    TI_Fee_Init will be called during initialization by the scheduler. 

  • Hi Javish,

    Can you please erase the flash Bank 7 when loading your program to flash from CCS?

  • Hi Wang,

    We do that. We erase Bank 7 when we load the program using CCS. 

    This scenario which we have explained has happened in runtime. 

    Can we have a call scheduled, so that we can discuss this in better way ? 

  • I don't understand the work flow in your prior post.

    After you call TI_Fee_Init(), is any data of virtual sector header programmed to the FEE? for example the first 2 words

  • When code reaches line 701: (void)TI_FeeInternal_PollFlashStatus();

    The first two words of VS header should be programmed to FEE:

    All the remaining bytes of the header will be programmed to FEE after calling TI_Fee_MainFunction();

  • Hi Wang,

    I hope all these are handled by the FEE driver itself. 

    Can we have a call scheduled to discuss this in detail ?
    We are in a critical stage of our project and we would like to get this sorted out soon. Thank You 

  • Sure, we can have a call. Please let me the meeting schedule. How about 11:00am~11:30am today?

  • Hi Wang, 

    Thank you. Could you please let me know in which Time zone you are in ?
    We work in UK (GMT)

  • Hi Wong, 

    Sorry to nudge you again. 

    Any updates on the call ?

  • I am located in Texas. You can schedule a meeting for tomorrow. 

  • Hi Wang, 

    I had sent you a meeting request in the private chat. 
    Could you please check and respond over there. Thank You 

  • I am sorry for missing the private message. Can you please add the meeting to my calendar? and tell me the time in this e2e thread. Thanks

  • I wrote a testcase using your ti_fee_cfg.c, and changed the value of TI_FEE_NUMBER_OF_BLOCKS and TI_FEE_TOTAL_BLOCKS_DATASETS to 102 in ti_fee_cfg.h, and tested on my board. It works.

  • Can you please do another test as below? I'd like to check if the EEPROM on your device works or not.

    1. add FLASH7 to you linker cmd file

    2. relocate const section to FLash7

    3. loading your code to flash

    then check if the const (s_vim_init) is loaded to bank 7:

    Example:

    MEMORY
    {
    VECTORS (X) : origin=0x00000000 length=0x00000020
    FLASH0 (RX) : origin=0x00000020 length=0x0013FFE0
    FLASH7 (R) : origin=0xF0200000 length=0x00010000
    STACKS (RW) : origin=0x08000000 length=0x00001500
    RAM (RW) : origin=0x08001500 length=0x0002EB00

    /* USER CODE BEGIN (2) */
    /* USER CODE END */
    }

    /* USER CODE BEGIN (3) */
    /* USER CODE END */

    /*----------------------------------------------------------------------------*/
    /* Section Configuration */

    SECTIONS
    {
    .intvecs : {} > VECTORS
    .text : {} > FLASH0
    .const : {} > FLASH7
    .cinit : {} > FLASH0
    .pinit : {} > FLASH0
    .bss : {} > RAM
    .data : {} > RAM
    .sysmem : {} > RAM

    FEE_TEXT_SECTION : {} > FLASH0
    FEE_CONST_SECTION : {} > FLASH0
    FEE_DATA_SECTION : {} > RAM

    /* USER CODE BEGIN (4) */
    /* USER CODE END */
    }

    After loading the code through CCS:

  • Hi Wang, 

    Thanks for your response. 
    I have added a meeting to your calendar. 

    We think that the EEPROM on our device works fine. 
    I will try out the steps suggested by you and let you know the results. 

  • I saw the meeting invitation at 9:30am today. I will join the meeting.

    Can you share all FEE related functions and files with me? I 'd like to run the test on my bench.

  • Hi Wang,

    I am Anitha who is working with Javish on the same reset (NVM) issue. Javish shared the meeting minutes of the discussion. Regarding the error recovery routine which we think it can cause more execution time, I would like to locate the routine in the TI's fee driver so that I can force a call to that and check if that routine exceeds our watchdog reset timin duration. Can you help me with it to locate the possible error recovery routine in the fee driver please?

  • Does TI_Fee_ErrorRecovery() work in your case?

  • It is not about TI_Fee_ErrorRecovery() API. I talked about error recovery routine handled bit error scenario you mentioned during the meetign with javish. 

    We want to locate that routine. Please let me know if this clarifies.

  • Hi Anitha,

    Per my meeting notes, Iavish tries reproduce the issue, and dump the FEE memory, and share the memory content with me.

    Save the memory content (whole FEE bank) to a file with COFF format (.out).

  • Hi Wang,

    Yes, let's do that and share the dump with you. 

    My requirement is: I want to run the fee error recovery routines and see if that gets executed beyond our watchdog expiry time so that we can use some containment solution for the error recovery routines from our side. So I request you help me identify the error recovery routines of the fee driver so that I can force them to get called and see the behavior. Hope this clarifies the inputs I expect from you. 

    Please let me know if we need a call to clarify the same. Thanks in advance. 

  • The FEE user guide suggests that the project needs to implement error recovery mechanism to recover from serious errors.

    1. TI_FeeErrorCode( ) is called periodically to check if there are any severe errors

    • Error_SetupStateMachine
    • Error_NoActiveVS
    • Error_CopyButNoActiveVS
    • Error_EraseVS

    2. If any error mentioned in #1, call  TI_Fee_ErrorRecovery( ) with proper parameters

    Please refer to the FEE driver user guide.

  • Hi Wang, 

    Thanks for the inputs. I will look at them and get back to you. Now the issue takes us in a different direction. Javish will share the observations shortly. 

  • Hi Wang, 

    We have got a few more modules with the same issue and we have got a few more details about the issue. 

    The issue occurs only in the below combination of virtual sector states always and with the memory dump of the sectors (I don't know why I can't attach the out and ECC files here in the thread). Do you have a mail id to which I can send the files? 

    VS1 - Copy State 
    VS2 - Active State 

    and we have found the exact line in the code where this issue occurs. 
    Line number 1519 in ti_fee_util.c  API - TI_FeeInternal_UpdateBlockOffsetArray()  

    At this line of execution, we can not have the variable 'u32BlockStartAddress' or 'ppu32ReadHeader' have the address value of 0xF021000C which is beyond the valid address. 

    Attached is the screenshot of this behavior that was captured as proof. Can you please look into this issue? Thank you. 

  • Hi,

    You can attach files to this thread: 

    1. Select the file you want to upload

    2. Drag it over to the message box on E2E

    or

    1. Click "Insert --> Image/video/file"

    2. Select file, 

    3. Click "Upload" to upload file to E2E message box

  • I tried the same and it is uploading the files when I try it. They are .out files and ECC files. Are there any restrictions on the file format? 

  • It is fine to upload a *.out file. You can sent it directly to my email.

  • Javish has sent a mail with the out and ECC files. Please check. 

  • Hi Anitha,

    I haven't got the memory dump file, but got the screenshot:

  • Hi Wang,

    The mail which we have sent also has a zip file included in it.



    We will send the mail again. Could you please respond to the same mail. Thank You 

  • Hi Javish,

    The attachments were removed by the firewall. Can you send to my personal email? or you can use box to share the files with us.

  • Hi Wang, 

    I have sent the details to your personal mail. 

  • Hi Javish,

    I got your email which shows a attachment. But I am not able to open it in office, and will try it after back home. Thanks

  • The attachment to my personal email is also empty. Can you change the file extension of  *.out to *.txt, then upload to e2e, or send to my email?

  • Hi Wang, 

    I have sent you a link in mail. You can get the files from that link. 

  • Hi Javish,

    I got 3 out files, and will read the data on my board.

  • Hi Wang,

    I sent a detailed mail about the issue and a reminder on 23rd January as well. Please respond to the mail or this chat at the earliest. 

    As I mentioned in the e-mail this issue has become a critical issue at our end. Please revert. Thanks. 

  • Hi Anitha,

    I got your mail, and told you that I need some time to debug it. Sorry for late response.

  • Hi Wang,

    Please let me know the update on this issue debugging. Thanks. 

    We could not proceed further with our analysis and we are waiting for your input. 

  • I have been trying to reproduce the issue, but I haven't. I use your FEE config data. 


    int main(void)
    {
    /* USER CODE BEGIN (3) */
    unsigned int BlockNumber, BlockOffset, Length;
    unsigned char *Read_Ptr=read_data;

    TI_Fee_AddressType blockAddr; // Fee_oCurrentStartAddress

    unsigned int loop, index;

    /* Initialize FEE. This will create Virtual sectors, initialize global variables etc.*/
    TI_Fee_Init();

    do
    {
    TI_Fee_MainFunction();
    delay();
    Status=TI_Fee_GetStatus(0 );
    }
    while(Status!= IDLE);

    loop = 0;
    while(1){
    for(index=0; index<128; index++)SpecialRamBlock[index] = index + loop;

    for(BlockNumber=0; BlockNumber<103; BlockNumber++)
    {
    TI_Fee_WriteAsync(BlockNumber, &SpecialRamBlock[0]);
    do
    {
    TI_Fee_MainFunction();
    delay();
    Status=TI_Fee_GetStatus(0);
    }
    while(Status!=IDLE);

    blockAddr = *(unsigned int*)(0xF020FF60);
    if(blockAddr != 0xFFFFFFFF){
    asm(" nop");
    }
    }

    if (loop ==0 )
    {
    loop = 2;
    }
    else{
    loop = 0;
    }

    blockAddr = *(unsigned int*)(0xF020FF60);
    if(blockAddr != 0xFFFFFFFF){
    asm(" nop");
    }

    blockAddr = *(unsigned int*)(0xF020FFFC);
    if(blockAddr != 0xFFFFFFFF){
    asm(" nop");
    }
    }


    while(1);
    /* USER CODE END */

    return 0;
    }

    Can you tell me your watchdog settings? How often is the reset generated?

  • dwwdInit(Generate_Reset, 4095, Size_100_Percent);
    dwdCounterEnable();

    I use this watchdog settings to generate reset. RTI clock is 2MHz.

  • Our external WD triggers reset every 800 msec.