I am using the evkmcimx6ull eval board with the Segger J-Link Plus probe. I am creating a bare board (not Linux) application and am trying to get my code to successfully boot from the Micron qspi flash. I have populated the boot config parameters per the qspi-nor-micron-n25q256a-config (except I took out the sflash_B1_size, because this board has only the A1 flash) and used the mfgtool script to populate the Image Vector Table and boot data, to create a bootable image. I have also set the switches on the board to boot from qspi. I can see on the oscilloscope the imx6 accessing the qspi on power up, in the boot config parameters I changed the clock speed from the default 18MHz to 49MHz and I can see the clock speed change on the scope so I know it's at least reading the config params ok but the image does not fully boot and actually locks up the imx6 so that I cannot even attach with the J-link. I have linked the image with the MCIMX6Y2xxx05_flash.ld script. The imx6RM states:
Both booting the XIP and non-XIP image is supported from the serial flash. For the XIP
boot, the image must be built for the QuadSPI address space, and for the non-XIP, the
image can be built to execute from the DDR or OCRAM.
I understand the Micron flash needs to be set up for XIP mode. My question is, how does the imx6 know to execute in place (XIP)? There isn't much more about XIP mode in the reference manual other than the above statement. Is that all that is needed is to build the image for flash space? If so, then do I need to modify the boot params to send the command to the flash for XIP mode on power up?