Compare to Raspberry Pi and FPGA

There wasn't a thread comparing Arduino to Raspberry on the forum, which is somewhat weird, as both are open source and both have lots of GPIO that intend to power some external hardware.

Before I enter the rabbit hole I had viewed the two to be indifferent. One was in python and one was in c++. One had some USB and one don't.

The difference now become much more apparent.


Raspberry Pi is a lot more powerful than ordinary Arduinos (maybe beside portenha H7) and also is a lot more complicated. It have a lot of RAM, USB slots, HDMI, and it boots, off a micro SD card.
It also doesn't have some of the GPIO on the Arduino, like it lack analog pins.
It's more like a mini computer, with a bunch of GPIO (I2C and SPI too) that allow you to connect some stuff to it.


FPGA is .. well, it's more like ... well, it's a array of logic gates. Really large array of logic gates. Basically you implement your own circuit. You implement your own full adder, arithmatic logic unit, and you implement your own registers and stuff. It's a lot more hardware and fixed-purpose, and because of so it can perform tasks extremely rapidly.


Arduino on the other hand is basically a tool that allow you to program a selection of chips. ATmega32U4, ARM3X8E and the like. These chips are microprocessors, small processors with RAM and flash (maybe EEPROM) built in that can perform pre-programmed tasks. More powerful chips exist, such as the 3X8E, with advanced protocols such as I2S, CAN and capabilities such as "true analog". They offer a good development platform as they are many types with specializations (such as display handling) and often without extraneous features, which keep cost down.

Alongside FPGA, which can be commonly found anywhere from SSD controllers to USB hubs, these chips can be used to make actual products. Bluetooth headphones, for example, use a commonly available, programmable chip from CSR to handle bluetooth. smart response XE for example used some ATmega chip, not unlike the 32U4, for process. The only reason these chips are not identified in Arduino IDE is because they are not using the Arduino "firmware" -- their code is burned into the chip using the ICSP header.

There are so many uses for each and each has their place.

FPGAs are great for glue-logic like busses between chips and such. They are also quite useful for fixed emulation of other ICs no longer available. They can be used as a cheap solution to making ASICs. That is just the tip of the iceberg and I expect other users will have a lot more uses that I.

I teach online and I have students who can afford my services and other students who I help as charity, for the latter I send them a Raspberry PI to use as their own computer. Which is one of the big distinctions of a Pi as compared to an Arduino. That is, a Pi is a fully programmable computer with a von Neumann architecture, whereas Arduinos (or the vast majority of them) are Harvard architecture.

That basically comes down to memory. A Pi can load program code into memory and execute it where an Arduino cannot access new code nor modify its code at runtime.

This is a good topic. I look forward to what other users more experience have to say.

I had thought about the idea of storing some kind of "code" on a external medium (flash, SD card or something) and have the main sketch be some sort of a interpreter that performs tasks directed by the external medium. It will be much more lengthy but with a large enough flash like on a Due you can program quite some stuff in and have a large medium just feed them the data.
But in the traditional sense of loading binary, no. You can't load binary and execute them.

Yes, especially since now we have windows on arm. it's glitchy, but it runs

That is an interpreter, there are many including uPython. I'm making my own for video games so it will work like pygame with external files.

I just load Raspbian, open office, the necessary IDEs, and Skype.
I have the image ready to be copied.

I think this part of what you shared is interesting to discuss.

According to this article:

it is an ATmega128RFA

It looks like they did some cool explorations of this device!

You can add support to the Arduino IDE for the ATmega128RFA. There is a tutorial from SparkFun for it here:
https://learn.sparkfun.com/tutorials/atmega128rfa1-dev-board-hookup-guide#arduino-compatibility

I also suspect that the more popular MegaCore could be used, since the microcontroller in the ATmega128RFA is an ATmega128.

This is not a matter of whether a microcontroller is using "the Arduino firmware". It's simply a matter of adding the necessary support files to the Arduino IDE installation. Arduino only provides support for the popular entry level boards like the Uno in a fresh installation of the Arduino IDE, but they also provide the capability to add support for additional boards and microcontrollers, and between the other official Arduino boards and the ones created by the community, there is a huge selection available, and more all the time!

It's not clear to me what you mean by "the Arduino firmware". Perhaps you are referring to the bootloader?

You can do that via the Arduino IDE also if you like. Just connect the programmer to the board select the correct programmer from the Tools > Programmer menu and then Sketch > Upload using Programmer.

Yes, they did. Arduboy Community also did.

And I mean it make a lot of sense, because these chips are not awfully expensive. The ATmega32U4, for example, is $4.6 among this chip shortage madness. Yes, a ARM m core is way more cheaper, but that's in part because the 32U4 is old.
Like how Arduino used 16U2 for their programmers of Due, Mega and Zero and such. Because they need a microcontroller with these capabilities (e.g. native USB handling), they just grab whatever that is off the shelf.
It does not matter whether its open source or closed source. Earlier on you had Atmel Studio. Now that Atmel is dead, Microchip took over and you have Microchip Studio for their(or anyone's) AVR and SAM devices
How nice.

It does to me!