In “Semihosting with Kinetis Design Studio” I used printf() to exchange text and data between the target board and the host using the debug connection. Kinetis Design Studio (KDS) has that semihosting baked into its libraries. What about if using the GNU ARM Embedded (launchpad) tools and libraries (see “Switching ARM GNU Tool Chain and Libraries in Kinetis Design Studio“)? Actually it requires two more steps, but is very easy too.
Category Archives: Building
Automatic Documentation Generation: Doxygen with Processor Expert
One really cool thing with Processor Expert is: it does not only generate the source code for me, it generates as well documentation :-). I’m a believer of the ‘single source’ approach: if I have to document a software project, then the software itself shall be the source of the documentation. And for this I love Doxygen: see “5 Best Eclipse Plugins: #1 (Eclox with Doxygen, Graphviz and Mscgen)“. Doxygen is a compiler which compiles my source files, and instead of object files it creates documentation files for me :-).
GNU Libs with Debug Information: Rebuilding the GNU ARM Libraries
With my DIY tool chain (see “Constructing a Classroom IDE with Eclipse for ARM“) I get a complete tool chain. I do not need to build that tool chain from the sources for Windows, as all the binaries are nicely pre-compiled and made available. But there is one issue I face from time to time: as the libraries provided by ARM do not come with sources and debug information enabled, I end up with that “No source available for …” message in the debugger:
The solution is to grab the C/C++ library sources from the ARM launchpad site and get it built locally the way I need it.
XFormat, a Lightweight printf() and sprintf() Alternative
Frequent readers of this blog know that I do not like printf (see “Why I don’t like printf()“), because the standard printf() adds a lot of overhead and only causes troubles. But like small kids, engineers somehow get attracted by troubles ;-). Yes, printf() and especially sprintf() are handy for quick and dirty coding. The good news is that I have added a lightweight printf() and sprintf() implementation to my set of components: the XFormat component. And best of all: it supports floating point formatting :-).
Link to Files and Folders in Eclipse
Eclipse projects have the nice features that they can link to files and folders: so instead of having the physical file, it is just a pointer to a file. This is very cool as that way I can point to shared files, or keep files in a common place referenced from projects, and so on.
As with most things in Eclipse, there is not a single way how to do things. So I’m showing in this post several ways how to link to files and folders.
Overwriting Symbols in the GNU Linker File
I start liking the GNU linker (ld) more and more. Yes, that linker command file syntax needs some time to learn, but it is very powerful. I stumbled over an interesting way how to define linker symbols:
/* Linker file for GNU C Compiler */ /* Entry Point */ ENTRY(Reset_Handler) HEAP_SIZE = DEFINED(__heap_size__) ? __heap_size__ : 0x00000400; STACK_SIZE = DEFINED(__stack_size__) ? __stack_size__ : 0x00000400;
The interesting part is how the HEAP_SIZE and STACK_SIZE symbols are defined.
It checks if e.g. __heap_size__ is DEFINED, and if so, it uses that symbol, otherwise it is using 0x400. Very similar to the C/C++ ‘?’ operator. So I can overwrite the default of 0x400 with my value or symbol. The questions is: from where does the symbol come from?
Converting S19 Files into Binary Files with GNU objcopy
Typically I can create with my build the file I usually need (like an S19). See “S-Record Generation with gcc for ARM/Kinetis” how to do this in CodeWarrior, or “Binary Files for the mbed Bootloader with Eclipse and GNU ARM Eclipse Plugins” how this works in Kinetis Design Studio. The basis of all this is the GNU objcopy utility (see “S-Record Manipulation with GNU objcopy and Burner Utility”). So what if I just have an S19 (S-Record) file and need it in a different format, e.g. as .bin (binary) file for the mbed bootloader which only accepts .bin (raw binary) files?
LED Clock with Kitchen Hot Pan Protector
When I showed my 60 NeoPixel LED clock prototype to my daughter and her girlfriend, and they both wanted to have one right away :-). Well, that clock was just a proof of concept, with lots of temporary wiring. So I decided this week-end to beautify it and to make it look nice and clean(er). There is nothing like a week-end project with adding a few more LEDs and features :-).
Exclude Source Files from Build in Eclipse
Sometimes I have source files in my project which I do not want to get compiled (or excluded from build). Because as I’m using the ‘managed make’, all source files matching certain extensions (like *.c) are automatically included into the build.
To exclude a file from build, I right-click on it to get to the properties. There I can select a check box to have it excluded from the build:
Listing Code and Data Size for each Source File with GNU and Eclipse
I have used the ‘classic’ CodeWarrior IDE for years, before I moved over to Eclipse some years ago. And as with any IDE or tool switch, things are different in the ‘new world’. In summary, I don’t want to go back anyway, and Eclipse is my development tool of choice now. But from time to time I get challenged about something like “hey, this was possible in the previous tool, so how can I do the same in Eclipse?”. As a fan of Eclipse, this then gets my attention as I feel that Eclipse can do it, and it can do it better. 😉
So what about this one: In CodeWarrior the project view lists code and data size for each source file:







