An SD (Secure Digital) Card interface is kind of standard for many applications today: it provides a lot of memory at a reasonable cost. Still, I need a software stack for it, up to the level of a file system. So far I was really happy with using FatFs: an open source FAT file system provided by Elm-Chan. I’m using the FatFs Processor Expert component already in multiple designs. What was missing: a port to the Freescale Kinetis ARM Cortex-M4 family of processors.
From time to time, I scratch my head and ask myself: Gee, that file icon looks interesting and different, what does it mean? What I’m wondering about is on Eclipse Icon Decorators. Label and Icon Decorations allow additional information to be displayed in an item’s label and icon. Very powerful. But as with many powerful things: if you don’t know it, it might cause harm or confusion. Unfortunately, that’s not so easy to find out.
The development cycle does not end with debugging. Debugging is something manual, but for testing and automation I want to develop scripts I can run in an automated fashion. For this I use a tool in CodeWarrior: the Debugger Shell as command line debugger and using TCL as scripting language. This gives me a powerful way into automation and scripting with the debugger: from basic access to memory, to stepping and controlling the execution up to programming the flash memory.
Using breakpoints is central part of debugging. I’m usually debugging my applications in flash memory. Because nearly all the microcontrollers I use have on-chip flash memory, and have more flash than RAM. With debugging in flash I limited by the number of hardware breakpoints. And here is the advantage with debugging code in RAM: availability of ‘unlimited’ software breakpoints. But how does this all works, and how to make efficient usage of hardware breakpoints?
The Kinetis ARM Cortex-M4(F) is a wonderful machine: a 32bit architecture, plenty of FLASH and RAM, an ideal play field. I love the Kinetis Tower boards, and even more the Freedom board which has an ARM Cortex-M0+ on it. I have a lot of projects on S08, S12 and ColdFire at the university, and they are all using a lot of Processor Expert components. Processor Expert is such a great productivity tool: having software in components allows easy software re-use. With Processor Expert abstracting from the hardware, I can easily port my applications to new boards and processors. Well, until Processor Expert changed for Kinetis :-(.
Debugging static variables, especially ‘static locals’ is sometimes challenging. Especially ‘static local’ debugging depends on the compiler capability how they are encoded in to the object file. I have found out that at least with CodeWarrior for MCU and ARM/Kinetis this works straight forward. Only ‘Watch Expressions’ need special attention.
Yesterday was my ‘lucky day’: My Kinetis-L Freedom board arrived :-). This board is really nice and features the KL25Z from the recently announced Kinetis L Family. And guess what is the first thing I want to flash on that processor? Yep: some FreeRTOS tasks. But to get there, a few important things have to be sorted out:
Ever wondering what could be a keyboard shortcut for something in Eclipse? In my post on 10 Best Eclipse Shortcuts the question came up how to traverse through all the open files in the editor. Finding a shortcut is easy if you know the The Mother of all Eclipse Shortcuts :-). I press CTRL+3 and enter a search term like ‘switch’, and it shows me all shortcuts with ‘switch’ in the description:
In CodeWarrior and Eclipse, the Problems view shows all kind of messages, from all open projects in the workspace. That way I have especially all the build messages in one view. The Problems view keeps the messages listed, until I have them resolved. By default, if I have multiple projects open in my workspace, it will show all the messages of all projects:
With many messages and many projects, that might be overwhelming, as messages can be mixed for different projects and files, especially with parallel build enabled. How to change the settings to have the messages listed just for a single project?
The great thing with blogging is: I receive great comments, questions and ideas. The great thing with Eclipse/CodeWarrior is that the extensions are almost unlimited :-). For my earlier post on hiding the toolbar I received a tip for another way which even is better: a plugin to switch Eclipse into full screen mode. Here is how to install it and how it looks…
Screen real estate is important to me. Especially working on a small notebook screen I want to get the most out of it. And I know: all the cool (and fancy) UI items in Eclipse have a price.
So how to get more space for important things like my source files? Eclipse has feature to hide the toolbar completely. For this I simply use the context menu and select ‘Hide Toolbar’: Continue reading
Typically a Processor Expert component creates two files: a header file and a source file. That’s fine for normal drivers. But this does not work well for more complicated things like an RTOS or communication stacks: these are built from a whole set of source files. So how can I generate multiple files with a Processor Expert Component?
Exactly the thing I was looking for! A small and affordable 32bit board with easily accessible microcontroller signals. The Freescale Tower boards are great, but the PCI Express connectors are not that ideal. I love that normal Berg connectors 🙂
It seems there’s a plethora of new development boards coming onto the market at the moment, all very well priced and an absolute boon to makers and tinkerers.
The latest to be released is the new ARM Cortex-M0+ (32bit) from Freescale at only $13!
Now go play!
When I added ‘support for ARM/Kinetis‘ to my bucket list in my Percepio+Trace post, I knew it will not be straight forward. But it was a lot harder than I thought. I had to burn many week-end hours. But finally I have Percepio Trace with FreeRTOS up and running for Kinetis and ARM Cortex-M4 with CodeWarrior for MCU10.2 :-).
As promised back in Percepio, I want to have it ported and working with the Freescale Cortex-M4/Kinetis in CodeWarrior. That’s what I’m working on now, deep into the night. While doing this, I had to generate a lot of trace data, and I used the script I presented in that earlier post: Setting a breakpoint in the trace buffer wrapper event and then export the data. But there has to be an even better way, and indeed there is one: Breakpoints with Special Effects!
I have received a new touchscreen, and all what I want to do with it in the next weeks is to get it up and running with one of my Tower modules. Touchscreens are such a great thing, not only because of Apple, iPad and all the other tablet providers. It is such a great and intuitive way to communicate with machines. And here is a great article I got forwarded at the University right on that subject:
Apes with Apps is about how Apes (Bonobos, to be exact) are great communicators with tablets and touch screens. Worth reading.
Happy Touching 🙂
I’m chasing down a weird include problems in my project: Somehow it looks like the compiler is including the wrong file, causing strange compiler errors. I admit: the include order with all the #defines is pretty complicated, most of it I have inherited from an open source project. How to know who is including what, which files is included by whom? what is included directly, and what is included indirectly?
Writing Processor Expert components is not always completely independent of the compiler and underlying microcontroller. In many cases I need to know the compiler for which the source code is generated. Or I need to know on which CPU architecture the code shall run. For this I need to know the compiler and the CPU family.