I’m a big believer that having the right tools for the job not only can speed up the job, but can also improve the quality of the end product. That is why every month I look at a different tool that can aid developers. This month, I’ve decided to take a look at my newly acquired arm KEIL ULINKplus programming probe.
When I started to look at the ULINKplus, there were several interesting features that I saw that made me want to evaluate it further. These features include:
- An isolated JTAG/SWD port
- An isolated Power measurement port
- 8 general purpose input/output pins
I’m always a big stickler about isolating the target board from my tools and computer for several different reasons. First, I want to make sure that I minimize the additional electrical load on the target board so that it runs as if it were standalone. Second, I want to make sure that if something does go wrong, my equipment and computer won’t find an energy surge coming back and damaging my equipment. The fact that we have isolated JTAG/SWD and power monitoring really caught my attention, even if the isolation is only 1 kV.
Now another feature that I found to be very intriguing is the power measurement capabilities. For many years I’ve either used an external energy monitor or used my IAR I-Jet when I want to optimize the energy consumption of a device that I’m working on. Keil MDK now has a system analyzer built-in that can be used to monitor the power consumption by measuring the voltage across a shunt resistor and then calculating the current and power.
You can see in the image below, whose source can be found here, spells out and demonstrates how this looks within MDK. A developer can easily see the baseline energy consumption and the spikes in energy usage as different threads execute on the CPU.
(Source Image: arm KEIL, http://www.keil.com/support/man/docs/ulinkplus/ulinkplus_anlyzing_power.htm#/event_stat)
What is great about the power monitor is that the ULINKplus comes with six different current shunts that are designed to provide measurements in the following ranges: 5 mA, 10 mA, 25 mA, 50 mA, 100 mA and 250 mA ranges. If a developer wants to switch ranges, they do need to physically swap out a little 3-pin shunt board which can be seen in the image below:
The final interesting feature on the ULINKplus are the nine I/O pins. These pins can be used with a script to perform test and automation on the target embedded system. There are nine I/O along with a dedicated ground and a +3.3V power pin. The I/O are broken up into 5 general I/O, 3 analog in and one analog output.
Between all these different capabilities I’ve found that the ULINKplus can be an extremely interesting and useful tool to have in the toolbox. I’ve only just started to play around the programmer and will provide further tips and tricks on how to get the most from this tool in several of my upcoming blogs.
What is NOT great that you can use only with Keil’s own uVision IDE. This is not a problem if you are already uVision user … if you have any money left after the subscription … Certainly uVision + ULNK+ is a great ARM development environment … but if you need/have to use some other tool-chain … research Segger’s J-Link …
Thanks for the comment. You are absolutely right that there are specific features to this programmer that would only be supported by the Keil MDK. The general JTAG/SWD will work with any toolchain but the current measurement and the I/O may not. I have several SEGGER J-Link and J-Trace probes which I absolutely love. They do work great with nearly every third party IDE I have tried. It is important though to try to tools and understand the capabilities and features that they provide. (Even if I do get a bit excited to try out the new tech).