[beginner] Can I prototype a pluggable device?

Hi all,

I’m fairly new to Gadgeteer and .Net Micro Framework yet I have a very good knowledge of the .Net framework for multiple advanced applications.

On a side project, I’ve always wanted to work on making a device that could get plugged in some sort of docking system to gain more hardware features.
The prototype I’d like to build would be having a small mainboard plugged with a LCD display, a sound/music and a SD card module which would live on his own (using a small game) that could be plugged to a more powerful mainboard (better processor & more memory) linked with a mass storage HD, a keyboard and a mouse and therefore make use of the added features to empower the game I’d use for this prototype.

Would Gadgeteer be a way to achieve my goal or am I still resigned to build my own hardware and protocols to create such prototype?

Thanks by advance.

If I understand correctly what you’re trying to do, I think you could achieve this by using the Gadgeteer mainboard as a USB client device and your main computer as the USB host.

I am not exactly sure what you are trying to do. Please explain more.

Welcome to the community.

Sure.

My goal is to try to see if I can get a way to mimic a Tablet device that would dock to a computer and thus be able to charge up but also activate and link the dock station onboard processor, additional memory and storage while still running with the same apps yet empowered by this extra computing power.

Imagine that you have a small mobile device that you could plug on your home’s dock or office’s dock and keep in the same environment but with this extra processing power you get when using a desktop computer.

That’s whay I’d like to prototype and I wonder if Gadgeteer could help me validate that principle.

Thanks

The best way would be through using USB to serial module with fez spider.

so if I interpret your requirement, you’ll have two “devices”, both with processing capability, one “portable” and one “dock” that offers more. So from a Gadgeteer sense, that would mean two mainboards, with some way of cooperating and sharing resources.

I think as a beginner, that is an extremely hard task to set yourself. You not only have to figure out how to get used to writing micro framework apps, handling interfacing hardware components, dealing with batteries, etc, but then you have to set up cooperative/shared processing.

What you’re describing is much like the newest generation of tablet devices - and if what you’re expecting to create is something like that, I honestly think Gadgeteer is NOT going to be an effective way to achieve that. You talk about applications. What apps? netmf is not Windows, nor big .net framework, so you don’t have the ability to just use those apps.

I also feel you will need a higher level communication channel like USB or serial, more like SPI or I2C between the 2 devices. But then again, I’m not a specialist in this area…

@ Brett - If I read this “My goal is to try to see if I can get a way to mimic a Tablet device that would dock to a computer and thus be able to charge up but also activate and link the dock station onboard processor, additional memory and storage while still running with the same apps yet empowered by this extra computing power.”

Then I think he wants the computer to act as the external processor and use a netmf device as interface between the 2?

[EDIT] this makes it probably even more complicated…

Yes, agreed, he also talks about a desktop computer, but there’s no explicit mention that this will be used. In fact, there’s two parts that imply different things. First, “while still running with the same apps” implies that the two devices will be the “same”. And then “Imagine that you have a small mobile device that you could plug on your home’s dock or office’s dock and keep in the same environment but with this extra processing power you get when using a desktop computer” which doesn’t actually say the computer is an integral part of the solution, it seems to be used as an analogy.

What the two will achieve “together” is what will dictate how the devices need to be connected and what they are. I still don’t see this as a “beginner” exercise, no matter what.

Hi all,

First, thanks for the great insight and sharing your knowledge with me on this topic.

I’ll try to clarify what I’m aiming to prototype.

Based on my current knowledge of Gadgeteer, I believe what I’d like to do is:

A. Plug together a Mainboard, a LCD touch display, a SD module and Sound/Music module that would play the role of a “tablet”

B. Plug together another Mainboard, a Sound/Music module, a Video output module (VGA or DVI), a couple of USB ports to allow the end user to plug a mouse and a keyboard.

C. Find a way to have these two separated “devices” to hot plug themselves.

D. Develop the software layer that will take care of copying the state (memory) of the “tablet” device (A) to the “dock station” device (B) and maintain a copy of this state between the 2 devices until unplugged.

E. Use the “dock station” device (B) to continue to perform whatever software was previously running within the “tablet” device (A) seemlessly.

F. Provide the “dock station” device (B) a way (through software) to push small tasks to be processed in the “tablet” device (A).

G. Handle the hot unplug between the 2 devices.

I hope it is clearer now.

I have full understanding that this isn’t an easy task yet I’m not into a hurry and can spend time on this.
If my initial conclusions are relevant, I’m planning to open source the approach and invite other contributors to maybe bring to life a new way of using our handeld devices. :wink:

Thanks again.

I think you lack a clear understanding of what .NETMF is and isn’t.

NETMF is not an operating system.

These devices have a native firmware image installed on them that makes them appear as a NETMF debuggable interface. Users (you) write a C# managed app that gets installed on the device over USB.

.NETMF doesn’t run separate “apps” though. It’s an embedded environment that runs a single software routine. Think of it as a device that runs a single .NET app.

Certainly, you could write a .NET app that “feels” like an operating system; i.e., you could write a .NET app that has buttons to start up different routines – perhaps a button to start up a “calculator” interface, and another to start a “calendar” interface. But that entire environment – the “OS” and the “apps” – would still live in a single .NET deployment. In other words, it would have no ability to run anything that wasn’t built-in to it. If you wanted to add, say, a Contacts app, you’d have to open up the “OS” project, add another window, add more buttons, and recompile everything.

You could write a plug-in infrastructure so “apps” could be written for it, but those apps would have to be copied into the source tree of the operating system.

This has been done before, but the results are pretty pathetic. There’s significant overhead in this, and these devices are really slow to begin with.

.NETMF is not some hardware hacker version of a .NET Compact Framework device like a Windows 8 phone. These devices are significantly slower.

If, however, this is what you’re interested in doing, why not simply load the same app on two different boards?

You could use UART/I2C/SPI/etc to transfer the app state between devices.

Now, if you’re talking about providing an interface to allow one .NETMF app to be transfered to another device, you’re now talking about modifying the underlying firmware. We can get you going in the right direction over in the native forum – but, honestly, that’s going to be a huge undertaking, and I’m not really sure what you’d get out of it. It just sounds like a lot of tedious work that no one would benefit from.

You’re obviously used to writing software for desktop computers – where you can focus on form and functionality, without thinking about performance. Not so here.

The takeaway: these are highly resource-constrained devices. They’re designed to run a single task. Most people use them for the same sorts of stuff you’d program an 8-bit microcontroller to do. Don’t let the LCD touch screen fool you. These things make a Roku Soundbridge look like a Cray mainframe.

Thanks Jay for the clarifications you made in your previous post.

I do have a clear understanding of what .NETMF is and I wasn’t expecting to host applications (as you’d expect in a full OS).
It’s rather what you express at the end of your post: I’d like to prototype this behavior validating that I can plug 2 mainboards together and maintain 2 states (master/slave) when they are connected.

If you can redirect me to any discussion or link providing some more information about it, I’d appreciate :wink:

Thanks