Mother nature offered an interesting puzzle this morning: a sunrise with beautiful light sculptures. But where is the sun?
For many of my applications I need to measure a distance. I have used ultrasonic sensors, but there view angle (beam) is not able to detect smaller objects, it very much depends on the object surface and angle, it is slow and not very precise. I have used infrared sensors, but here again it depends on the infrared reflection of the object in range, it depends the amount of reflected light is not really telling much about the distance, and yet IR reflection is subject of material and object targeted.
But there is yet another sensor type to consider: ToF! ToF (or Time-of-Flight) sensors have a built-in LIDAR: The sensor is sending out light pulses and measures how much time it takes for the light to come back. Similar to ultrasonic sensors (see “Tutorial: Ultrasonic Ranging with the Freedom Board“), but instead of ultrasonic it uses an infrared laser light. Or think about a radar system using an infrared laser light.
About a year ago, on December 7th 2015, Freescale and NXP have announced the completion of their merger. Now it is Qualcomm which wants to acquire NXP? It looks like these mergers are happening faster and faster. The reality is that merging products take more time than anticipated, and nearly one year later I can see the outcome of what comes out of the marriage between Freescale and NXP or between Kinetis and LPC: NXP has announced the MCUXpresso software and tools for Kinetis and LPC microcontroller:
The year is coming to an end, the Holiday season is approaching. In case you are looking for a nice present: I have completed my version of a sand clock: a clock writing the time into sand:
If you are interested to build your own version, I have documented the different steps with tips and tricks…
The good thing with failure is: it is an opportunity to learn :-).
So here is a case: For a STEM roadshow (see “MINTomat: World’s Most Complicated Bubble Gum Automata?“), we have produced in a rush an autonomous robot with a shiny printed 3D cover:
How to fascinate kids for technology? Show them that engineering is fun :-). At the Lucerne University of Applied Sciences and Arts we have created the ‘MINTomat’: a robotics system for STEM activities rewarding interaction with bubble gums:
Yes, pretty over engineered compared to a normal bubble gum automata, but that’s part of the fun :-).
This post is a bit off-topic. No, this is not one of my deep technical tutorials. It is not about all the muddy bits in hardware, and it is not about shiny and great tools. This post is about you all: WordPress counted 15’000 comments for McuOnEclipse!
Happy Commenting 🙂
PS: special thanks to Kevin P. and Jim T.: this blog would not exist without you!
It seems to me that not many developers use hardware trace? ARM indicates that maybe only <5% of developers are using trace. Too bad! Why are all the ARM Cortex microcontroller vendors putting a powerful hardware (and complicated!) trace engine into their devices, if only few developers are using it? Seems like a waste of silicon and an unnecessary price adder? Well, hardware trace can be a life saver: Because only with hardware trace the most complicated bugs and problems can be solved. And maybe because only the best are using it ;-).
‘Inversion‘ is an interesting meteorology phenomena: normally the air temperature gets colder the higher you get up in the mountains. With the inversion situation it is the other way round: cold air in the lower areas building a sea of fog, and warmer air and sunshine up above. Perfect for a hike, so sharing pictures from last weekend.
The first one is from the Haggenegg in Canton Schwyz, with the view to the South:
With the GNU compiler and linker I can place variables into custom sections (see “Defining Variables at Absolute Addresses with gcc“). This article is about how to get the section start and end address so I can for example access that range in my code. Or in general ways: how to use symbols defined in the linker script accessible in the C source code.
A new McuOnEclipse components release was long overdue, so I’m pleased to announce that a new drop is available with the following major changes:
- Segger SystemView library with kernel time reporting
- GenericTimeDate supports different hardware RTC devices
- Utility with little endian packet handling functions
- Shell Standard I/O handlers for USB CDC, Segger RTT and Bluetooth
- FreeRTOS and stack size reporting
- printf() support in Shell component
- Various small bug fixes and improvements
Command line tools to build applications are great. But productivity goes up if I can use the standard Eclipse environment with GNU tools. This tutorial is about how to use standard and free GNU and Eclipse tools to build my FreeRTOS application for the ARM Cortex-M4 on i.MX7 🙂 :
My Toradex i.MX7Dual module comes with a preflashed Linux distribution (see “Tutorial: First Steps with NXP i.MX7 and Toradex Colibri Board“). As with any other things, Linux gets updated from time to time, and Toradex publishes new firmware. In this article I’m documenting how I can update Linux in the external FLASH on that module.
In my previous article (see “Tutorial: First Steps with NXP i.MX7 and Toradex Colibri Board“) I have booted the i.MX7 on a Toradex CPU module. In this post I’m showing how to run a FreeRTOS application on that board.
Recently I have been running into the following error message in Eclipse when I started the GDB debugger:
I’m using in several projects different variants of Raspberry Pi boards: they are great and providing a lot of processing power. However, they are not suitable for any hard realtime systems. For a different class of projects I’m currently evaluating the NXP i.MX7 processors: the cool thing with these is that they have up to two ARM Cortex-A7 running at 1 GHz, plus a Cortex-M4 running at 200 MHz. And here things get really interesting: I can run a realtime application and FreeRTOS on that M4, while running Linux on the A7 :-).
As a standard procedure, I add some console functionality to my embedded applications. That way I have a command line interface and can inspect and influence the target system. One interesting hardware feature of ARM Cortex-M is Single Wire Output (SWO): it allows to send out data (e.g. strings) over up to 32 different stimulus ports, over a single wire.
In my first post about Segger Ozone (see “First Steps with Ozone and the Segger J-Link Trace Pro“) I missed the fact that it includes support for kernels like FreeRTOS. So here is how to show the FreeRTOS (or any other RTOS) threads with Ozone:
From time to time I face some problems which are really hard to find. Mostly these kind of bugs are very timing sensitive and depend on interrupt execution order. Maybe a dangling pointer is overwriting memory, code is running wild, or some functions are not reentrant as they should be. For these kind of bugs, good tools are worth their weight in gold. The Percepio FreeRTOS+Trace and the Segger SystemView have helped me many times to narrow down such kind problems in my applications. Another ultimate tools is hardware trace: Now I have a Segger J-Trace Pro for ARM Cortex-M in my arsenal of bug extinguishing weapons on my desk:
Dear bugs, look what I have on my desk. Your hiding time is over! 🙂