Hello,
I am trying to set the FlexSPI frequency to 30 MHz for testing with DCD.
I added the following lines to DCD
but after downloading and a reset the values in the registers are not the ones I specified.
The XIP defines are set to
XIP_BOOT_HEADER_DCD_ENABLE=1
XIP_EXTERNAL_FLASH=1
XIP_BOOT_HEADER_ENABLE=1
and qspi flash nor config has
.serialClkFreq = kFlexSpiSerialClk_30MHz, //kFlexSpiSerialClk_133MHz,
but the SPI flash is still running with 130MHz.
After a reset CCM_CSCMR1 is set to
and CCM_ANALOG_PFD_480 to
Why does DCD not set the values I specify?
In RT1020 reference manual 8.7.2.1 below Table 8-41 is the following note
but I can't find a list of allowed block/target address in RT1020 reference manual. Where can I find them?
Kind regards,
Stefan
Hello,
You may look at Table 9-42 (Valid DCD address ranges) of i.MX RT1050 Reference Manual.
.
https://www.nxp.com/webapp/Download?colCode=IMXRT1050RM
You mentioned "after downloading and a reset" - the DCD values are set by boot ROM
and after reset - the values return to default ones.
Regards,
Yuri.
Hello Yuri,
thank you for the hint. I think the table should be included in RT1020 Reference Manual too.
You are right, I was only thinking about the case after booting.
Does the Boot-ROM execute in flexspi_nor..._debug after downloading with DAP Link? If yes the registers are not set correctly.
How do I change the FlexSPI clock after a reset (with XIP)? In the application projects the code which would change FlexSPI clock is always excluded when XIP is active.
Kind regards,
Stefan
Hello, stefan.mitterhauser@lst.at
DCD approach is working, when boot ROM tries to boot some external device.
DCD-based initialization is performed before user's application load and run.
When working with a debugger, this is a prerogative of (debugger) initialization
script to provide all system initialization, needed for the application, assuming
minimal boot ROM influence (in serial downloader mode).
So, as first step, test the system with the initialization script, after that - copy it to
the DCD.
When using the XIP boot, FlexSPI frequency should be set as the parameter, provided
in the configuration block, described in section 8.6.3.1 (FlexSPI Configuration Block).
Hardly it is good practice to modify FlexSPI parameters on the fly (XIP).
https://www.nxp.com/webapp/Download?colCode=IMXRT1020RM
Regards,
Yuri.
Hello Yuri,
thank you for your answer.
I think in flexspi_nor_debug mode there is no initialization script used. They are used in SDRAM debug to set up the external SDRAM for downloading.
In IAR EWARM an initialization script can be included in Options>Debugger>Setup macros right?
Kind regards,
Stefan
Hello,
Yes, for IAR Setup macros are used.
Regards,
Yuri.
Hello Yuri,
I have another question.
When using the XIP boot, FlexSPI frequency should be set as the parameter, provided
in the configuration block, described in section 8.6.3.1 (FlexSPI Configuration Block).
Hardly it is good practice to modify FlexSPI parameters on the fly (XIP).
If I am setting up FlexSPI frequency in configuration block and in my program something goes wrong and changes the FlexSPI/Clock settings but I only do a Software Reset the boot ROM will never execute and reconfiger the peripherals.
How can I make sure that the correct frequency settings get applied after a software reset? I'm asking because the part which modifies the FlexSPI clock source in clock_config.c gets only executed when the code is not executed from flash (non XIP).
Kind regards,
Stefan
Hello, Stefan!
As for software reset: there is general recommendation to remove power from all
components on the board in the event of a (software) processor reset in order to avoid
issues with components, critical for rebooting the system - because some components
(eMMC, QSPI) may be in unpredictable state after CPU reset. So, the POR may be recommended
for reboot (as implemented via WDOG on the reference design).
Regards,
Yuri.
Hello Yuri,
thank you for your answer and sorry for my late reply.
What would be the way to go if we can not remove power from all components on the board?
Kind regards,
Stefan
Hello, Stefan!
If such simple way as just power removing is not acceptable - it is required
to analyze how all needed external devices should be re-initialized (more carefully).
Perhaps there are some command sequences to reset the devices.
Regards,
Yuri.