Flash driver fails when configuring swap at 180MHz

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Flash driver fails when configuring swap at 180MHz

Jump to solution
696 Views
patricklewis
Contributor I

When trying to initialize flash swapping for reprogramming purposes, I am failing when calling to execute flash swap configuration commands using the FLASH_SwapControl function in the fsl_flash.c driver file when running my core clock frequency at 180MHz. Note, that it works fine when running at 120MHz. I have verified that my flash clock is divided down by 7 so that it is below the required 28MHz. The code used for configuring the flash is right out of the demo app up for reading/writing flash right up until we configure the swap as shown below:

--------------------------------------------

DEMO APP CODE from main function of SDK_2.0_MK26FN2M0xxx18/boards/twrk65f180m/driver_examples/flash/flash_erase_program_verify/flash_erase_program_verify.c

--------------------------------------------

OUR CODE BELOW:

--------------------------------------------

    PRINTF("\r\n");
    activeBlock = (FTFE->FCNFG >> 3) & 0x01;

    if( activeBlock == 0 )
    {
        PRINTF("Program Flash Half 0 (Blocks 0/1) located at address 0x0000\n");
        PRINTF("Executing from Program Flash Half 0 (Blocks 0/1) \n\n");
        settingsAddress =  pflashTotalSize - (3*pflashSectorSize) - pflashSectorSize;
    }
    else
    {
        PRINTF("Program Flash Half 1 (Blocks 2/3) located at address 0x0000\n");
        PRINTF("Executing from Program Flash Half 1 (Blocks 2/3) \n\n");
        settingsAddress =  (pflashTotalSize / 2) - (3*pflashSectorSize) - pflashSectorSize;
    }

    flashSwapAddress = (pflashTotalSize / 2) - pflashSectorSize;
    result = FLASH_SwapControl(&flashDriver, flashSwapAddress, kFLASH_swapControlOptionReportStatus, &flashSwapState);
    if( result != kStatus_FLASH_Success )
    {
        PRINTF("\r\n ERROR flash_SwapControl optionReport Status Result = %d 0x%x", result, result);
    }

................................

MORE UNRELATED CODE

The bolded line of code returns a 0x67 from the attempted call of flash_command_sequence. The 0x67 indicates a kFlash_AccessError.

Is there something we need to configure in the driver, or something else that needs to be done prior to making this call when running in High Speed mode?

0 Kudos
1 Solution
467 Views
mjbcswitzerland
Specialist V
0 Kudos
1 Reply
468 Views
mjbcswitzerland
Specialist V
0 Kudos