Multiple screens are a real productivity booster for every developer: it extends your ‘real estate’ and allows you to have more things visible all the time. Personally I always have a dual screen system in use. Well, except when I’m traveling. But I wish I would have it there too! Eclipse started to support the multiscreen environment already a while back. Continue reading
I have mentioned in MCU10.2 released a new feature in CodeWarrior: support for the USB Universal Multilink FX from P&E Microcomputer Systems. Two Multilink FX arrived last week at the University, and finally I had my hands around it. The first thing which came to my mind when I saw the picture of the device on the P&E website: The Men in Black are back!
Can I hope for a “Special FX Edition” in that box with cool sunglasses and a flash stick to erase and reprogram FLASH memory of microcontrollers? That would definitely make the flash erasing and programming easy and fast, as in the movie. 🙂
At the University the lectures started, and as well all the bachelor diploma and industry projects. So I am running out of my TWR-MCF52259 boards as they are used by my students. No problem, as I have one remaining board in my shelf. I plugged the board into my machine, but YIKES! Look at this:
Ahhrg! Again, my microcontroller stopped in an interrupt. And I have no clue why?
Using Processor Expert in MCU10 is a great thing as it takes care about the vector table. Usually the default settings for code generation are fine, but not in my case here. If you run into a spurious and unexpected interrupt, you stop in the
I use a Intel processor to write this text, and this processor is is using Little Endian for the byte order. This is about Endian, not Indian :-).
Many processors I have programmed were Big Endians. With the addition of Freescale Kinetis (an ARM Cortex M4) and DSC in MCU10.2, I have a daily mixture with Big Endian (S08, ColdFire, …) and Little Endian (DSC and Kinetis).
I just have run across a problem: I received a project for the S08QE128, and when I started a debug session with MCU10.2, the debugger was showing “no source available”. Ahhrg. Something must be wrong…
Well, at least I can debug on assembly level. But this is not the point. I have the sources, but somehow the debugger does not find them?
I mentioned in Go Reference that MCU10 and eclipse come with a comfortable infrastructure: you add, remove, rename source files and set compiler options: managed make will take care and creates the make files for you. Make files are such a great thing because they allow you do to pretty much everything.
Classic CodeWarrior uses a different approach without make files. Exporting the project as make file did not really work, so make files were not something you could have used easily in classic. With the eclipse based MCU10 make files are the heart of the build system. In most cases using the managed make system is perfectly fine. But for a bare metal enthusiast it makes sense to use my own make file instead.
One thing which is missing with the CodeWarrior for MCU10.2 announcement: MCU10.2 does not support the S12(X) from Freescale.
With this I still have several projects not ported to eclipse. So they are still implemented using the ‘classic’ (non-eclipse based) version of CodeWarrior for S12(X). And I’m using FreeRTOS in the eclipse based IDE with Processor Expert for S08, ColdFire and Kinetis, but not yet for the S12(X). What now?
I admit: I’m a big fan of eclipse.
But there is one thing I have missed from the ‘classic’ non-eclipse CodeWarrior for MCU: the ability to create hierarchical builds with subprojects.
It was sooooo simple and easy in classic CodeWarrior:
- I need to build a batch of projects in one step?
I have it organized as subprojects, and go!
- I need a boot loader library included with my project, build it as part of my application build, plus I want to re-build my custom ANSI library for the small memory model?
I have it included as subprojects, set it up to be linked with my application project, done!
CodeWarrior for Microcontrollers V10.2 has been released and is available for download from the Freescale MCU website!
In my view the V10.2 is a big step forward. Nothing is perfect, nor is V10.2. But V10.2 is so much better compared to the V10.1 release. Yes, indeed continuous improvements. Here is why…..
Getting to the details is my natural engineering passion, see memory is everything. The same applies for building my embedded application: you should know what you pack into your binary file.
One aspect of this are the libraries. The linker does the heavy lifting, but still I want to know the details, right? In CodeWarrior for MCU, things are a little bit different for the 8/16bit tools (HCS08 and RS08) compared to Kinetis, ColdFire, DSC and Qorivva: the format for the libraries is not the archive (*.a) format. Therefore, I cannot use the usual command line tools like readelf, objdump or elfdump available in the GNU Binutils to inspect the libraries. The good news is: there are other good ways to get the information I need :-).
As mentioned in my post about the memory view: I want to go down to the bits and bytes. Same applies to programming: I want to get down to the assembly instruction level, the heavy metal world :-).
Although it sounds a little bit weird in the age of object-oriented programming and C++, but sometimes I need to do ‘assembly level only’ programming on a 32bit controller too. CodeWarrior for MCU offers assembly only project creation for all the 8bit microprocessors, but for the 32bit including the ColdFire it assumes that the usual way is to use C and C++? Yes, it offers C and C++ and you can add assembly files. But how to do assembly only?
Question: How can you distinguish an embedded programmer from a non-embedded programmer just by looking at his debugger?
Answer: The embedded programmer has at least one Memory View open, while the non-embedded programmer probably does not care.
Well, this is maybe a too simplistic answer, but I think it has some truth. An embedded system programmer cares a lot about the memory of his system, and so do I. My post on flash programming was the aspect of permanently programming the memory. This one is is about RAM and Flash.
Demonstrating software and tools for a smaller or larger audience is always a challenge. What looks good directly in front of your screen might not get the same attention if projected on a wall. Especially if you are browsing through the source code and you need the audience to follow this. What I have found very useful in CodeWarrior is the ability to configure it using colors. One thing I have configured is to show the current line in a different color:
Welcome to the “MCU on Eclipse” blog!
‘Hello World‘ seems indeed a good headline for this first entry. Even if I consider a printf(“Hello World!”) not as something you should use as a first baby step in an embedded project: printf() has many better alternatives. But this is the ‘hello’ to the big world outside.