This blog presents the steps needed to enable XIP(eXecute-In-Place) support in CYW4390x. During normal operation, the code resides in the SFLASH and is copied to RAM during execution.The XIP feature allows instructions stored in SFLASH to be executed in place. This is suitable for instances where the RAM size is limited and application size is too large.
How to enable XIP
XIP feature is disabled by default and it can be easily enabled by adding 'xip' option to build target,
snip.scan-CYW943907AEVAL1F-xip download run
XIP load address, link script start address as well as XIP region length are defined in $PLATFORM/platform_xip.mk and it's configurable by users.
The following macros needs to be defined to enable XIP.
XIP_LINK_START_ADDRESS : Specify the start address of XIP in linker script
XIP_REGION_LENGTH : Specify the length of XIP region in linker script
XIP_LOAD_ADDRESS : Specify the XIP SFLASH address. XIP binary code would be downloaded to this address.
XIP link script:WICED/platform/MCU/BCM4390x/GCC/app_without_rom_with_xip.ld will be generated based on platform_xip.mk and its processed through the build process.
XIP binary file: *.xip.bin which contains XIPed code will be generated in build/$APP/binary/ and loaded to SFLASH.
All XIP code on SFLASH should be contiguous.
Limitations while using XIP
XIP operation and SFLASH access are NOT allowed to operate simultaneously. SFLASH read/write(non-xip) operation can only run with interrupts disabled.
The XIP image cannot be encrypted because the SFLASH controller has no HW decryption engine.