Everybody knows the Raspbery PI, but there are a lot of other SBC available. Which are the best for use and which are the best balance efficiency / price? I use them for smal automation in relation with microctl (Atmel ) Many thanks in advance Sorry for my english
Fonctionality / ease of use / connectivity / operating system ( web server ssh .. ) communication (RS232 485, I2C, SPI ..) ease and tools for programming ease of integrating them into a box with other devices .....
Most of this is purely subjective. What criteria do you use to *rate* "functionality"? Or, "ease of use" (as a developer? as the end user of your *developed* product? etc.)?
Do "more connectors" constitute better connectivity? Or, more *virtual* connection capabilities (protocols, etc.)? Do the number of virtual
*connections* that can be maintained at a given time factor into this (e.g., if a device can support 10 open sockets while another supports
1000, is the latter better? how MUCH better? what if those sockets come at the expense of some other criteria -- how much are they "worth"?)
Are you making "one-off" units -- e.g., as a hobbyist? Or, trying to design for higher volumes? How price sensitive is your decision? How much (personal?) time do you want to throw at your projects and what are teh consequences in terms of CALENDAR time? (are you willing to wait an extra month, year, etc. to satisfy -- or compensate -- some other criteria)
Here's a possible crude way of sorting out what you need:
- consider two extremes; a ready-made PC and a pile of chips
The PC can be self-hosting in your development effort. No need to buy tools to allow you to debug code AS it executes. You can develop in damn near any "language" you choose, interpret, JIT, compile, etc. You can readily add resources to it as your needs evolve (more memory, upgrade to a faster processor, add secondary storage, different connectivity mechanisms, user interface technologies, etc.).
At the other extreme, you can assemble an assortment of chips to achieve *exactly* the performance and capabilities that you want/need. And, code the OS to provide the functions you think are important.
You'll get different results -- and invest your time in very different ways!
- revise this as you see what each imagined "optimization" *costs*
E.g., I can add more memory by replacing a DIMM vs. having to possibly select a different SoC that can support that additional memory; I can move to an execution environment that supports protected address spaces by *buying* one that runs on the COTS PC vs. DEVELOPING one that runs on the particular set of components I've assembled; etc.
Think about how this conversation (with yourself) will play out in the future. *If* you take one approach (PC vs. "components" vs. anything in the continuum between), how much will you be *bound* by your initial decision? (see, also, below)
Knowing absolutely *nothing* about your actual goals and specific criteria... but, assuming your gizmos need to talk to each other (i.e., you aren't making a standalone device that JUST does one thing and has to be configured completely independently of other devices busily doing OTHER things), I'd recommend an RPi running Inferno.
This "wastes" a fair bit of resources (over what you could do "on your own"). But, not as much as something like an SBC PC (that has support for a pretty display, rotating media, etc.). The big wins, are:
- its easy to develop under
- its easy to extend the system past the boundaries of that *first* RPi (i.e., you can have N RPi's all seamlessly cooperating on a particular application; doing so in other environments makes the "seams" far more visible!
- you'll (probably) learn something(s) "interesting" along the way
There are hundreds of them, from tiny 8 bitters to 8 cores and beyond, with varying degrees of storage, networking, video, I/O etc. You may want to check the reviews at hackerboards. Also, every now and then they publish a fairly long list of boards with characteristics, prices etc.
If you are writing your own bare metal code or your own BSP, then what is the availability of the documentation and how good[*] is it ?
[*] My non-exhaustive definition of "Good":
Includes conceptual overviews of the MCU and peripherals.
Includes detailed information on each register and the inter-relationships between the various registers.
The critical piece of information you need to get your device driver actually initialised correctly isn't buried in sentence 2 of paragraph 5 of page 208 (which is actually ~50 pages away your current position and doesn't have any reasonably direct pointers to it).
The documentation wasn't created by running it through Google Translate or similar.
Includes a detailed table of contents sidebar.
Comes with example code which shows the things the manuals didn't bother telling you about.
Simon Clubley, clubley@remove_me.eisner.decus.org-Earth.UFP
Microsoft: Bringing you 1980s technology to a 21st century world
The PC/apple/tablet things are not SBC-s not because they are not single board, many of them are that nowadays.
But they are not computers - a computer you can program including its coming out of reset, how to initialize its peripherals etc. These are computerized TV-sets or whatever name one chooses for todays entertainment/office hardware.
Well, as to that, you *could* program one of today's computers, re-flash the BIOS and do whatever you want. You could do something similar with what's usually referred to as an SBC, but many of them are come pre-programmed with some operating system and what programming you do is on a higher level.
In the old days SBCs had RS232 or 20 mA connections for connecting "dumb" (VT100) serial terminals. These days Raspberry etc. uses Ethernet for exactly the same purpose (Telnet) without having keyboards or displays of their own.
In the 1970s boards like Intel SDK-85 contained in addition to the CPU functionality also some hex keyboard input as well as hex displays and additionally some wire wrap areas on the board. Thus capable of true stand lone capability.
Since when is a "Graphical" card a requirement for PC ? At a minimum
24 lines with 32/40/64/80 characters on a line was considered adequate.