Windows Embedded MVP
Any good Internet of Things (IoT) platform requires good WIFI support.Anyone looking for WIFI support in WEC, especially under ARM, knows how frustrating this can be. Sure there were a few token legacy drivers out of the box but these, for the most part, were already out of production. Under WEC2013 it gets even tougher as WEC2013 broke binary compatibility with previous versions of the OS. As many previous OS WIFI drivers were only supplied in binary form, this meant drivers written for CE 6 or WEC7 and supplied in binary form will not work under WEC2013. If you were fortunate enough to have the source you could just recompile it and chances are it may work in WEC2013.
We in the MVP community voiced strong feedback to Microsoft and the WEC development team expressing the need for more and better WIFI support. I guess someone was listing as they threw us a bone. We were told the WL127X WIFI drivers from TI were going to be supplied, in source form on several occasions. Unfortunately they backed peddled and o ...
One of the essential hardware interfaces needed for any good IoT platform is an analog input. Many sensors output a low level voltage proportional to the measured signal. For example, a temperature sensor may output a voltage of 0 to 3 volts for temperature values from 0 to 80 degrees Celsius. A nice feature of the AM335x processor used on the BeagleBone is that it already incorporates an 8 channel 12bit Analog to Digital Converter (ADC) on chip. The ADC is mainly used for the touch screen interface for LCD displays but the extra channels can also be used as general purpose analog inputs. The open source Windows Embedded Compact BSP is available on Codeplex at Beaglebone BSP. The standard driver used the ADC exclusively for touch screen so I had to make several modifications to allow for general purpose use. This involved pulling out all the ADC setup and scanning to a dedicated ADC driver. The touch samples were then shared with the touch driver, which runs on a different thread, through a message queue. T ...
The latest release of the open source BSP for the BeagleBone has several improvements and bug fixes.
A new PWM (Pulse Width Modulation) component was added to allow up to six different independent PWM channels, all available on the standard expansion connectors. I wrote a managed (C#) test program you can use to vary the frequency and duty cycle of each channel.
Other improvements include the ability to add a custom boot splash screen that is displayed when first powered on and a progress bar that shows the load progress.
The prebuilt demo image was also refreshed to incorporate all the latest improvements and bug fixes.
In part one of this series I showed how to implement the “Power Key” to safely power up and shutdown the Beaglebone platform under Windows Embedded Compact 2013 or Windows Compact 7. To continue on the power management theme I will show how to implement the battery driver but first there are some hardware issues we need to take care of. It seems the hardware designers of the Beaglebone were thinking ahead in that they brought out all the needed connections to the PMIC (Power Management Integrated Circuit) for battery backed operation. The needed connections are shown as test points in this partial schematic: The full schematic is freely available from the BeagleBoard web site. The data sheet for the Texas Instruments PMIC is also available for download. As I have stated in my previous post, the TPS65217C PMIC has an integrated battery charger on board. In my case I am using a 1.75A/hr. Lithium-Ion (Li-ion) battery. A couple of the connections are quite obvious, Battery plus needs to go to TP5, Batt ...
One thing I see often on poorly designed embedded systems is lack of a robust system wide power supply design. Quite often little thought is put in before hand on requirements for proper power sequencing. This is the fault of the system engineer who should understand all the issues but whom usually ends up pointing the finger for a faulty system at the hardware or software designer. And while the hardware issues can be obvious, things like out of spec regulators or switching power supplies that don't switch etc. some of the software issues can be much more subtle harder to detect.
One that I have seen quite often is absolutely no regard for properly shutting down the system. Many times there is an off switch which kills all power but without ever informing the processor or OS ahead of time. Another design may force a reset on the processor and then power is cut. While the second example may be argued as preferred, both are examples of poor design.You may think that forcing a re ...
I recently made several improvements to the community Beaglebone BSP available on Codeplex.
The BSP now support all three serial communication ports. These ports are 2-wire (Rx and TX only) and available on the expansion P9 connector. Also added support for the third instance of the SDHC controller. These, along with the I2C and SPI bus are also available on the expansion connectors. I have included managed (C#) test programs to exorcise these buses.
Added a define file for the TPS65217 PMIC (Power Management IC). This PMIC has some nice features, like built in LCD backlight support and a Li battery charger. I have battery support working and will release additional code soon. Support for WEC7 and WEC2013.
Windows Embedded Compact 2013 (WEC2013) has great graphics and the XMAL /Silverlight support makes it great for User Interface (UI) development. With WEC 2013 many of the traditional user shell components, like the control panel, have been removed. This shifts most of the UI burden back on the OS developer. Not to worry though, there are some great samples included with WEC2013 and the development tools are now top notch. Here is an example of a home screen and the control panel included in WEC7 but removed in WEC2013: And here is an example of a home screen included as sample code in WEC 2013: You can clearly see the improvements. One additional nice feature of the new graphics framework is its ability to support “hardware acceleration”. Most all the new PCs graphic cards do some form of hardware acceleration and now even the lower-end embedded Systems On a Chip (SOC’s) include graphics accelerators or GPUs. The Beagleboard Black, which contains a Texas Instruments AM335X processor, is no excepti ...
In my last blog post I showed how to
transfer IoT data over the network using the M2MQTT library. But how, you may
ask, do you acquire the data in the first place? Well, chances are you have some
kind of sensor, be it temperature, pressure, accelerometer or what have you.
These sensors, more than likely, interface to the IoT node processor via some
kind of bus. It could be I2C, SPI, CAN, LIN or any number of others in the
alphabet soup. By far the two most popular low level sensor buses are I2C and
SPI. I2C stands for Inter-Integrated Circuit and was invented by Philips
Semiconductor (now NXP Semiconductor), SPI stand for Serial Peripheral Interface
invented by Motorola.
In this example I will show how we can interface to these buses using managed
code (C#) in Visual Studio 2013. I will use the BeagleBone Black as the platform
running Windows Embedded Compact 2013. A prebuilt demo image is available at my
Codeplex site along with all the source code for the
To start I wired a prototyp ...
The next release of the community beaglebone BSP gets a Windows Embedded Compact 2013 image along with an Internet of Things (IoT) sample code using the M2MQTT library. The WEC2013 demo image on Codeplex now includes the M2MQTT client library built in. To show a real world IoT working example I have included a Visual Studio 2013 sample project. The Internet of Things has been getting a lot of press lately, but at its core it just remote communication with a network enabled device. Something we in the embedded world have been doing for years. It seems the marketing people just love to invent new terms for the same old things (SoT). I say this tongue-in-cheek of course, IoT can be much more and I am sure we will be hearing more in the months and years to come. So to use the sample do the following: Download the WEC2013 beaglebone release. Prepare the uSD card (see documentation on the Codeplex site) Make sure the WEC2013 Application Builder plugin is installed on your Visual Studio 2013 ho ...
As stated in my last post eMMC memory devices are quickly replacing native NAND memory on embedded devices. This can not happen soon enough in my opinion. If anyone has worked with native NAND and tried to get these working knows exactly what I am talking about. The BeagleBone Black utilizes a 2Gb eMMC memory part for local, on board, bulk non-volatile storage. On later rev C boards the part was upgraded to 4Gb with no change in the footprint. To fully support eMMC on the community BSP several modifications had to be made. Several drivers (SDHC, SDMEMORY and FATFS) had to be modified as well as the boot code. Support for sector mode addressing (eMMC parts greater than 2Gb) was also added. The sdmemory driver needed some tweaks but for the most part the sdmemory library included with WEC2013 and WEC7 works as-is. This library handles the commands issued to the SD/SDHC/MMC/eMMC device and is also responsible for detecting which flavor of device is connected, among other tasks. The SDHC also needed m ...
Re: Windows Embedded Compact 2013 on Beaglebone gets IoT sample
Please contact me regarding a full installation of this BSP for WINCE2013, and what is necessary for...
-- Aaron Peterson
Re: BeagleBone BSP code clean up
Hi David, Interest in the fully version of the image. Please let me know the commercials. I need clarification...
Re: BeagleBone BSP gets several improvements
Hi David, How can I get a full version (without reboot) of your image available for demonstration?
-- Marco Aurélio Braun
Re: Low power operation on the community IoT Beaglebone BSP (Part 1)
Hello , dvescovi . Because of Job , I use your Beaglebone black BSP which is helpful for me . I want...
Re: Yet Another Gotcha: Compact 7 Update
Hi David, Would you please contact me regarding the wince7 BSP for the BBB? I have a few LCD Capes...
Seems MS may have posed a new updated ISO on MSDN. For those without a subscription, you are still out...
Re: Power management on the Beaglebone part 2–Battery
Hi David, First of all thanks for this, blog it's been very useful. Before I go ahead and solder anything...
Re: More improvements for Beaglebone BSP
Thank you for the fixes. The latest version builds under WEC7! Yay! Next .. have to try deploying it...
Of course, I meant the WEC2013 SDK ... see what happens when you work with too many bits at the same...
Hi David. First, thank you for what must have been a huge amount of work. I have been trying to install...