NETMF 4.1 to 4.2 :: Guidance towards upgrading current project

Maybe you guys can offer some advice on this. It mainly pertains to finding out which is the best route towards upgrading a project from NETMF 4.1 to 4.2, considering also all the platforms and devices that have either recently become available or that are soon to become.

For some time now I’ve been working on a project with the following specs and devices:

  • Cobra board (EMX-based model)
  • RFID reader (125 KHz reader from Parallax)
  • LCD display (FEZ-TFT 320 x 240 3.5" expansion)
  • Internet connectivity (Cobra’s on-board Ethernet interface)

This project is already about 80% coded, but everything is based on NETMF 4.1 (and the above hardware). So before I can put this into production, I’ll most certainly have to port this over to NETMF 4.2 and to some other (current) hardware. So I’m looking for some advice here towards which would be the best move. At the top of my head I can think of two possibilities, but if anyone has other alternatives, please feel free to offer:

a) stick to using the Cobra platform, but now with its new inception: "Cobra II WiFi"
b) switch to a FEZ Spider platform

But this immediately poses a few questions for which I don’t yet have the answers. Maybe you guys can help me on this.

  • Are there any significant differences between these two platforms, besides the performance boost of the G120 module on the new Cobra?
  • Will I be able to use the new 125 KHz RFID Gadgeteer module with both boards?
  • Being it a Gagdeteer module, are there any (reliable) driver libraries already available for this RFID module?
  • If for flexibility sake I want to have both wired and WiFi internet connectivity, what (extra) modules would I need to get for each board?

Any guidance will be much appriciated.

commercial product? you probably don’t need to move to 4.2, GHI have a strong support for commercial customers, and EMX/4.1 combo is probably a well proven platform.

Fez Cobra and Cobra 2 are not similar, except in form factor. That’s not necessarily a simple transition, although since they’re both Premium products so the libraries will be somewhat similar (the changes should be less dramatic I would guess).

Spider is EMX based; the only benefit there is that you can still use the same codebase you used on 4.1 if you load 4.1 firmware onto that; you get no benefit here in my view except backward compatibility. I would predict that there’d be an updated “top of the line” Gadgeteer mainboard based on G120 (or something even newer?) somewhere in the near future and EMX will then be not a mainstream offering.

decisions about your LCD are probably one of the more interesting parts of the challenge. That TFT isn’t available and you probably need to consider Gadgeteer based connected one like the TE35.

the good thing about cobra2 is you can get a wifi integrated one, so that deals with one of your harder integration challenges. Then get an ENC28 network module and your connectivity is sorted.

I don’t know if there is a sufficient performance boost with the G120 over the EMX. I think memory access is slower with the G120, so the performance can not be compared by the system clock speed.

On the other hand Gus has a cool trick to “overclock” it:
http://www.tinyclr.com/forum/topic?id=10190&page=1#msg101089

My 3 days experience going from EMX & MF4.1 to G120 MF 4.2

I really can see a performance boost between EMX & G120, although my application that runs fine for some time on EMX & 4.1 and for a week on 4.2 is not stable on G120 yet. I am sure that all problems will be solved sooner or later…

To consider.

  • RLP code compiled for EMX does not run on G120… Seting up the compiler environment for G120 is not yet documented.
  • A bug in NetworkInterfaceExtension.AssignNetworkingStackTo(…) makes debuging hard. Restart a debug session is not possible.
  • Deploying an app from VS2010 seems to go less smooth and takes longer. Sometimes need to reset my board.

What is the trick ? That link requires insider access.

Oops sorry! Didn’t realize that. We don’t know yet, but it will be shared soon.

Maybe I’m wrong, but in the end, considering all that’s been said here, (I didn’t understand everything, though… e.g. I’m not exactly sure what RLP code means), I guess my best bet would be to find a way to stick to the platform already at hand, righ? I would have to check on that with the GHI people, though. Because, what you guys are saying is that moving to any of the new platforms now is either too risky or not beneficial in any signinficant way - at least not yet. Did I get that right?

Yes, this is a commercial project, but one quite small in scale. It’s more like a “build to order” product, and we’re talking something like 10 or so units that we’ll put together and deliver for this special one-occasion project for a customer of ours.

I was kinda hoping that moving towards a FEZ Spider based solution - one which I could get everything working just by using Gadgeteer modules alone - would be a safe bet, but after all that’s been said here, I’m not quite sure. If anyone wants to expand a bit on this, please feel free to do so.

One thing that I forgot to mention is that this project currently uses the Glide framework for its UI layer. So any additional info regarding moving that to either of these newer platforms would also be appreciated. Is Glide still supported/ under the Gadgeteer platform? Is it even being updated / advanced? Visited Glide’s project site at Codeplex yesterday and no activity seems to have been going on over there for quite some time.

Thanks.

@ mpenna - Glide sits on top of NetMF. Get the source code recompile with 4.2 or 4.3 and will work. No worries about Glide :slight_smile:

@ Architect - Thanks… I’ll eventually thy that. Oh Lord, we’re still discussing about 4.1 to 4.2 issues and best routes and for what I see 4.3 RTM has already come out!!! : (

As Gus said 2 years in technology is a very long time. :slight_smile:

@ Rajesh - I believe the G120 overclock trick is to use the Register class to set Bit 0 of the EMCCLKSEL register (address 0x400FC100) to a value of 0. This allows the external memory controller to run at the same clock rate as the CPU, instead of half speed, which is the default.

           
// OVERCLOCK G120 EXTERNAL MEMORY CONTROLLER
Register EMCCLKSEL = new Register(0x400FC100);
EMCCLKSEL.ClearBits(1 << 0);  // OVERDRIVE
//EMCCLKSEL.SetBits(1 << 0);    // NORMAL

However, I have not yet seen official confirmation that this is indeed the trick, nor am I certain that this is the only thing that needs to be done. I have been able to get a 32.3% speed boost. Of course, your mileage may vary. I haven’t seen any downsides yet, and my Cobra II seems stable so far, though I don’t know what the long-term ill effects (if any) might be.