1

First excuse me if tags are not reflecting the content,

While watching a video about single board computer (SBC) I got confused that it doesn't mention arduino as SBC. I always considered it as SBC.

After digging around a bit I got more confused. It seems single board computer is where processor, memory, I/O this things are built on single circuit board rather than using expansion card attached on to a circuit board (motherboard). According to that is not arduino a SBC? It's processor, memory,storage are on single ATMega32A (for uno) attached on a single board which provides some I/O port (I/O pin, USB, UART, I2C etc.).

From some digging I learned that arduino code runs on bare metal unlike SBC like Rpi and that's the reason for it not being SBC. This seems weird reason.

(1) Is Arduino a SBC? If (1) is no then next questions are,

(2) Is Being less powerful is the cause? If yes where do you draw the line?

(3) Not having an OS hosted environment for execution is the cause?

If (3) is Yes then,

(4) Arduino has some bootloader code to load the program through USB. Isn't it kinda like OS, I admit it's not giving some nice api for h/w usage but is it all?

This link comment section kind of started a debate but ended without giving clear answer about my question.

closed as primarily opinion-based by Juraj, VE7JRO, sempaiscuba, gre_gor, Majenko Nov 22 '18 at 1:12

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

3

It may be impossible to draw a sharp line that separates single board computers from microcontroller boards. There are, however, several attributes that can help differentiate them and, in a sense, draw a blurry line. If a specific board has most of the attributes of SBCs it's probably safe to call it an SBC. Same for MCU boards.

Processing power may be one of those attributes. A typical SBC is many orders of magnitude more powerful than your typical Arduino. A Raspberry Pi, for example, has half a million times the RAM of an Arduino Uno. Although you can find microcontrollers that are a thousand times more powerful than the Uno, you are unlikely to find many SBCs that are one hundred times less powerful than a Raspberry Pi.

The operating system may also be a factor. SBCs are typically meant to run mainstream OSes: some flavor of Linux, Windows or Android. Microcontrollers, on the other hand, will most often run some kind of RTOS (real-time OS) specifically designed for the embedded world, if they do run an OS at all.

A factor that has not been mentioned yet is the I/O capabilities. On an SBC, you will typically find the kind of I/O ports that are common on desktop or laptop computers, like HDMI, USB host or Ethernet. A microcontroller, on the other hand, is more likely to have analog inputs or outputs, as these are more useful in the “electronics” world than in the “computer” world. Of course, the lines are blurry: you may find SPI, I2C and GPIOs on both SBCs and MCUs.

Neither of those factors may be enough to tell an SBC apart from a MCU board. But taken together, they can allow you to say that board A is clearly an SBC, board B is clearly an MCU board, and board C is somewhere in between and hard to classify.

3

The Arduino isn't a computer. It is a programmable microprocessor / microcontroller.

Generally a computer can run multiple applications where most programmed devices like the Arduino are running only one program. This is not an official definition but it is one way to differentiate.

It can be difficult to draw a line where it is one but not the other.

(4) Arduino has some bootloader code to load the program through USB. Isn't it kinda like OS, I admit it's not giving some nice api for h/w usage but is it all?

No that isn't like an operating system. The Arduino does not have a real operating system when compared to a computer system. And someone being able to load in a new program is just changing the current single program that is runnable.

An operating system (OS) is system software that manages computer hardware and software resources and provides common services for computer programs.

I think the programs being plural is an important factor, but this is only my opinion.

There is no one definition so you will get a number of different opinions. And most will be reasonable.

1

It all depends on your definition of "computer". From the point of view that the Arduino is a "Turing complete" architecture, with CPU, memory, storage, IO, etc, then yes, it is a computer. But it's not a "computer" as in what you have on your desk.

Is a mobile phone a "computer"?

We can shift the definition elsewhere if you like:

In general an SBC is taken to be a SoC mounted on a board with the support components. A SoC is a "System on Chip". But now we just move the definition to "What is a SoC?" - a question that has been asked many times before.

There is no one specific thing that divides a SoC from a Microcontroller. For instance:

  • "A SoC runs an operating system, but a Microcontroller doesn't" - except that there are microcontrollers that can and do run operating systems, and you don't have to run an operating system on a SoC.
  • "A SoC relies on external memory, but Microcontrollers have it built in" - except that there are SoCs with built in memory, and Microcontrollers than need external memory to function

The list goes on.

My definition of what constitutes a "computer" as opposed to an "embedded system" has nothing to do with what the device is, it's what you do with it.

If the board is being used with a keyboard, mouse, screen, etc for generic operation then it's a computer. If it's being programmed for one specific task then it's an embedded system. The same hardware could be used in both ways, and I would call it a computer if it were running "general" software (operating system, web browser, server software, etc), but I'd call it an "embedded system" if it were running one program only (with or without an OS) gathering data, reporting it back to a central system, etc.

For something to be termed a "Single Board Computer" I would say it has to be capable of running general software designed to run on a "traditional" computer. Things like Linux with Apache etc, or a desktop environment.

Mind, this is only my opinion, and as such it will differ from other peoples' opinions.

Not the answer you're looking for? Browse other questions tagged or ask your own question.