Out of flash when not out of flash?

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

cross mob
dasi_3157191
Level 1
Level 1
First like given

New guy here - no prior experience with PSoC Creator or this family of hw.

I just inherited an existing 3-part project (launcher, stack, app) and am trying to simply build it to get oriented with the system. I was able to build the launcher project with no problem. When I build the stack project, I get this error:

Error: flash row: 1024 is either already used or does not exist.

The command 'cyelftool.exe' failed with exit code '1'.

The device in question (CY8C4128LQI-BL543) has 256k of flash, which, at 256 bytes/row (as seen on the cyelftool.exe command shown in the output), translates to 1023 rows - namely, row 1024 is surely out of range. My project does not appear to be actually out of flash resource, though, as the Resource Meter for the project shows flash at 50.9% and SRAM at 55%. I took a look at the map file and found that the last code in the flash area were constants located at 0x20182 - roughly half of 0x40000 - consistent with that 50% metric.

There was one tiny block of data later, at the very high end of flash:

*(.cyloadablemeta)

.cyloadablemeta

                0x0003ffc0       0x40 .\CortexM0\ARM_GCC_541\Debug\cymetadata.o

                0x0003ffc0                cy_meta_loadable

But at size 0x40, it should fit exactly in that last little bit of space, ending neatly at 0x3FFFF and not overrunning my 0x40000 limit.

I ran cyelftool on the command line to see if it had any verbosity arguments - hoping to get it to tell me the name of the thing it was working on when it overran memory - but found nothing in its help output that looked promising.

I'm seeking guidance for even how to investigate this issue. Thank you!

Here's the section header output from objdump.

It confirms that DATA/TEXT parts occupy just over 0x20000, half the flash. The cyloadablemeta section butts up against the end of flash space, but appears to end just at 3FFFFF - no reason to think cyelftool would need to allocate anything after row 1023.

1561 .eh_frame     00000004 000000000001ea84 DATA

1562 .rodata       00000ad8 000000000001ea88 TEXT DATA

1563 .constdata    00000d18 000000000001f560 DATA

1564 .conststring  00000091 0000000000020278 DATA

1565 .ramvectors   000000c0 0000000020000000 BSS

1566 .btldr_run    00000004 00000000200000c0 BSS

1567 .data         00000658 00000000200000c8 DATA

1568 .bss          00001250 0000000020000720 BSS

1569 .heap         00002500 0000000020001970 BSS

1570 .stack        00000800 0000000020007800 BSS

1571 .cyloadermeta 00000040 00000000f0000000 DATA

1572 .cyloadablemeta 00000040 000000000003ffc0 DATA

1573 .cyflashprotect 00000080 0000000090400000

1574 .cymeta       0000000c 0000000090500000

1575 .cychipprotect 00000001 0000000090600000

1576 .stab         00000084 0000000000000000

1577 .stabstr      00000117 0000000000000000

1578 .debug_aranges 00000a90 0000000000000000

1579 .debug_info   0000a11b 0000000000000000

1580 .debug_abbrev 0000236c 0000000000000000

1581 .debug_line   00002f84 0000000000000000

1582 .debug_frame  0001e154 0000000000000000

1583 .debug_str    000077e9 0000000000000000

1584 .debug_loc    00004325 0000000000000000

1585 .debug_ranges 00000a38 0000000000000000

1586 .comment      00022b4b 0000000000000000

1587 .arm_vfe_header 000001a8 0000000000000000

1588 .ARM.attributes 0000002a 0000000000000000

1589 .shstrtab     0000bed1 0000000000000000

1590 .symtab       00078210 0000000000000000

1591 .strtab       0005e400 0000000000000000

1592 .cychecksum   00000002 0000000090300000

Environment:

PSoC Creator  4.1 Update 1 (4.1.0.3210)

Culture: English (United States)

OS Version: Microsoft Windows NT 10.0.16299.0

CLR Version: 4.0.30319.42000

GCC 541

Note: project was originally created with a prior version of PSoC Creator and components. The 4.1.0.3210 version of PSoC Creator required that the components be updated to their latest ones, which I allowed.

EDITS:

1. ObjDump output added

2. Version and component update note added (2018-02-13 @ 1612 (GMT-5))

0 Likes
1 Solution

Thanks for the ideas and confirmation that I'm not hallucinating. I had actually thought about rebuilding the project in the later version, too. I suspect that is the most likely to succeed, frankly. It probably isn't a big deal to do so, though when I said "new guy", I meant "I'd never even heard of this tool before yesterday", so it'll be at least a little bit of learning, no doubt. For now, I have something at hand that is working for me well enough to get my work done, so I'm inclined to carry on with that and follow the update path, however twisty it may turn out to be, only if I actually run into problems with what's in front of me.

View solution in original post

0 Likes
5 Replies
Anonymous
Not applicable

Potentially, the project component update caused the issues? Did you try compiling it on the older PSoC Creator version to see if it was working on the earlier version?

0 Likes

At the time, I did not have access to the older PSoC Creator. I have since acquired an older version from company archives and, indeed, it appears to build just fine. I am still very much concerned that the update process appears to have broken the build without any really helpful messages. Needless to say, I would ordinarily be keen to use the most recent versions of everything.

0 Likes
Anonymous
Not applicable

Yeah, sadly some projects encounter some interesting bugs when attempting to upgrade/use the projects in the newer PSoC Creator version(s).

First of all, save a copy of the working project and PSoC creator version that are working so you have that going for you

Secondly, I would suggest trying to update the components of the project within the older version first, then open the project with the newer version and see if it can correctly port the project to the new version.

Worst case, recreating the project with the components for the top design and importing just the c/h files into the new project to recreate it in the newer version should be relatively straightforward if the PSoC Creator can't handle the project version update.

Thanks for the ideas and confirmation that I'm not hallucinating. I had actually thought about rebuilding the project in the later version, too. I suspect that is the most likely to succeed, frankly. It probably isn't a big deal to do so, though when I said "new guy", I meant "I'd never even heard of this tool before yesterday", so it'll be at least a little bit of learning, no doubt. For now, I have something at hand that is working for me well enough to get my work done, so I'm inclined to carry on with that and follow the update path, however twisty it may turn out to be, only if I actually run into problems with what's in front of me.

0 Likes
Anonymous
Not applicable

Since the project uses mostly .c/.h files and PSoC Creator configuration settings for hardware components and settings, then you could theoretically copy just the c-code files into the new project, and manually set the topdesign schematic and hardware settings to match the older version, while just importing the c-code files again. The underlying compiler is/uses the GNU/GCC compiler, so it should be pretty standard underneath.

0 Likes