Archive for November, 2006

As an embedded guy, I deal mostly with C code (although recently, I’ve been up to my eyeballs in Assembler *sigh*). In my current job, I’m doing bare metal programming, without any Operating System.  I also do .NET programming in C#, and it is so much more productive than your typical embedded environment.  Recently, an oportunity arose for me to investigate the suitability of Windows CE for a particular embedded application.

Imagine my excitement!  Windows CE 6.0 could provide me with a Visual Studio 2005 environment, the code could be done using the .NET Compact framework using C#.  To feel alive again!  Unfortunately, my bubble soon burst.  What went wrong?

I believe that windows CE is inherently targeted towards mobile or end-user devices.  This is reflected in the processor architectures supported: ARM,  x86, MIPS (why? it’s all but extinct!) and SH4 (a niche player).  No PowerPC or 68K processors.

ARM is king of the embedded space.  This is mostly due to its ubiquity in telephone sets.  I really like the ARM architecture, it has tons of vendors.  Unfortunately, from asside from the Intel IXP4xx serie, the support for high-speed connectivity (10/100/1G Ethernet) and large data movement is limited.

x86 is a proven architecture, but generally speaking, the number of peripherals provided on the chip is rather limited (compared to other embedded processors).  as a general computation platform, it’s ok, but if you have lots of I/O pins, many peripherals, etc… it is not the best choice.

The fact is, when talking about embedded devices which are not “consumer” oriented, PowerPC rules!  It has such a diverse offering of peripherals and processors for all occasions.  From sub $10 parts all the way to $200+.  And for the particular application I am looking at, it’s a natural match.  And I can’t use Windows CE and the VS2005 environment :-(   I am bummed.

One of the interesting tid bit I can across during my research:  Windows CE 6.0 supports up to 32,000 processes.  Hello?!  Anybody home?  Who in their right mind would consider this a feature?  Any designer doing an embedded application with more than 100 processes should have their head examined, 500 or more processes, they should be shot! This is what happens when maketing is in charge!

One simple question for Microsoft:  What platform did you use to test that 32,000 processes are supported?  Intel Duo with 16G of RAM?

Yes, I am just a bitter designer that has been deprived of a new toytool.

1024 Assembly instructions that is…

For the last few days, my world has shrunk considerably.  In this age of multi-gigabyte RAM, my universe has been compressed to 1024 instructions, 64 bytes of RAM and 128 Bytes of EEPROM. This is hardcore embedded.

The question that begs to be asked: What can you possibly do with such limited resources?

As it turns out, quite a bit.  Here is what we’re currently doing:

  • Read an Analog to Digital Converter (24 bit) using synchronous serial port
  • Convert that 24 bit number to a temperature
  • Communicate with a host using a single wire protocol
  • Support a number of different commands from the host (6 in all)
  • Do CRC calculations
  • Drive some visual indicators

and we’re only using 60% of the space.  Small truly is beautiful.

Just read it on Groklaw

Sun believes deeply in creating communities and sharing innovations and technologies to foster more participation. Today in a historic move, Sun is opening the door to greater innovation by open sourcing key Java implementations-Java Platform Standard Edition (Java SE), Java Platform Micro Edition (Java ME), and Java Platform Enterprise Edition (Java EE)-under the GNU General Public License version 2 (GPLv2), the same license as GNU/Linux.

Love it or hate it, I believe the GPL has been responsible for an improvement in the computing world. GCC is a defacto standard toolchain in embedded work. The internet is now available world wide. This would not have happened were it not for the GPL/free software movement. Sun is doing everyone a favor. Their market is NOT selling Jav, it’s selling boxes! Everything else is an enabler, be it Java or SunOS.
Is the GPL be all, end all of licenses? Of course not. It is not necessarily appropriate for all things. Our products are specialized, with a small (compared to Microsoft Word) market and only a few competitors. It makes no sense for such a product to be open sourced. The reality is, unless you have address a large problem or segment, no one is going to look at your code anyway!

I grok Linux, and ran a few servers in my time. I love reading GrokLaw (and despise SCO). But I’m a pragmatist, and since developing on Microsoft Windows is what pays the bills, that’s what I do. I even think windows is a cool platform.
I realize that Microsoft is everybody’s favorite whipping boy. Not all of it is deserved, but sometimes you have to wonder….

Windows Vista’s activation system sound like it’s nuts! Read The Skinny on Windows SPP and Reduced Functionality (via Larkware News). Add a new hard drive (or change your video card) and if you don’t heed the warnings to re-activate, you won’t be able to do much. Think of the fun when family members start calling the “tech support” nephew. “Yes uncle, you must find the shinny sticker on your box and enter those numbers”. On second thought, you’re going to be the one to enter those numbers, as uncle wouldn’t have the wherewithal to add a HDD. Hmm…Is this a conspiracy by “The Geek Squad” to drum up business?

Microchip Technology Inc.

Cost: Free
The MPLAB IDE is an Integrated Development Environment for the PIC microcontroller family. Out of the box, it comes with an assembler, but you can integrate your compiler into it. If also supports debugging with one of the PIC cable. In addition to the assembler, here are two components which are worth the price. It comes with a hardware simulator, and a stimulus generator. The hardware simulator allows you to step through your code without having any hadware. Very convenient when the prototype is not ready, or if you simply want to validate the operations of you code. The stimulus generator allows you to simulate activity on the I/O Pins. This is nice if you want to debug your I/O handling routines.

One of he quirk I noticed on the simulator is the steping over function call. When the system returns from the call, you will not break on the instruction after the call, but the one after. Only a minor annoyance.
If you are using one of the small processor, and do it all in assembler (like I am right now), MPLAB IDE is the de facto standard, and there is no reason to get anything else. If you are using one of the bigger PIC with tons (for a PIC) of RAM & ROM, and are programming it all in C, MPLAB IDE is still be a nice tool to have as you can use it as your single IDE (and not have to learn yet another one).
If you are developing something on a PIC processor, do your self a favor, and get the free MPLAB IDE.