Skip to main content
munger
Associate III
June 4, 2014
Question

Putting a variable in code memory

  • June 4, 2014
  • 2 replies
  • 698 views
Posted on June 04, 2014 at 22:15

Hi,

I want to declare an array of constant values and have them put into code memory.

Something like this:

const uint16_t my_array[4] = {0x3456, 0x789A, 0x1234, 0x9876};

I want to be able to download the code and then start up STM32 ST-LINK Utility and search for one of the values and find the whole array.

I'm pretty sure I can do it using #pragmas and/or attributes and maybe the scatter file ... but I just haven't figured out the right combo.

I'm using Keil uvision and a STM32F401.

I'd appreciate any help I can get.

Mike

    This topic has been closed for replies.

    2 replies

    Tesla DeLorean
    Guru
    June 4, 2014
    Posted on June 04, 2014 at 22:47

    const or static const should suffice, where does the .MAP file say the array is placed? Data copied to RAM might be compressed, but stuff held in ROM/FLASH should be visible

    Are you searching for the right pattern? Try using some endian neutral values like 0x1111,0x2222, etc
    Tips, Buy me a coffee, or three.. PayPal VenmoUp vote any posts that you find helpful, it shows what's working..
    munger
    mungerAuthor
    Associate III
    June 4, 2014
    Posted on June 05, 2014 at 00:34

    Thanks clive1 (as always). I had looked at the .map file and swear I couldn't find it but now ... of course I can. I think my main problem is that in the STM32 ST-LINK there is a window for Size and it was set to something less than the full code area so when I did a search it did not go to the end, duh! Anyway, setting it to const is enough, it shows up just like I thought it should.

    Mike