Using i.MXRT105 FlexSPI for booting and save data

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

Using i.MXRT105 FlexSPI for booting and save data

Jump to solution
2,094 Views
thanhnambka
Contributor III

Dear all,

I am working on customer board using MIMXRT1052CVL5B for supervisor application. This board using Qflash W25Q256JV (via FlexSPI config) for bootting. 

I am using IAR Embedded Workbench IDE 9.20.4. Config macro: XIP_EXTERNAL_FLASH=1, XIP_BOOT_HEADER_ENABLE=1, XIP_BOOT_HEADER_DCD_ENABLE=1. 

To reduce cost, i want using this Qflash W25Q256JV to read/write user data config. However, I don't know how to do it?

Thanks for your help.

 

Labels (1)
0 Kudos
Reply
1 Solution
2,021 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thanks for your reply.
Firstly, your proposal is able to make it, next, it needs to relocate the FlexSPI driver into the internal RAM prior to reading or writing the data section, I'd like to suggest you refer to the polling_transfer (~\boards\evkbimxrt1050\driver_examples\flexspi\nor\polling_transfer) in the SDK library.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

View solution in original post

0 Kudos
Reply
8 Replies
2,075 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thank you for your interest in NXP Semiconductor products and for the opportunity to serve you.
According to your reply, it seems like you want to modify the hyperflash_config to fit the W25Q256JV on your custom board.

jeremyzhou_0-1647413085373.png

const flexspi_nor_config_t qspiflash_config = {
    .memConfig =
        {
            .tag              = FLEXSPI_CFG_BLK_TAG,
            .version          = FLEXSPI_CFG_BLK_VERSION,
            .readSampleClksrc=kFlexSPIReadSampleClk_LoopbackFromDqsPad,
            .csHoldTime       = 3u,
            .csSetupTime      = 3u,
            .sflashPadType    = kSerialFlash_4Pads,
            .serialClkFreq    = kFlexSpiSerialClk_100MHz,
            .sflashA1Size     = 32u * 1024u * 1024u,
            .lookupTable =
                {
                    // Read LUTs
                    FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
                    FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
                },
        },
    .pageSize           = 256u,
    .sectorSize         = 4u * 1024u,
    .blockSize          = 64u * 1024u,
    .isUniformBlockSize = false,
};


If yes, please use the below code to replace the hyperflash_config.
To be prudent, I'd like to know whether your custom board contains the SDRAM prior to sharing some advice for modifying the linker file.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

 

 

 

0 Kudos
Reply
2,073 Views
thanhnambka
Contributor III

Hi jeremyzhou, thanks for your reply.

My custom board contains SDRAM: IS42S16160J-6BLI. I've modified XIP file like your suggest. 

0 Kudos
Reply
2,045 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thanks for your reply and clarification.
Regarding the ICF file, it needs just modify the size of the flash is enough, just below figure shows.

jeremyzhou_0-1647477924649.png

Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

 

0 Kudos
Reply
2,041 Views
thanhnambka
Contributor III

Thanks for your advice.

Assume my program has maximum length to address 0x602F_FFFF, i want using from address  0x6030_0000 to save supervisor application's data. But i don't read/write this data.

0 Kudos
Reply
2,022 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thanks for your reply.
Firstly, your proposal is able to make it, next, it needs to relocate the FlexSPI driver into the internal RAM prior to reading or writing the data section, I'd like to suggest you refer to the polling_transfer (~\boards\evkbimxrt1050\driver_examples\flexspi\nor\polling_transfer) in the SDK library.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply
1,971 Views
thanhnambka
Contributor III

I was solved the problem by modify linker's IAR to relocate FlexSPI driver to internal ram.

thanhnambka_0-1647861382424.png

 

Thanks so much to @jeremyzhou 

2,012 Views
thanhnambka
Contributor III

My code is large, therefore it needs to relocate the FlexSPI driver into the external RAM.

Can you instruct me modify linker to relocate FlexSPI driver into the external RAM.

0 Kudos
Reply
1,981 Views
jeremyzhou
NXP Employee
NXP Employee

Hi,
Thanks for your reply.
1) Can you instruct me modify linker to relocate FlexSPI driver into the external RAM.
-- Just as I mentioned in the previous reply, there's a polling_transfer demo (~\boards\evkbimxrt1050\driver_examples\flexspi\nor\polling_transfer) in the SDK library, you can refer to the linker file of the demo to learn the FlexSPI driver into either internal or external RAM.
Have a great day,
TIC

-------------------------------------------------------------------------------
Note:
- If this post answers your question, please click the "Mark Correct" button. Thank you!

 

- We are following threads for 7 weeks after the last post, later replies are ignored
Please open a new thread and refer to the closed one, if you have a related question at a later point in time.
-------------------------------------------------------------------------------

0 Kudos
Reply