I am using blhost to program a KL81 which is connected via QSPI to a Winbond W25Q64JV serial FLASH. When I program this using blhost, it programs the first 0x100 bytes of serial FLASH correctly, but then it maps areas at 0X100 and higher back to the first 0x100 bytes. I can change where in the first 0x100 bytes they get programmed by changing the column_address_space configuration setting in the QSPI config block. How do I determine the correct setting for column_address_space?
The W25Q64JV uses 3 bytes of address for memory reads and writes. I have verified in the .srec file that the data is placed in the correct place in the file by the linker. Page size is 256 bytes and sector size is 0x1000.
Solved! Go to Solution.
I was able to fix this by changing .word_addressable from 1 to 0 in the QSPI configuration block. I am now able to write to QSPI FLASH using functions as well as to program QSPI FLASH using blhost and then execute in place (XIP). I am using __attribute__ ((used,section(".text_Flash2"))) to assign specific functions to be programmed into QSPI FLASH. This is confirmed by examining the build results showing memory usage, the .srec file, the .map file, and Saleae logic analyzer captures.
I am not able to program or debug QSPI FLASH and XIP from MCUXpresso using a JLink. I don't know if I have the right .cfx file for the Winbond FLASH, or if there is something else wrong. I would like to get this working in order to debug our application.
I have not been able to assign an entire .o file to .text_Flash2. I get many "multiple definition" errors. I suspect that the same .o file is getting placed in both .text and .text_Flash2. If I try to use EXCLUDE_FILE, I get syntax errors. I don't understand .ld syntax well enough to resolve this.
Any help you can give with any of these issues will be appreciated. Thanks.
I was able to fix this by changing .word_addressable from 1 to 0 in the QSPI configuration block. I am now able to write to QSPI FLASH using functions as well as to program QSPI FLASH using blhost and then execute in place (XIP). I am using __attribute__ ((used,section(".text_Flash2"))) to assign specific functions to be programmed into QSPI FLASH. This is confirmed by examining the build results showing memory usage, the .srec file, the .map file, and Saleae logic analyzer captures.
I am not able to program or debug QSPI FLASH and XIP from MCUXpresso using a JLink. I don't know if I have the right .cfx file for the Winbond FLASH, or if there is something else wrong. I would like to get this working in order to debug our application.
I have not been able to assign an entire .o file to .text_Flash2. I get many "multiple definition" errors. I suspect that the same .o file is getting placed in both .text and .text_Flash2. If I try to use EXCLUDE_FILE, I get syntax errors. I don't understand .ld syntax well enough to resolve this.
Any help you can give with any of these issues will be appreciated. Thanks.
Hello, my name is Pavel, and I will be supporting your case, let me get into your case and when I have more information, I will contact you.
Best regards,
Pavel