Debugging ARM Cortex-M0+ Hard Fault with MTB Trace

And here it is again: a Hard Fault exception raised by the ARM Cortex-M0+ on my Freedom board:

Hard Fault in Debug View

Hard Fault in Debug View

A reason for hard faults are for example dereferencing a NULL pointer. The issue with the ARM Cortex hard fault exception stack is: it is not easy to find out where in the code the problem is.I have created a Processor Expert component to help me to find the location of such an exception. With the Eclipse based CodeWarrior for MCU10.3 there is another way: Trace with the MTB (Micro Trace Buffer)!

Continue reading

Reducing the build time with gcc for ARM and CodeWarrior

Eclipse based CodeWarrior for MCU10.3 comes with gcc build tools for Kinetis/ARM cores. While it features the parallel build make, I noticed that especially for larger projects build times are not as fast as it should be. The good news is: I was able to cut down my build time to less than half with a simple change :-).

When I looked at the output folder where all the object and make files are stored by Eclipse, I noticed that it has as well the listing files generated:

Listing Files in output folder

Listing Files in output folder

Continue reading

Resolving Processor Expert Bogus Errors

Some times, especially after making some clock/timing changes in Processor Expert, I have an error showing up in the Processor Expert components:

Processor Expert Components with Errors

Processor Expert Components with Errors

Many times Processor Expert is right. But not always: It is possible that Processor Expert is stuck on the error, and there seems no way out. But there is a trick to resolve it….

Continue reading

Free Static Code Analysis with Eclipse

I know for myself: the earlier I’m able to fix a bug, the better. So I’m always grateful for things which help me to find issues in my sources as early in the development process as possible. Eclipse and CodeWarrior already help me to find syntax errors in my code while I’m typing:

Eclipse highlighting syntax error

Eclipse highlighting syntax error

With the built-in syntax checker of Eclipse, this helps me many times to get things right without the need to build my code with the compiler. But when I’m able to compile successfully my code, this does not mean it is without bugs. It would be good to catch as many errors *before* downloading and running it on the target.

Continue reading

The Freedom Robot

I have the Arduino Motor Shield working, the Ultrasonic module is pinging around, Christmas brought some small DC toy motors, and a bag of plastic gears is on my desk. All the good ingredients for a small robot: the Freedom Robot!

❗ Warning: Multiple Coke bottles have  been destroyed, and a FRDM box got hurt during his experiment! 😯 Do not try yourself if you cannot handle it.:-)

Smile

Smile

Continue reading

Tutorial: Ultrasonic Ranging with the Freedom Board

Question: What makes 8 times ‘beep’, but I cannot hear it?

Answer: My ultrasonic range finder 🙂

FRDM-KL25Z with HC-SR04

FRDM-KL25Z with HC-SR04

What I have added to my FRDM-KL25Z board is an ultrasonic distance sensor, measuring distances up to 4 meters.

Continue reading

A Processor Expert Component to Help with Hard Faults

Ahrg! Again my ARM application crashed somewhere and I ended up in a HardFault exception :-(. In my earlier post I used a handler to get information from the processor what happened. But it is painful to add this handler again and again. So I decided to make things easier for me: with a special HardFault Processor Expert component :-).

After adding this HardFault component to my project, it automatically adds an entry to the vector table. So no manual steps are needed: having the component in the project and enabled will do the needed steps.

Continue reading

Migrating Kinetis-L Projects from Beta to Final MCU 10.3

I have successfully used CodeWarrior for MCU10.3 beta version for many projects. With the advent of the final CodeWarrior for MCU10.3, I want to migrate my existing projects to the new and final version. First: my existing projects work as well in the final version, which is good news. But there are two things to change to take advantage of the final 10.3:

  1. Linker file memory split
  2. ARM Micro Trace Buffer (MTB) support

Continue reading

Reducing Code Size with gcc and EWL

If you have not noticed: the final CodeWarrior for MCU10.3 has been released on the Freescale web :-).

It comes with a few changes compared to the 10.3beta release, and one is about the library configuration. I noticed that new projects created with the wizard are around 4 KByte larger than I expect them to be. For example my rather simple application below uses 8 KByte of code, where my expectation would be in the range of around 4 KByte:

   text       data        bss        dec        hex    filename
   8644         24       1108       9776       2630    Freedom_2x16_HTA.elf

Continue reading