USB Host vs RLP, pick one!

@ devhammer - the new thing at GHI is focus and quality. Having multiple firmware versions defeats what we are trying to do. We want one kick ass firmware that works perfectly and flawlessly :slight_smile:

3 Likes

Put USB host in a separate dll ā€” and so much for the problemā€¦

@ Simon from Vilnius - there is no dll. This is the core driver. I am sure wet can do some crazy pointers and make it work together but the code wonā€™t be clean and it will take a while to complete. The last thing we want to do is release a buggy firmware.

This can be revisited in the future but fir the next sdk, the community will decide what will be included.

Are you doing something like reserving the USB buffers whether or not itā€™s being used?

No, really, has anyone has to show anything cool with USB host? If I look in Codeshare, RLP beats USB host badly.

Remove RLP, and you are in a very difficult position against Arduino and mbed. Unless, of course, you donā€™t care.

2 Likes

Thatā€™s not an argument ā€” if all is hopeless, then why are you here?

1 Like

Because when ā€œfastā€ wins out over ā€œgoodā€ and ā€œcheapā€, then NETMF makes sense.

I still donā€™t get it why itā€™s an issue though ā€” .NET has always been very modular, no? Iā€™ve dumped CAN from G400 altogether and done it my way ā€” for both channels, using direct interrupts (even skipping RLP InstallInterrupt extension), beating GHI implementation in every aspect. RLP gives me all that. And suddenly we cannot use a dll for a feature nobody ever used since the introduction of Cerberus, the product itself?..

if not GHIā€™s employee, Iā€™ll vote for RLP
If need File System, we have SD. Not too much project that use HID devices or something that needs USB host.

If GHIā€™s employee, yours choice is my choice
:smiley:

@ Simon from Vilnius - I donā€™t think going by the number of examples is meaningful, because all previous and current firmware versions did not support USB. Also, the hardware is already on the Cerbuino and canā€™t be used with the current Ghi firmware. I donā€™t think weā€™ve even scratched the surface of the potential for using USB host. Just look at how often itā€™s used on platforms like the raspberry pi.

Just my 2 cents.

@ Valkyrie-MT - also, if you want Freaking easy, USB fits in, whereas RLP is definitely a more advanced feature that gets away from .net mf and ā€œeasyā€. Although I do understand the utility of it. My take is that if you know C well enough and are advanced enough to use RLP, you can probably just build your own firmware too. A user that wants ā€œeasyā€ will find USB host to be useful and easy to use, whereas RLP is not so easy for a beginner looking to minimize the number of languages they learn.

And what could one connect to Cerberus, given itā€™s limited memory and processing capabilities? Can you connect a webcam? A spectrometer? A 4G modem? The only USB devices I can think of are mice, keyboards and flash sticks. Mice and keyboard on a device that canā€™t easily drive a LCD? Riiiightā€¦ So weā€™ve got USB flash sticks left. If they work as reliably as SD card, then itā€™s better not to connect anything (thatā€™s my experience and I can prove it).

1 Like

@ Simon from Vilnius - usb mass storage and hid only, maybe serial.

Since when USB is an easy experience?

Iā€™m pretty sure USB can be implemented using RLP (can you do it vice versa?), and C on RLP is more about crunching MCU manual, not the language itself. And I have yet to see an MCU enthusiast that doesnā€™t know C, but does know C#ā€¦

And Iā€™m still waiting for any useful USB host feature. I gave mine on RLP (ok ok, on G400, but I see no reasons it could not be applied to Cerberus), so where are yours?..

Completely agree with Simon. There seems to be some myth that RLP is difficult. Itā€™s actually very FEZy.

@ Simon from Vilnius - there is only 10kb reserved for rlp so it itā€™s still limited in that sense, meaning you canā€™t implement usb in only 10kb.

I am not directing anyone one way our another but just adding info.

Iā€™ve done some low-level USB communication, so Iā€™m not quite convinced USB requires more than 10kB. 10kB is quite a lot, especially for such low bandwidth devices as mice. I might be wrong here, though. Please give details, then.

Itā€™s easier from the end-user experience and itā€™s certainly easier to code USB support with some level of support baked in.

You can implement anything in C. In fact, if you want to code in C, you can write a much more memory efficient and performant application if you ditched .NET MF altogether. The purpose of .NET MF, as we all know is not to be faster or more memory efficient than C, because it will fail every time. The point is to bring the convenience of managed code to the embedded device world. To me, bringing more capability to managed code is desirable.

Here I am! I only work in C# with the occasional Java and JavaScript. No C. If I knew C well, I probably would have used another embedded platform. This platform attracted me explicitly because I could do so much with C#.

keyboards, mice, serial, and USB sticks would be fantastic. I could do in field updates with a memory stick. If it had worked with the Cerb when I started my project, I likely would have used USB stick as a backup method for setting SSID and password for wifi. Requiring an end user to have a usb stick is much more acceptable than requiring a microsd card.

Having said all that. I donā€™t care what GHI chooses. I think RLP is great. I have just not needed it for anything.

-Valkyrie-MT

3 Likes

Removing RLP is actually a [em]removal [/em]of capabilieties. Another real world example: Iā€™ve not only replaced CAN in my application, I also use RLP to do some AES encryption. I would be impossible to do it on managed side. RLP also gives possibility to reach other features in a very feature rich F405. Without RLP, we only rely on what GHI guys do, and they canā€™t do everything, and sometimes they donā€™t make it right. Same applies to Microsoft, but they are totally hopeless in that sense. In those cases I can fix things myself, still not sacrificing productivity much. Iā€™ve done that on EMX, Iā€™ve done that on G120, Iā€™ve done that on G400 and now I can do that on Cerberus!..

Alright, you are the first. Still I donā€™t see any reasons why you couldnā€™t succeed in RLP. Nobody uses RLP to rewrite everything; itā€™s used to fix or implement a very distinct functions that GHI has no time or motivation to play with.

USB sticks are fine, but at least they have an alternative (SD card), although not very reliable (but hey, who said USB flash stick will be reliable). Any other possible [em]not hypothetic[/em] applications?

The thing that shocks me most is the whole idea of voting. You give this important decision toā€¦ a bunch of users on the forum. At the moment itā€™s 12:6. Is this your statistical sample?.. Does it reflect your userbase accurately? Are they experienced enough to vote on such specific issue? Do they have experience in RLP, or USB, or both? What about those guys who misses the vote?

And what about your newest mantra ā€œfocus and qualityā€? Cerberus was made a first-class passenger only four weeks ago, and now you will simply strip a very important part and replace it with another? When will you stop stripping things like that? Any guaratees that four weeks later from now you will not strip USB host in favor for support of this thingie? Autoblow 2: A Robotic Oral Sex Simulator For Men | Indiegogo