For consideration if a new processor board is built


#1

If there is a new processor board designed for this to use a more powerful processor and other capabilities beyond an arduino I strongly suggest the Freescale i.mx6 line of processors. There are lots of fully functional development boards with LOTS of features, enough to make a full blown PC with. These are used as the brains for many vehicle navigation systems and have automotive stuff built in. Such as 2 CANBUS ports

Technically you could build a breakout board that would connect to a M2 interface board right now and connect to a Freescale board and make it fully functional within a short period of time. You would have a larger board than an Arduino for sure but would be able to run something such as Linux, Win 10 RT, QNX or android.

If built from scratch you could easily build a high performance setup using an i.mx6 chip and build into it support for whatever can fit on board. Even have room to put maybe 2 short PCIE ports onboard so you could support Wifi/BT and cellular or whatever right from the system.

Software development on such a system would likely be much shorter than on the Arduino since most of it is already done and well integrated. But it will be a bigger dongle and might take up more energy although the i.mx6 is designed to run in an ultra low power mode too.

Here is one site with developer boards of different configurations.
https://boundarydevices.com/product-category/popular-sbc-and-som-modules/

I actually own a couple of the following boards but don’t currently have the time to consider doing anything with it like this. This board only has one canbus port but has the I2C, SPI and some GPIO stuff on board and sufficient for trying to get it running with the M2 interface board.

https://boundarydevices.com/product/sabre-lite-imx6-sbc/

Rodney


#2

It’s tempting to think that you might as well shoot the moon and use the most powerful processor you can get. But, I’m not really a big fan of this. Sure, those i.mx6 boards are powerful and fast but they’re way overkill for the sort of things we’re doing. Really, look at the processor documentation for that processor compared to the documentation for a SAM3X chip. It’s only like 100x easier to program for the SAM3X because the hardware is less complicated. You can say, sure, but the i.mx6 runs linux and all the drivers are done for you. Yes, largely they are. But, the added complication and abstraction of these bigger processors makes things feel a bit weird. If you wanted or needed to edit something hardware related you’d be lost in a hurry. Everything has 12 layers of abstraction before you get to raw hardware, everything has crap loads of protections and checks. It’s just a huge mess and tough to work with. You nearly have to hope that the drivers are there because it’s too complicated to just jump in and do anything. Contrast this with my having recently jumped into USB on the SAM3X to debug a lockup that was happening. It’s complicated code but the processor is meant for lower level work and I was able to figure it out. Another anecdote - on the SAM3X it’s nothing to create a timer that ticks perfectly reliably at 10 times per millisecond. You can easily do it. Try it on a PC once. You can’t make that happen on Linux or Windows. They’re not meant for very fast timer ticks. The general timer tick rate on those operating systems tends to be like 1ms resolution at best. Even then the multi-tasking operating system can screw up your timing and you may or may not get 1ms, especially not reliably,

My point is that some things that are simple, easy, and reliable on smaller embedded operating systems are a PAIN IN THE ASS on the higher end processors. Assembly is harder, hardware access is harder, etc, etc. There are some nice perks to working with hardware which is powerful enough without being ridiculous. Nothing you need to do with an M2 requires a 2GHz processor nor an ARM9 chip.

I’ve got a BeagleBone Black and I think its cool but I wouldn’t necessarily say that development on that thing would be faster than development on an M2. Really, Arduino sketches are about the best compromise between ease of development and power that I’ve seen. Hardware I/O is quick to get working, lots of libraries exist, and the SAM3X is fast enough for pretty much any little project like what we’re doing. For anything more you can use a PC or an Android/iOS device. Those things already exist and everyone has got one. You can do anything that needs a lot of horsepower on your phone or tablet and leave the car buses like CAN, SWCAN, and the like to an M2. I think it’s best to keep things within their correct application domain. Small embedded processors are good for some things. Faster, more powerful processors are good for other things. Some things overlap, some don’t.

Anyway, it’s just my opinion but I don’t see the use in going to something fast and complicated like the i.mx6


#3

Yes I agree Collin if one is connected to another computer the Arduino is a great way to do it. And for a lot of the features the M2 is built for the Arduino will work well. (Once I learn how to build drivers and have drivers written to duplicate socketcan functionality will make it even more so)

This posting is related to those wanting to go with a RPI or other solution or wants an all inclusive package that does a lot and don’t want to add an arduino. When considering something like that realistically the fact that the i.mx6 does include everything should be an attractive option. Much more so than a RPI. Grabbing a RPI will require additional hardware to get to work while a i.mx 6 board won’t and the i.mx6 boards have most of the software already written as you mentioned.

I suggest it ONLY if someone is considering trying to build an all in one device or if Macchina decides to build a faster processor board. I am NOT suggesting the Arduino platform is not good enough. Just that if the decision is to use an ARM based solution instead of the supplied Arduino that the I.MX6 is probably the best choice due to capabilities and ease of getting things to work.

Not saying a Beaglebone or similar board from another manufacturer couldn’t also be used. Just that I am familiar with the I.MX6 stuff and they are used in a few of the IVI sytems already out there.


#4

Small nitpick to avoid reader confusion: the SAM3X that powers the M2 (and the Arduino Due) is an ARM [Cortex M3] processor.


#5

Ok… You are correct. While the Cortex M is technically a microprocessor (Only running thumb code) I meant the full blown application processor version of arm which run Linux etc…

While a RPI would be reasonably cheap it doesn’t have all of the built in stuff the i.MX6 stuff does and could take much more to get it up and running.


#6

Hi Guys
In future revisions of the processor card would it be possible to look at redesigning the supply for VDDBU processor pin 52 & replacing R12 with a diode forward biased & another diode connected forward biased to TP5 with the other end of this additional diode connected to a dedicated pad +BATT along with a dedicated GRND pad -BATT to make it easier to install a button battery without having to replace parts on the board.
The 2 new pads could be located in the vicinity of TP5 this would enable the button battery to be soldered to these pads by fly wires & then secure the button battery in between the XBEE connectors & still enable the use of the XBEE socket if the end user ensures that the button battery does not stand to proud from the card.


#7

Am I to guess that perhaps you want this in order to keep the RTC going? That’s been a common complaint with the Arduino Due as well. They also tied all the power pins together so that it’s essentially impossible to use the RTC properly. If things were separated as you detailed then it’d be possible to boot the Due, set the time, and have that time persist for years and years so that things like data logging can have accurate time stamps without having to set it all of the time. This is all a good idea. I’d second this suggestion.


#8

Hi Collin
You are correct (Sorry to all i should have spelled it out more clearly) the modifications i am calling for would enable the DUE on board RTC to be battery backed up & thus time resetting would become a set once & then forget because the RTC would be maintained by the user installed button battery to pads +Batt & -Batt.


#9

Great idea guys. We’ll add it to the list of tweaks for the next round. Let’s prototype something up and test it!

@t_doust: Do you think you can sketch up a quick schematic of the changes you have in mind? We can pick up some diodes and a button cell holder and prototype something up to test it out before changing layout on next board.

Maybe just something like this holder with some wires soldered to it and this battery.

For reference, page 25 of the datasheet says “Current consumption is 2.5 µA typical on
VDDBU.”


#10

Hi Josh
Added modified drawing showing 2 x signal diodes + text for +Batt & -Batt 3Volt Button battery input on processor pin 52 VDDBU.
The modifications would enable a 3 Volt button battery to be fitted that would maintain the DUE RTC once set by the users sketch.
The below link is an excellent RTC library for the DUE.