By embracing GCC in JumpStart C++ for Cortex, we have gained access to all the open source stacks such as TCP/IP, USB etc. that are incredibly valuable to customers writing complex firmware. On the other hand, we have lost something in the exchange. Primarily, GCC is NOT the world’s most user friendly piece of software.
For example, users of our home-grown V8 JumpStart C for Cortex-M are used to helpful feedback, such as seeing this message at the end of a Build:ROM 4% full. 17588 out of 524288 bytes used (does not include absolute areas).
RAM 2028 bytes used (does not include stack usage).
NOTE: Output file ".\Uart-test.bin" start address: 0x8000000
At a glance, this tells you how much memory is being used, and how much is left. This information is very important in both the prototyping stage, where the developers can use it to select the MCU with the most appropriate memory size, but also in the development stage, to ensure that the firmware will fit in the selected MCU. Unfortunately, this information is not readily available from a GCC compile.
Losing this sort of feedback would be a step backward, if not remedied. Therefore, in the 9.04.00 release, we have added a simple utility and post-command to generate something like this:
ELF file output size
Code size: 102468 bytes starting at 0x080001D0
SRAM data: 28016 bytes starting at 0x20000000
Heap and Stack: 5120 bytes heap starts 0x20006D70 stack starts 0x20008170
(Point of clarification: the two examples above are not from the same source files, so the memory uses are clearly different.)
The information is displayed differently with the GCC-based version, and currently we do not have the percentage-used available, but we expect to add those enhancements in future releases. On the other hand, this contains information that was not available under the previous compiler so indeed it is already even more useful.
This may seem like just a little thing, but it is very valuable in embedded firmware development. As we embrace open source software, we are committed to making it easier to use and more friendly in its operation. This is just one of the first steps.