Announcements

Help us improve the Power & Sensing Selection Guide. Share feedback

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
Sturla22
Level 1
Level 1
First reply posted First question asked Welcome!

Hello,

I have configured an SRAM chip to work with SMIF in normal mode. Now I want to enable XIP/memory mapping of that memory.

It seems like the memory map of CY8C62x7 expects external RAM to live at 0x60000000 – 0x9FFFFFFF (according to the datasheet). However, I'm having difficulty configuring SMIF to point to that address when memory mapping.

If I configure the memory to have a baseAddress of 0x60152B00, when written to the SMIF0_DEVICE2_ADDR the value changes and becomes 0x18152B00. I have seen the same happen with a baseAddress value of
0x2C000000 leading to a SMIF0_DEVICE0_ADDR value of 0x1C000000.
 
Can you explain this behavior? I've not seen any indications in the register TRM or the PDL documentation that this is normal.
 
I have also tried a value that qspi configurator seems happier with, 0x18148D00. With this value I don't see a change in SMIF0_DEVICE2_ADDR but I get a hardfault when attempting to write directly to this address. I suppose this is because the address is in the wrong  address range.

Do you have any hints for me on how to get this to work?
0 Likes
2 Replies
Aashita_R
Moderator
Moderator
Moderator
50 likes received 100 solutions authored 250 replies posted

Hi @Sturla22 ,

I have gone through PSoC 62 architecture TRM and I will update my team internally to correct the memory addresses mentioned for external memory of  XIP mode. However, you can refer our PSoC 6 programming spec here : https://www.infineon.com/dgdl/Infineon-PSoC_6_Programming_Specifications-Programming%20Specification... where it is mentioned in section 2.5(execute-in-place) -> An external flash memory device must be write-enabled and mapped to the XIP address space in PSoC 6 MCUs (within the address range 0x1800 0000 - 0x1FFF FFFF)

Hence,  0x1800 0000 - 0x1FFF FFFF address range is supported in our device for external memory in XIP mode.

I hope this helps. Please add here in case of any further query.

Best Regards,

Aashita

0 Likes

Thank you, that put me on the right track.

For future reference and the benefit of others with similar issues: I also had to use 0x18000000 rather than 0x18148D00 as the baseAddress like I had previously tried. This limits the memory space available for memory mapping, but at least it works ¯\_(ツ)_/¯ 
Finally I had to hard-code the address to access the memory-mapped RAM, instead of making use of symbols defined in the linker script. Using the symbol defined by the linker script had a strange side affect of copying the memory value into the pointer (compiled with IAR 8.4).

0 Likes