Single-board computers: what, why and why. The best single board computers on the market What kind of NAS

Development of a single board computer from scratch. Beginner's Guide / Sudo Null IT News

I am an electronics developer. I started relatively recently - when Atmel microcontrollers became known thanks to the Arduino platform. It didn't really interest me then - at that time I was already programming them from AVR Studio, reading DiHalt stories and dreaming of developing my own autopilot. 3rd year student, Novosibirsk, Novosibirsk State University - it was exciting…

But I am watching with interest the development and growth of the embedded and portable systems industry: the emergence of RaspberryPI, the variety of SoCs and boards based on them, smart home systems, the Internet of things, smartphones with growing computing power - all this is a fantastic scope for activity. The result of the observation was the desire to participate: to try yourself in the development of a simple platform, in order to study and gain experience. Projects on microcontrollers are rather fed up with me - there are very few underwater rakes, it’s quite difficult to make mistakes, everything starts “out of the box” - neither flexibility nor complexity. With systems on a chip - SoC (System on Chip) before that, I didn’t really have much to do - except to build the kernel, and run Debian. Therefore, I decided to launch a simple SoC, namely, to go from a circuit to a working Linux on board. Yes, in the future I will not quite correctly call the SoC a processor, I hope this will not confuse anyone.

I had a small choice, and was determined by the complexity of manufacturing the board - only output packages, no BGAs, a maximum of four-layer design, and all because I was going to stick my scarf to one relatively simple working project. It also meant that in the future I would receive an already soldered board from production, ready for experiments.

Design

As a result of a review of available SoCs, I settled on the iMX233 from Freescale. Output housing, 454 MHz, DDR memory controller, interface to SD/MMC memory card, debug port - a great beginner's kit. In addition - a composite video output ("tulip"), audio input / output, SPI, I2C, UART, USB, LCD. There will be things to do at your leisure.

After reading articles about the BlackSwift platform, Qualcom Atheros AR9331 appeared in potential candidates, but the lack of detailed information in the public domain confused me. Too bad, interesting candidate.

I was interested in the minimum configuration sufficient to run Linux on it. Accordingly, a 32 MB (256 MBit) memory chip was chosen for the processor (according to the simple principle that we had it in stock). At that time, I had not yet read on dozens of forums about the existence of difficulties with this processor, I only studied the manufacturer's recommendations for tracing and, happy as an elephant, did everything according to the recommendations.

In general, the processor (or SoC, as it is more correct) is more interesting from the point of view that when it is launched, design errors come out much more expensive. For example, incorrect layout of DDR memory can be expressed at least in subsequent read-write errors, and at most - in the impossibility of initializing the memory at all. Processor power circuits - an error will burn the processor when it is first turned on, interfaces - loss of peripherals on these interfaces, and so on.

Therefore, it is easier to start by studying ready-made debug kits, for example, the official board and its documentation. I did not have a board, but the documentation is available to everyone. In addition, it is useful to study all the instructions for use, read the forums (this is already life experience :)) - in general, study all available information about the victim. After studying, mechanical work begins - draw a diagram, and then a board. Four layers, minimum conductor width 0.2mm, gap 0.2mm, hole 0.3mm.

I connected everything that can be connected painlessly - audio inputs and outputs, output the video signal to the contact pads, any simple peripherals - a memory chip with an I2C interface, another one with SPI, a holder for a uSD card, configuration jumpers, a debug port, and then to a free the place is all that's left. The board turned out to be small - 70x40mm, with a minimum of components. There was no room left for NAND memory, but I planned to run from SD / MMC. Work for one night.

It turned out terrible. From left to right: top layer, two inner layers, bottom layer. Processor on the top layer, memory on the bottom; for each signal conductor of the DDR interface, one via; conductor lengths are aligned, their average length is within the recommended limits, the ground polygon between the processor and memory is almost without breaks, etc.

So, the board has been designed, the documentation for it has been drawn up, all this has been transferred to production, and you can begin to prepare for the receipt of boards from production. I begin to study the materials for the nuances of starting the processor, and I stumble upon hundred-page forums describing problems and difficulties in starting.

It becomes uncomfortable - people have problems until the third revision of the board, the processor does not work with some memory modules, the built-in power subsystem is very unstable, the processor is very picky about power, errata (a document describing errors on the processor) answers many problems with “nothing to help we can’t”, the software is in the open access of the curve, even the internal bootloader needs a patch from the manufacturer, in general, serious problems are outlined. I download BSP (board support package) from the manufacturer - there is a mess of hundreds of scripts and packages. The fun begins.

A month later, the boards arrive, and I begin experiments. Something pops up in a corner of the subconscious, connected with problems in the assembly industry.

Retreat

I also liked this system on a chip because it carries on board all the power regulators necessary for its life - both DC / DC (pulse) and LDO (linear). Including charger for Li-Pol battery. You start on SoC 5 volts from USB - you get 1V8, 2V5, 3V3 and 4V2 at the output. Something goes to the processor itself, something goes to memory, you can recharge the battery. Comfortable. You can burn everything at once :)

SoC bringup

Away with doubts, apply power! And no sign of life. It's good, good because no smoke. I solder the “Power” button, look at the leg of the quartz resonator with an oscilloscope, start it - there is a generation on quartz. 24 MHz, ugly, but there. The oscilloscope probe with a divider, passive, we will write off on it. "Grandfather is old, he doesn't care"

The most interesting part begins - bringup. How can this term be succinctly translated into Russian in this context? An attempt to breathe life? Doesn't sound.

The processor has its own initial loader, which, when turned on, checks the start conditions - from where and what to load. It also responds to requests via the USB bus. It can be configured with on-board jumpers, or flashable OTP memory. If I can still solder the jumpers, then it is unlikely to reflash the non-reflashable. I unsolder the jumpers, apply power, and lo and behold - the first bytes of data come from the debug port! This means that the processor is satisfied with the power, its most basic nodes have started up, and you can do something further. What these codes mean, I learned from a crooked header file, in the form of a PDF document, with slurred explanations, omissions and authored by huashan. All clear.

Well, in order to work with the board as quickly as possible, it would be better to connect it by wire and load the executable code at the touch of a button. Ok, I connect via USB to my computer. And nothing.

No transactions over the USB bus, even generation on quartz. Badly. I start thinking, I study the board, I remember all the subtle moments. For example, on this board, next to the processor, I put my DC / DC converter, with the expectation of powering some kind of consuming load, connected it to the USB 5V power bus, and did not load anything. I measured with an oscilloscope - 5 volts at the input, 5 volts at the output. Words from production come up, something about a resistor. Yes, it is - there is no resistor in the feedback circuit. (- Captain, captain, the anchor has surfaced! - Hmmm, a bad omen ...)

I solder the resistor, and lo and behold! The board is determined by USB! Before that, I looked at the voltage level of the power bus - 5.1 volts, no significant interference, no ripple. But the processor knows better. After soldering the resistor, the DC / DC source also started working, while without load, but at least it stopped interfering with the processor. Okay, what's next.

Next, you need to deal with the initial launch of the processor and check the operation of DDR. I start digging, and in the process of searching, I collect a set of utilities and "bootlets" - source codes that allow you to initialize the power subsystems, the DDR controller-memory bundle and prepare the system for further work. What you need is the simplest source codes, with an abundance of Hindu code, but most importantly, they work.

Utilities allow you to load these bootlets into the processor's memory and run them for execution. Everything is so complicated, because after turning on the built-in bootloader does not know anything about external RAM, and since there is no memory, there is nowhere to load, for example, the Linux kernel. It turns out a chain of several links, where at each stage a small step forward is made.

Retreat To connect to serial ports, to implement all sorts of in-circuit JTAG debuggers, programmers and similar tasks in another project, a USB-UART bridge was implemented on the FT2232. Dual layer design, both ports are combed out in 2mm increments. This project has a different story - the USB-UART bridge + data collection board is placed in the center of the main board, and the design of the device involves its removal.

Those. a board without a hole in the center will simply not be able to get into the device. It seemed irrational to throw away the textolite, and I made my creative edits - the USB-UART bridge itself (smaller), and the controller (MSP430FR5738) with a current, voltage sensor, an electromechanical relay, a current source and a thermometer. This entire "hot" part is galvanically isolated from the RS485 interface via a pair of ADuM1281 and decoupled DC/DC (not yet installed on the board). The Modbus stack is spinning in the controller, i.e. a dozen of these boards can be networked, data from the boards can be entered into the SCADA system, and arbitrary processes can be automated. In particular, these scarves will be used for testing devices at -40 / +60 in a heat chamber. I stuck them on the device under test, and sit @ watch how the currents, voltages and temperatures change at the critical nodes.

All of these boards were designed in parallel, so I immediately laid down identical dimensions and flexible connection capabilities. Not in vain:)

Great, I compile the sources, build this constructor, load it, and get the first lines from the debug port! The power subsystem has started!

PowerPrep start initialize power… Battery Voltage = 0.65V No battery or bad battery detected!!!.Disabling battery voltage measurements. EMI_CTRL 0x1C084040 FRAC 0x92926152 power 0x00820710 Frac 0x92926152 start change cpu freq hbus 0x00000003 cpu 0x00010002 or bad battery detected!!!.Disabling battery voltage measurements. EMI_CTRL 0x1C084040 FRAC 0x92926152 power 0x00820710 Frac 0x92926152 start change cpu freq hbus 0x00000003 cpu 0x00010002 start memory test, at 0x40000000 end memory test, at 0x41FFFFFC Great! Memory test passed! This is very good, now you can upload something more serious there.

U Boot

More seriously, I have this U-Boot. I am familiar with this system, it seems to me quite adequate and functional. Allows you to work with peripherals - current versions work with USB, SD / MMC, Ethernet, load images from FAT / ext2 partitions, transfer control, and most importantly - blink an LED - everything you need for happiness and more flexible debugging at the initial stage. Therefore, without hesitation, I download the current version from the official repository, take the closest configuration, compile it, compile it with Hindu bootlets into one file, and load it into the processor: PowerPrep start initialize power ... Battery Voltage = 1.74V No battery or bad battery detected !!! Disabling battery voltage measurements. EMI_CTRL 0x1C084040 FRAC 0x92926152 power 0x00820710 Frac 0x92926152 start change cpu freq hbus 0x00000003 cpu 0x00010002 start memory test, at 0x40000000 end memory test, at 0x41FFFFFC

CPU: Freescale i.MX23 rev1.4 at 227 MHz BOOT: USB DRAM: 32 MiB MMC: MXS MMC: 0 ​​MMC0: Bus busy timeout! MMC0: Bus busy timeout! MMC0: Bus busy timeout! MMC0: Bus busy timeout! Card did not respond to voltage select! MMC init failed Using default environment

In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0 =>

And U-Boot started! Great, but the board still starts over the wire. You have to deal with the memory card. Well, I solder the load selection resistors, I stick the card - an error comes from the processor in the terminal. I pull out a card - another. What a twist! ©

SD/MMC

I start looking, searches lead to a Russian-language forum, to useful and interesting 380 pages of discussion. I'm afraid the guys still remember this SoC with a strong word.

It turns out that in order to boot from an SD / MMC card, it is necessary to flash the OTP bits, then something else may be possible. In particular, it is necessary to reconfigure in the OTP Register: 24 bits of SD MBR Boot - flash to one, and SD_POWER_GATE_GPIO - select NO_GATE - in my design card power management is not provided.

"It's kind of awkward." This means that you can't make a bootable memory card that can flash finished fixtures in batches, instead you'll have to connect each fixture and manually flash those ill-fated OTP bits. Of course, I will not use this processor in any serious project, but you should not forget about such a moment. I download the Windows utility, flash these bits, insert a memory card, a battery ... The system starts and reboots cyclically. Crap!

PowerPrep start initialize power… Battery Voltage = 3.75V Boot from battery. 5v input not detected

PowerPrep start initialize power… Battery Voltage = 3.75V Boot from battery. 5v input not detected ...

I edit the bootlet sources, in particular, I add additional debug messages, and I go to the problematic section of the code: PowerPrep start initialize power ... Battery Voltage = 3.75V Boot from battery. 5v input not detected Try poweron_pll Try turnon_mem_rail Falls when power is applied to DDR memory. Hm. Somewhere I already read about it. How did it work before? Okay, instability is found, we need to understand.

Around the memory chip are its legal decoupling capacitors, 8 pcs. 100 nF. But at the output of the memory power supply built into the SoC, I set 2x10 uF, although the manufacturer recommended only 1uF (I read the instructions, if nothing else helps, yes). To break, not to build: I unsolder one capacitor, connect the battery, and the system starts!

In the very first photo, this capacitor is visible - there is dirt around it, and it is soldered with only one contact.

PowerPrep start initialize power… Battery Voltage = 3.75V Boot from battery. 5v input not detected Try poweron_pll Try turnon_mem_rail Try init_clock EMI_CTRL 0x1C084040 FRAC 0x92926192 Try init_ddr_mt46v32m16_133Mhz power 0x00820710 Frac 0x92926192 start change cpu freq hbus 0x00000001 cpu 00001

initcall: 3e09f908 (relocated to 40002908) initcall: 3e0a013c (relocated to 4000313c) initcall: 3e0a2ec0 (relocated to 40005ec0) initcall: 3e0a2ea8 (relocated to 40005ea8) initcall: 3e0a2e88 (relocated to 40005e88) initcall: 3e0a2e68 (relocated to 40005e68) Net: Net Initialization Skipped No ethernet found. initcall: 3e0a2e5c (relocated to 40005e5c) Initial value for argc=3 Final value for argc=3 ### main_loop entered: bootdelay=3

### main_loop: bootcmd="mmc dev $(mmcdev); if mmc rescan; then if run loadbootscript; then run bootscript; else if runloadimage; then run mmcboot; else" Hit any key to stop autoboot: 0 => =>

Hehe, it works! Ok, I'll write this down as a reason for potential instabilities in the future, because there is one more 10uF left, which can also complicate life. Now I'm trying with external power.PowerPrep start initialize power... Battery Voltage = 3.74V 5v source detected.Valid battery voltage detected.Booting from battery voltage source. Mar 18 2015 07:59:13 Try poweron_pll Try turnon_mem_rail Try init_clock EMI_CTRL 0x1C084040 FRAC 0x92926192 Try init_ddr_mt46v32m16_133Mhz power 0x00820710 Frac 0x92926192 start change cpu freq Now hangs started. Moreover, the situation is not regular, periodically manifests itself when powered by a battery, periodically from external 5V, periodically starts and works. I correct the code again, disable switching the processor to PLL, the core remains running at 24 MHz. Everything is stable. I change the PLL divider, twist the frequency, and the board successfully starts at 320 MHz. You should try the manufacturer's recommendation - a 100 pF capacitor in the pulsed DC / DC circuit. I laid a place on the printed circuit board for the capacitor. I will return to this issue later.

linux kernel

So, at the moment there is a board that starts from a memory card and loads U-Boot. Next, according to the plan, you need to load the kernel.

I download the actual kernel sources from kernel.org, unpack and compile the kernel in three clicks.

make ARCH=arm CROSS_COMPILE=$(CC) mxs_defconfig make ARCH=arm CROSS_COMPILE=$(CC) menuconfig make ARCH=arm CROSS_COMPILE=$(CC) -j4 zImage modulesThese three clicksWhen configuring the kernel, you must strictly specify kernel merge+dtbBoot options - --> Use appended device tree blob to zImage ----> Supplement the appended DTB with traditional ATAG information Enable Kernel low-level debugging functions along with early printk And also enable dynamic printk() support And disable the video subsystem And half more extra and not very drivers

And also collect dtb - device tree blob, a structure that describes basic things to the kernel - the amount of memory, SoC peripherals, etc.

make ARCH=arm CROSS_COMPILE=$(CC) imx23-olinuxino.dtb zImage_dtb Then you can copy the kernel to the flash.

I start, and I get kernel panic. Logically, there is no root file system yet.

Debian

I choose Debian as my own operating system. In my opinion, an excellent distribution kit - simple and reliable, like a wooden stick. I take the finished assembly, unpack it to the card section, and indicate when loading the kernel where to look for its legal root. Boot log PowerPrep start initialize power ... Battery Voltage = 3.68V Boot from battery. 5v input not detected poweron_pll turnon_mem_rail init_clock EMI_CTRL 0x1C084040 FRAC 0x92925E92 init_ddr_mt46v16m16_96Mhz power 0x00820710 Frac 0x92925E92 start change cpu freq Try now hbus 0x00000003 cpu 0x01

U-Boot 2015.04-rc3-00209-ga74ef40-dirty (Mar 18 2015 - 14:26:18)

CPU: Freescale i.MX23 rev1.4 at 320 MHz BOOT: USB DRAM: 32 MiB MMC: MXS MMC: 0 ​​In: serial Out: serial Err: serial Net: Net Initialization Skipped No ethernet found. Hit any key to stop autoboot: 0 2650994 bytes read in 906 ms (2.8 MiB/s) Kernel image @ 0x41000000 [ 0x000000 - 0x284e60 ]

Starting kernel…

Uncompressing Linux… done, booting the kernel. [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 3.19.2 () (gcc version 4.9.2 20140904 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.5 [ 0.000000] CPU : ARM926EJ-S revision 5 (ARMv5TEJ), cr=0005317f [ 0.000000] CPU: VIVT data cache, VIVT instruction cache [ 0.000000] Machine model: i.MX23 Olinuxino Low Cost Board [ 0.000000] Memory policy: Data cache writeback [ 0.000000] Total pages: 8128 [ 0.000000] Kernel command line: console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes) [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] 3475K kernel code, 244K rwdata, 1372K rodata, 188K init, 8096K bss, 13796K reserved, 0K cma-reserved) [0.000000] Virtual kernel memory layout: [0.00000 0] Vector: 0xFFFF0000 - 0xFFFF1000 (4 KB) [0.000000] FIXMAP: 0xFFC00000 - 0xFFF00000 (3072 KB) [0.000000] VMALLOC: 0xc2800000 - 0xFF0000 (968 MB) [0.000000] LowMem: 0xc0000000 (32 mb) modules: 0xbf000000 - 0xc0000000 (16 MB) [0.000000] .Text: 0xc0008000 - 0xc04c42ac (4849 KB) [0.000000] .init: 0xc04c5000 - 0xc04f4000 (188 KB) [0 ] .bss: 0xc0531018 - 0xc0d19264 (8097 kB) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836480000000ns [ 0.000000] Console: colour dummy device 80x30 [ 0.000000] Lock dependency validator: Copyright © 2006 Red Hat, Inc., Ingo Molnar [ 0.000000]… MAX_LOCKDEP_SUBCLASSES: 8 [ 0.000000 ]… MAX_LOCK_DEPTH: 48 [ 0.000000]… MAX_LOCKDEP_KEYS: 8191 [ 0.000000]… CLASSHASH_SIZE: 4096 [ 0.000000]… MAX_LOCKDEP_ENTRIES: 32768 [ 0.000000]… MAX_LOCKDEP_CHAINS: 65536 [ 0.000000]… CHAINHASH_SIZE: 32768 [ 0.000000] memory used by lock dependency info: 5167 kB [ 0.000000] per task-struct memory footprint: 1152 bytes [ 0.060000] Calibrating. loop… 795648) [ 0.070000] pid_max: default: 32768 minimum: 301 [ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) [ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes ) [ 0. 080000] CPU: Testing write buffer coherency: ok [ 0.080000] Setting up static identity map for 0x40353070 - 0x403530c8 [ 0.110000] devtmpfs: initialized [ 0.130000] pinctrl core: initialized pinctrl subsystem [ 0.180000] DMA: preallocated pool allocations 25 [0.290000] Serial: AMBA PL011 UART driver [0.290000] 80070000 initialized [ 0.590000] mxs-dma 80024000.dma-apbx: initialized [ 0.600000] SCSI subsystem initialized [ 0.610000] pps_core: LinuxPPS API ver. 1 registered [ 0.610000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti< >[ 0.620000] Switched to clocksource mxs_timer [ 1.130000] futex hash table entries: 256 (order: 1, 11264 bytes) [ 1.290000] jffs2: version 2.2. (NAND) © 2001-2006 Red Hat, Inc. [ 1.320000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250) [ 1.330000] io scheduler noop registered (default) [ 1.340000] of_dma_request_slave_channel: dma-names property of node "/ / / " missing or empty [ 1.360000] uart-pl011 80070000.serial: no DMA platform data [ 1.360000] 8006c000.serial: ttyAPP0 at MMIO 0x8006c000 (irq = 146, base_baud = 1500000) is a 8006c000.serial [ 1.380000] mxs.APCound0 : 80.06serial-auart0 80 0 [ 1.410000] mousedev: PS/2 mouse device common for all mice [ 1.430000] stmp3xxx-rtc 8005c000.rtc: rtc core: registered 8005c000.rtc as rtc0 [ 1.440000] i2c /dev entries driver [ 1.450000] stmp3xxx_rtc_wdt initial:watch_stwdttc with heartbeat 19s [ 1.460000] softdog: Software Watchdog Timer: 0.08 initialized. soft_noboot=0 soft_margin=60 sec soft_panic=0 (nowayout=0) [ 1.470000] Driver "mmcblk" needs updating - please use bus_type methods [ 1.480000] 80010000.ssp supply vmmc not found, using dummy regulator [ 1.540000] mxs-mmc 80010000 .ssp: initialized [ 1.630000] mmc0: host does not support reading read-only switch, assuming write-enable [ 1.640000] stmp3xxx-rtc 8005c000.rtc: setting system clock to 1970-01-01 00:27:21 UTC (1641 ) [ 1.660000] mmc0: new high speed SD card at address e624 [ 1.680000] mmcblk0: mmc0:e624 SU02G 1.84 GiB [ 1.730000] mmcblk0: p1 p2 p3 [ 1.740000] usb0_vbus: disabling [ 1.780000] EXT3-fs: error : couldn't mount because of unsupported optional features (240) [ 1.800000] EXT2-fs (mmcblk0p3): error: couldn't mount because of unsupported optional features (240) [ 1.870000] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Opts: (null) [ 1.880000] VFS: Mounted root (ext4 filesystem) on device 179:3. [ 1.910000] devtmpfs: mounted [ 1.920000] Freeing unused kernel memory: 188K (c04c5000 - c04f4000) INIT: version 2.88 booting Using makefile-style concurrent boot in runlevel S. Starting the hotplug events dispatcher: udevdudevd: error getting socket: Function not implemented

error initializing control socketudevd: error initializing udevd socket failed! Setting the system clock. Activating swap...done. [ 6.410000] EXT4-fs (mmcblk0p3): re-mounted. Opts: (null) Checking root file system...fsck from util-linux-ng 2.17.2 rootfs: clean, 10152/115920 files, 89453/462839 blocks done. [ 6.870000] EXT4-fs (mmcblk0p3): re-mounted. Opts: (null) Setting the system clock. Cleaning up ifupdown… Setting up networking… Loading kernel modules...done. Activating lvm and md swap...done. Mounting local filesystems...done. Activating swapfile swap...done. Cleaning up temporary files… Setting kernel variables ...done. INIT: Entering runlevel: 2 Using makefile-style concurrent boot in runlevel 2. Starting NTP server: ntpd. Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Linux 6.0 debian ttyAMA0

debian login: root Password: Last login: Thu Jan 1 02:00:41 EET 1970 on ttyAM0 Linux debian 3.19.2 #5 Thu Mar 19 10:58:08 EDT 2015 armv5tail

The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. :~# :~# free total used free shared buffers cached Mem: 19160 18292 868 0 1496 9756 -/+ buffers/cache: 7040 12120 Swap: 0 0 0 :~# :~# cat /proc/cpuinfo processor: 0 model name: ARM926EJ-S rev 5 (v5l) BogoMIPS: 159.12 Features: swp half fastmult edsp java CPU implementer: 0x41 CPU architecture: 5TEJ CPU variant: 0x0 CPU part: 0x926 CPU revision: 5

Hardware: Freescale MXS (Device Tree) Revision: 0000 Serial: 0000000000000000 :~# :~# df udev 10240 0 10240 0% /dev tmpfs 9580 0 9580 0% /dev/shm tmpfs 9580 0 9580 0% /var/volatile tmpfs 9580 0 9580 0% /media/ram :~# :~# mount rootfs on / type auto (rw) tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755) proc on /proc type proc (rw,noexec,nosuid,nodev) sysfs on /sys type sysfs (rw,noexec,nosuid, nodev) udev on /dev type tmpfs (rw,mode=0755) tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev) devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode =620) tmpfs on /var/volatile type tmpfs (rw) tmpfs on /media/ram type tmpfs (rw)

Yes, there is work to be done.

But, nevertheless, the system works, is loaded from a memory card, is located in the entire range of DDR memory, and can rightfully be called a single-board computer! This is from the scheme in the head to the implementation in the hardware. In total, no design errors have yet been found, although there are already complaints. Well, for starters, I think that's enough.

Conclusion

In fact, this is just the beginning. There is still something to work on - deal with the peripherals, in particular, the audio and video output is interesting, test the SoC at standard frequencies, or even better, overclock it, measure the current consumption, check it at minus and plus temperatures (the stability of the DDR controller is interesting), test it on resource-intensive tasks ( for example, video broadcasting from a webcam via USB WIFI), and as a result, make a WiFi-controlled tank with a camera and a directional microphone on a scarf. But not right now. Now I have a business proposal :)

There are three fees that I can give away. All you need to get it is to voice an idea in the comments on how you can apply the resulting system. The best proposals will receive a copy for free, with the hope that you will implement your idea and tell us what you got. The distribution of elephants will be carried out on March 30, 2015, i.e. a week later.

For me, this will be feedback: I need to know how the system will behave in real conditions, how reliably it will show itself, what problems will arise, etc.

That's all for now, I look forward to your comments.

UPD: according to requests: the first copy goes to neochapay for an idea with a positive rating, the second copy will go to r00tGER, the third REPISOT "Who got up first, that's slippers."

www.habr.com

Development platform selection guide / Amperka

So, you have an idea for a project, but you are not sure which board to choose as the brain of the device? Let's try to help you decide.

If you just want to learn circuitry, programming, Linux and there is no specific goal other than learning yet, one of the ready-made training kits may be the best choice.

But if you are already comfortable and want to make a specific project, this guide will help you decide on a development platform and make an informed choice.

Arduino or Raspberry Pi? Microcontroller or microcomputer?

All development boards can be divided into 2 broad categories:

Microcontrollers can only perform one task at a time and they do it very well. And single-board computers execute programs within the operating system (most often Linux), have greater performance and rich multimedia capabilities.

There are also hybrid platforms, where both the microcontroller and the processor are located on the same board. The idea is to leave complex tasks to the powerful processor: accessing the network, processing media, and entrust the microcontroller with the function of precise control of drives, relays, sensors and other peripherals. You can create a hybrid yourself if you take one board from each family. All of them have common interfaces through which you can organize their interaction.

In both camps, you can find specialized boards that stand out among others with some feature, but a table will help compare the capabilities of average microcontrollers and computers.

microcontroller single board computerPerformance multitasking Convenience of working with the Internet Battery life Reaction speed in time-critical projects Choice of programming languages Opportunities for working with video, computer vision Audio features
1 core, tens to hundreds of MHz, tens of KB of RAM, tens to hundreds of KB of permanent memory. 1 or more cores, hundreds to thousands of MHz, hundreds of MB of RAM, gigabytes of permanent memory.
No. But you can emulate. Yes. OS controlled.

Usually you need additional modules and deep knowledge of protocols.

Easy to connect out of the box, the network module is usually already on board.

Consumes units-tens mA. Weeks of battery life possible.

Consumes hundreds to thousands of mA. The charge of a large battery is enough for ten hours.

100% control over the time and duration of the signals.

Due to multitasking, a critical process can oversleep its time.

Limited. More often C/C++.

Python, JavaScript, Bash and dozens of others: any available in the OS.

Not enough power.

OpenCV, hardware video codecs, HDMI output.

Sound synthesis is possible on powerful microcontrollers. Additional modules are needed to work with MP3/OGG/WAV.

MP3/OGG/WAV support at OS level. HDMI audio output and/or 3.5mm jack.

So, depending on your task, you have decided whether you need a microcontroller or a computer. How do you decide which board is the best fit?

Since it makes little sense to compare microcontrollers and microcomputers face to face, then we will separately present the advantages and disadvantages of specific boards within their family.

Comparison of microcontrollers

If we consider microcontroller boards in isolation from the tasks of your project, it is difficult to objectively describe the advantages and disadvantages of different platforms in a nutshell. What is generally a disadvantage may not play a role in your device and vice versa.

We tried to compare the boards, starting from the capabilities of the flagship DIY platform Arduino Uno, since the boards of this particular family gave an incredible kick to the development of hobby electronics around the world. Different companies produce modules, sensors, platforms, add-ons with the name "Arduino compatible", "Designed for Arduino", etc. Behind these words is electronic and software compatibility, first of all with the Arduino Uno, and only then with everything else.

As a rule, with the help of tricks or additional components, you can connect anything to anything. But you want to focus on your project, and not on the fight against electronics? Therefore, willy-nilly, I want to compare any board on a microcontroller with the Arduino Uno. So let's do it.

Arduino Uno 16 MHz processor, 32 KB of permanent and 2 KB of RAM, 20 I / O ports, 6 analog inputs, 6 PWM channels, 2 hardware interrupts, maybe not impressive, but without the ballast in the form of an operating system and interpreters, they allow you to solve almost any task of precise conducting a variety of sensors and actuators. Tons of documentation, tutorials and ready-made libraries, a huge community, work from the easy-to-learn Arduino IDE with the Arduino C++ language. All this simply will not give you the opportunity to say "did not master." The native voltage of 5 volts, which is the de facto standard, and sockets for installing expansion cards, analog inputs, various hardware interfaces allow you to connect almost any peripherals, sensors and actuators. Arduino Leonardo The same Arduino Uno, but with a different microcontroller, which is in the same class, but has some positive differences. More analog inputs (12 vs 6) for sensors, more PWM channels (7 vs 6), more hardware interrupt pins (5 vs 2), separate independent serial interfaces for USB and UART. Arduino Leonardo can pretend to be a keyboard or mouse (HID device) for a computer. This makes it easy to make your own input device. Due to the pinout slightly different from the Arduino Uno, incompatibility with some expansion boards is possible. Such cases, however, are rare, and in our store we explicitly prescribe them. Iskra Neo The same Arduino Leonardo, but produced by us in Russia. Much cheaper than the original. Arduino Mini The same Arduino Uno, but in a different form factor. Compact. Only 30×18 mm. Due to the form factor, it is impossible to install Arduino expansion boards without tricks. It is supposed to connect to additional modules by wires and / or through a prototyping board. There is no USB port on the board, so you need to flash through a separate USB-Serial adapter. Iskra Mini The same Arduino Mini, but made by us in Russia. Much cheaper than the original. There is a version with soldered pads and with non-soldered holes. Arduino Micro The same Arduino Leonardo, but in a different form factor. Compact. Only 48×18 mm. Due to the form factor, it is impossible to install Arduino expansion boards without tricks. It is supposed to connect to additional modules by wires and / or through a prototyping board. Arduino Mega Like Arduino Uno, but based on a more powerful microcontroller of the same architecture. A great choice for "growth" or if the Arduino Uno can no longer cope. Many times more memory: 256 KB permanent and 8 KB operational. Many times more ports: 60 of them 16 analog and 15 with PWM. Slightly longer than the base Arduino Uno: 101x53mm vs 69x53mm. Arduino Due One of the most productive Arduino boards based on the Cortex-M3 microcontroller is similar in form factor to the Arduino Mega. Processor at 84 MHz and 512 KB of memory. 66 I/O pins, of which 12 can be analog inputs, 12 support PWM and all 66 can be configured as hardware interrupts. The built-in CAN bus controller allows you to create a network from Due or interact with automotive electronics. Two DAC channels allow you to synthesize stereo sound with a resolution of 4.88 Hz. The native voltage for the board is 3.3 V, not the traditional 5 V. It is necessary to ensure that the selected peripherals support this level or install voltage level converters. Iskra JS The board is based on the Espruino core: it is programmed in JavaScript. JavaScript is a high level language. Programs are easier to write, they are more compact and expressive. Especially when it comes to numerous string operations, data arrays, web interface. Powerful microcontroller Cortex M4 at 168 MHz, 1 MB flash, 192 KB of RAM, dozens of ports with PWM and analog inputs, 2 analog outputs, several I²C, SPI, UART - all this allows you to connect and simultaneously work with a wide variety of sensors and modules . Even though the board's native level is 3.3V, the pins are 5V tolerant: connecting 5V peripherals is trivial. Due to a different environment and ecosystem for programming, there may not be a ready-made library for the selected peripheral. It will have to be implemented independently. Strela The all-in-one robotics platform contains most of the things you need to build any lightweight mobile robot. Strela, like any other Arduino, is programmed from the Arduino IDE, and at the core contains the same microcontroller as the Arduino Leonardo. Built-in driver for two motors, 4 servo connectors, 4 buttons and 4 freely assignable LEDs, buzzer, slots for LCD screen and wireless communication module. A powerful power regulator allows you to use many different batteries without tricks. 11 inputs/outputs are output as 3-pin connectors for easy connection of additional sensors and modules. The LCD screen, buttons and LEDs are connected via a port expander so they do not take up general purpose I/O. The board does not provide pads for installing Arduino expansion boards. Due to the changed pin numbering (compared to the base Arduino Leonardo), it is necessary to use slightly different functions to work with the pins of the board. They are provided in the library of the same name. Arduino Yun Unique hybrid of Arduino Leonardo and microcomputer on OpenWRT Linux. An excellent choice for the "Internet of Things". The board is equipped with Ethernet and WiFi, through which you can communicate with the device and even reflash the platform remotely. The power of Linux allows you to work with multimedia, and its networking capabilities easily integrate with social networks and other web services. OpenWRT is a sliced ​​Linux. Not any Linux software can be installed on a microcomputer. And out of the box, only Bash and Python can be used as scripting programming languages. STM32 Nucleo F401RE Board with a powerful microcontroller Cortex-M4. The platform is programmed not through the Arduino IDE, but through the mbed.org online environment. Subjectively, it is more powerful and slimmer than the Arduino IDE, although not as common. For an inquisitive mind - a great choice. Processor at 84 MHz, 512 KB of permanent and 96 KB of RAM. 50 I/O ports, of which 16 are analog and 29 are PWM. The native voltage level is 3.3 V, but all pins are 5 V tolerant, so there should be no problems with electronic compatibility with Arduino peripherals. The expansion board headers are the same configuration as the Arduino Uno, so Nucleo can accommodate many Arduino expansion boards. There is no separate SPI connector on the board. Arduino expansion boards that use SPI over the ICSP header will not work without tweaks. Due to a different environment and ecosystem for programming, there may not be a ready-made library for the selected peripheral. It will have to be implemented independently. Teensy 3.2 Compact board with powerful Cortex-M4 microcontroller. It is programmed from the familiar Arduino IDE. Smaller than the Arduino Micro (35x17mm) but almost as powerful as the Nucleo: 72 MHz processor, 256 KB of permanent and 64 KB of RAM, 34 I/O ports, of which 21 can be analog, and 12 support PWM. Teensy 3.1 is very energy efficient. It does not have a voltage regulator, but the input can be anything from 3.3 to 5.5 V. The same voltage will be the logic level. In sleep mode, the board consumes only 0.25 mA, which makes it possible to operate on battery power for several months. The built-in CAN bus controller allows you to create a network from Due or interact with car electronics. Two DAC channels allow you to synthesize stereo sound with a resolution of 4.88 Hz. The board comes with unsoldered pins. You have to solder the pin connectors or wiring yourself. Due to the large difference in architecture with the classic Arduino, not all libraries for third-party peripherals can work out of the box. The operating voltage is equal to the input, and therefore floats as the battery is discharged. This can be important when choosing a peripheral if it is designed for a particular voltage. Netduino 2 The board repeats the Arduino Uno form factor, but has a powerful stuffing sufficient to run programs written on the .NET platform. Netduino is programmed in C# or any other .NET language in the Visual Studio environment familiar to any .NET developer. The .NET Micro Framework is provided as a standard library. Visual Studio has auto-completion, tooltips, MSDN context help, and a full-fledged debugger. Breakpoints, step-by-step execution of code, observation of variables are available to you. Debugging happens without tricks, just with a USB cable connected. Thanks to all this, the speed of development under Netduino is many times higher than the speed of development for any other platform. There is no separate SPI connector on the board. Arduino expansion boards that use SPI over the ICSP header will not work without tweaks. Due to a different environment and ecosystem for programming, there may not be a ready-made library for the selected peripheral. It will have to be implemented independently. Netduino Plus 2 Like Netduino, only more powerful and with Ethernet on board. An excellent choice for IoT projects. Same as Netduino 2.

Comparison of single board computers

The trendsetter among single board computers is the Raspberry Pi. This super-popular platform at one time turned the idea of ​​\u200b\u200bthe capabilities, dimensions and cost of a full-fledged computer for DIY electronics engineers.

Again, for each project, one or another single board computer may be better suited, but due to the popularity of the Raspberry Pi, we will compare other platforms with it.

Raspberry Pi 3 Model B One of the most popular single payers. Four 1200 MHz cores, 1 GB of RAM and a full-fledged Linux based on Debian will help you solve many tasks that require computing resources. Among them are computer vision, real-time sound processing, and the creation of web services. Tons of documentation, tutorials and ready-made libraries, a huge community. All this simply will not give you the opportunity to say "did not master." Familiar HDMI, 3.5mm audio, 4 USB ports make it easy to connect a monitor, speakers, keyboard, mouse and other USB devices. BLE and WiFi modules on board will help you connect your computer to other devices wirelessly. There is no ADC on the board, so the connection of analog sensors is possible only with the help of external, additional components. Only 1 hardware PWM channel is provided, which makes it difficult to work with peripherals that are controlled by PWM. Beaglebone Black A microcomputer similar to the Raspberry Pi, which provides more of the benefits familiar to microcontroller boards. An excellent choice for IoT projects where you need to manage multiple sensors and actuators. Powerful Cloud9 IDE development environment. You simply access BeagleBone through your browser and program in your favorite language, be it Python, JavaScript (Node.js), Bash or any other Linux language. The result can be checked instantly, and if something does not work, use the full-fledged debugger built into the environment. A 4 GB eMMC flash memory with a Linux operating system is already installed on board. The memory can be expanded with an external microSD card. Wide possibilities for connecting peripherals. 8 PWM outputs and 7 analog inputs. Hardware interrupts are possible. An outlandish microHDMI connector for connecting a monitor. It is also used to transmit sound. Computing power is more modest than the Raspberry Pi: 1 core at 400 MHz and 512 MB of RAM.

amperka.ru

Single Board Computer: Use Cases

The Raspberry Pi 3 Model B is the most popular single board computer based on a 1.2GHz 64-bit ARM Cortex A53 processor with built-in Wi-Fi and Bluetooth wireless connectivity.

What is the Raspberry Pi for?

With its small size, low power consumption and large software library, it can be used in various projects such as smart home control system, home theater or game console. You can see the brightest projects below:

Robot
Smart House

Why Choose Raspberry Pi?

Everything is very simple here - the Raspberry Pi has become the best-selling platform of all single-board computers due to its excellent price, versatility, open architecture, support for various operating systems and the huge community that has developed around it.

What do you need to buy a Raspberry Pi with?

To operate the Raspberry Pi 3 single board computer, you need to purchase a network adapter with a Micro USB connector. It is recommended to choose a model with a current of at least 2.1A at 5V. In addition, you'll need a microSD card that will store the operating system, heatsinks, and a case to protect against shock and static. To expand the capabilities of the computer, you can use sensors, cameras, expansion modules. In our assortment you can also find a ready-made starter kit based on the Raspberry Pi.

If there are technical questions?

http://raspberrypi.ru http://raspberrypi.ru/forum/ https://vk.com/raspberrypi_ru

The table shows the most interesting products that our customers choose:

www.electronshik.ru

do it yourself


Surely you remember the blockbuster "Iron Man" with Robert Downey Jr. in the title role. According to the plot, the billionaire and scientist Tony Stark invented a metal suit that was capable of making him superhuman. The main detail of the costume was the heart, which was a small nuclear reactor. One folk craftsman decided to recreate the main detail of the costume with his own hands from improvised means. What happened in the end, see for yourself .... Because of its unusual shape, Apple's new PC, the Mac Pro, has been compared to a trash can. Someone under the nickname sascha288 decided to quite ingeniously build a homemade Mac Pro from a trash can. The metal base was painted red and the likeness in the end turned out amazing. The dimensions of the devices, by the way, are also comparable: 28 x 19 cm versus 25.1 x 16.8 cm. The components were the Gigabyte z87n WiFi motherboard, Core i3 processor (Haswell), Radeon 7750 video card, SSD and hard drive, ATX PSU . The system runs a modified version of Mac OS X...
Someone called Michael Castor built a tablet with his own hands and called it the PiPad. The device is based on a Raspberry Pi Model B single-board computer, which includes an ARM processor with a clock speed of 700 MHz, 512 MB of RAM, two USB ports and an Ethernet connector, and an SD card slot. In the final version of the PiPad, one USB port and Ethernet are missing, as there was simply not enough space for them. The dimensions of the mini PC are 85.6x56x21 mm, weight - 45 g. The display uses a 10-inch LCD panel with a resolution of 1280 x 800 pixels and a supply voltage of 5 V. A 10,000 mAh battery provides 6 hours of gadget operation. The frame of the PiPad is made of plywood, the back panel is made of carbon fiber.
Bunny Huang gave up using a tablet and a smartphone, and set out to build an open source laptop with his own hands for everyday work. The device was called Project Novena, and its technical characteristics included: a 13-inch display with a resolution of 2560 × 1700 pixels and a frame with a body, which are made of 5052 and 7075 aluminum alloys. On the Makezine portal, Bunny even posted detailed instructions for everyone who wants to repeat this experience...
In 1980, the American Helicopter Society announced that it would give a $10,000 prize to anyone who could create a helicopter that would stay in the air for 60 seconds, reach a height of 3 meters in the process of this flight and not fly out of the boundaries of the site 10 by 10 meters. In this case, the helicopter must be set in motion solely by the power of human muscles. This award was named after Igor Ivanovich Sikorsky. Since then, 33 years have passed and the prize has grown to $250,000. Yesterday it was presented to the AeroVelo team from the University of Toronto for their Atlas helicopter.
One of the owners of the Galaxy Note II smartphone in the Chinese modification, designed for 2 SIM cards, tired of a weak battery (3100 mAh) and insufficient volume (32GB) of internal memory, decided to upgrade the gadget. To do this, he purchased a MicroSD -> SD adapter, a 256GB Lexar SDXC memory card, and an impressive 8500 mAh battery. As the author describes, the longest time was spent on the delivery of components from online stores, and it took only a few minutes to assemble. As a result, the smartphone received a huge battery and a total amount of memory equal to 288GB. The only thing that still needs to be worked on is the back cover of the smartphone...
Star Wars fans, this news is for you! If you dream of a lightsaber, but do not want, like Kostya Khabensky in Night Watch, to walk with a fluorescent lamp in your hands, then you can try to make it from the most ordinary laser pointer. To create a lightsaber, a fan of Darth Vader needed only a 3 watt 9mm 450nm laser diode that generates a green beam and a stylish case for it. The comments on the video say that this is a very powerful laser and should be used with extreme caution. It is also recommended to wear goggles over your eyes to avoid overstressing the retina - the laser is very bright...
Everyone loves jeans. Well, almost everything. And an old pair of jeans lying around on the mezzanine - someone has their favorite pants, wiped to holes, someone has brand new, unworn (as someone has slightly picked up thousands of grams) - probably there. Today I will offer you a not revolutionary, but rather curious idea on how you can use old jeans to good use. And don't feel sorry for them! Admit it honestly that they would still lie like a dead weight on the far shelf and would never see the light at the end of their linen life ...
Love to ride a bike? Do you want to travel further on it, and get tired less? This is possible if you add an electric motor and a battery to your two-wheeled friend. To turn your regular bike into an e-bike, you only need a ready-made kit consisting of a special wheel with an electric motor and a battery...
The Australian company Lulzbot has developed a cheap analogue of the Liberator pistol printed on a 3D printer. The original project was proposed by Defense Distributed from the USA, however, an industrial printer costing about $ 8,000 was required to create weapons. The schemes required for printing a pistol on a 3D printer, Defense Distributed posted on the Internet, opening access to them to everyone. There were quite a few of them, among them was the Lulzbot company. Its specialists made adjustments to the project, and it turned out that a “household” Lulzbot AO-101 3D printer costing $1,700 could be used to create the Liberator, the materials would cost another $25. The creators of the modification, called the Lulz Liberator, note that the apparent availability does not mean the wide distribution of such weapons: it is still cheaper to buy a “classic” pistol.
Enthusiast designers from Italy presented a table lamp made of cardboard to the lovers of eco-friendly gadgets. It is difficult to suspect it of any technical frills, the strong point of the 01LAMP lamp is maximum functionality. You can assemble such a device without leaving your home. All you need to do is order a pizza, empty the box and get creative. When creating the lamp, the designers abandoned the use of glue, and all 01LAMP parts are held together with special valves. There are no wooden, plastic or iron parts in the design of the lamp. The exception is the "ON" button, wires and a light bulb. That is why the authors of the project claim that one of the advantages of the lamp is its environmental friendliness. With appropriate efforts, anyone can assemble such a lamp at home. To facilitate this process, Italian designers even posted detailed instructions on the Internet, which are accompanied by diagrams and drawings that facilitate the assembly process. The laziest environmentalists, however, can simply order an already assembled unusual gadget from the authors of the project. The finished lamp 01LAMP will cost 40 euros or $53.

24gadget.ru

Pi-Top: do-it-yourself computer

You can purchase a set of parts and assemble a computer with your own hands. Thanks to the development of technology, in particular 3D printing, it can be a full-fledged laptop with a screen, keyboard and the ability to connect peripherals. The price of such a device will be significantly lower than that requested for a similar product by "eminent" manufacturers.

The Pi-Top laptop assembly kit will be officially launched in May 2015, although sales are already underway. A fundraising campaign for its production was held on indiegogo.com and brought the project just over $130,000.

To get this computer, you will need access to a 3D printer and a $290 build kit. As a result, you will have a full-fledged laptop in your hands with the possibility of further customization and upgrade. The authors of the project hope that their computer will be useful primarily for children, who will be able to master how to assemble a device from components, as well as work with software and the basics of robotics.

The founders of the project - Ryan Dunwoody (Ryan Dunwoody), 23-year-old graduate of Oxford and 27-year-old Jesse Lozano (Jesse Lozano), a lawyer by training, who independently mastered programming.

Jesse Lozano and Ryan Dunwoody - creators of Pi-Top

“Instead of using a laptop as a closed device, you can understand how the screen works, how the battery is charged, how the switch between battery and AC power occurs,” says Dunwoody. - If something breaks, you can fix it. Many parents buy our computer for their children, as they see it as a way to convey to the child an understanding of the technologies and devices that we use on a daily basis.

According to Lozano, the Pi-Top is "meant to teach you how to do other things" by allowing you to experiment with the hardware. He hopes that the computer will be used in schools.

The heart of the Pi-Top computer is the Raspberry Pi (Model B+), a credit card-sized single-board computer. The laptop case needs to be printed by yourself, for this, the kit contains plastic "ink" for a 3D printer and files for printing. The assembly of the finished device is extremely simple, a person with the most minimal technical skills, using the instructions, will assemble the Pi-Top in an evening. In addition to the entry-level set, the developers offer several expansion boards. So, thanks to additional modules, the Raspberry Pi can be programmed in such a way that it can serve as a central control device for the robot. After writing the program to the Raspberry Pi, the user can take it out of the laptop case and place it on the chassis, which can also be printed on a 3D printer.

22century.ru

What is a single board computer and how is it used?

How are SBCs different from conventional computers?

Perhaps just the name. While typical computers diversify by using multiple components connected to a central board via cables, a single board computer has its microprocessor with integrated memory on a single printed circuit board.

Single board computers come in a variety of sizes and are capable of covering a variety of applications: some are PC compatible and compatible with an identical type of hardware, while others may be highly specialized. Some models of single board computers come with built-in microcontrollers. A number of single board computers provide the opportunity for factory expansion and reconfiguration, while some models do not offer any options for modification. In general, most manufacturers imply a starting basis that can be changed and supplemented.

How are SBCs used?

As mentioned earlier, single board computers have a number of applications. The first release of similar models took place in 2000, and recently such models have begun to gain momentum in the field of development. They serve as the basis for many open source projects due to their compactness and low cost.

Single board computers are used in education to teach computer science. Well, of course, most of the users are experienced programmers who did not settle for factory configurations, but prefer to independently purchase components for computers and create progressive systems.

How to choose a single board computer?

It goes without saying that your choice of SBC will be determined by the application. However, there are a few general considerations to keep in mind if you intend to purchase such a device.

Power

Make sure that the SBC's specifications meet your stated requirements, and you should also pay attention to the capabilities of the cooler, which will protect your system from overheating.

Here again, your needs become the main criterion. The first legacy SBCs only shipped with 512MB of internal memory, which seemed perfectly reasonable at the time. These days, a system like this should contain at least 1GB of RAM, with more advanced models offering 32GB.

CPU

There are currently three main options on the market: Intel, Power Architecture, and ARM. Your choice may be guided by memory requirements, previous experience with a particular type of processor, and of course requirements.

Operating system

Typical operating systems available on most SBCs are Linux (most popular), INTEGRITY, Wind River VxWords, QNX, LynxOS, and GreenHills. Most processors support Linux, fewer will be compatible with VxWorks or other design tools, and will reduce the ability to build secure applications.

I/O element

The SBC provides the necessary I/O elements such as Ethernet, USB, DIO, and others. If the required I/O is not supported by the underlying SBC, you should inquire about additional system support.

2ezone.ru

DIY Single Board Computer, ar9331 datasheet

Single-board computers are devices that are assembled on only one "motherboard". On the latter, all the necessary details are installed: a microprocessor, RAM, data input and output methods, and other modules necessary for the full operation of the device. Often, single-board PCs are used (and therefore developed) as a demonstration system or educational tool. Often they are used in the industrial sector.

If we talk about standard desktop computers, then when compared with the described one, the latter does not require the installation of peripheral boards. Depending on the model, some options are available as a small "motherboard" equipped with memory and a processor. Such a board can be connected to an internal trunk. This will increase the available characteristics, as well as take advantage of additional connectors.

Quite often, protection of various parts is required. It is necessary that they are compactly located next to each other. That is why single-board computers have become popular. This solution will make the device small in size and very inexpensive. But the system-on-a-chip also has its drawbacks. For example, changing the processor or increasing the memory will not work, often these parts are soldered.

Hardware Single Board Platforms

Comparing single board computers with hardware platforms will help you understand how the devices differ from each other. Often, users and consumers confuse them with each other. The platform is an ordinary microcontroller, which cannot be called a full-fledged computer. It does not have an operating system installed, so the user cannot interact with the device as with a regular PC.

Often, hardware platforms are used to build robots, as well as create simple automatic systems. In fact, the main task of such a device is to control other devices. We can say that the hardware platform is nothing more than an alternative to a single-board system. You can't call them analogues.

What is a Single Board Computer?

For some reason, some users believe that a single-board computer is not capable of performing many functions. However, its range of tasks is wide. Such a device is used in computers, routers and other equipment. You can easily install the Lunix operating system on this device. In this case, a single-board device will perform almost all tasks: from searching for documents to listening to music. If you choose a more expensive model for yourself, you can also watch videos with a quality of no more than 1080p. Such manipulations are performed with a user-familiar interface. Disadvantages can be identified when working with other architectures. Often applications run on ARM. Therefore, it is desirable to select a board with this particular architecture.

Considering such systems in a narrow specialization, you can stumble upon some nuances of work. For example, in order to turn Raspberry single-board computers into a router or modem, you only need to install the appropriate firmware.

Small spool: what a $35 computer can do

Most often, this process requires minimal human intervention, being complete solutions. The owner only needs to write the image to a memory card and correctly specify all the necessary settings. Turning a single board computer into a router is not the only thing that can be done. In order for the house to become "smart", you need only three or four systems. Of course, it will take a little longer to deal with the settings, but now there are more or less ready-made solutions that practically do not need to be edited.

For those who are interested in the technical field, it is no secret that Microsoft is going to release a special device. Now the Internet of things is gaining popularity. The developed devices work on special protocols. Thanks to this, they will be able to function even with ordinary cell phones. If we consider this possibility as the development of single-processor computers, then such a solution is a breakthrough. After all, earlier control was carried out through a router. Now the last solution is practically not used anymore. It's easier to work when the devices talk to each other directly.

Something without which no board can exist, the input and output ports are GPIO. They allow you to instantly turn off the light bulb after receiving an electronic signal. The standard model is equipped with 5-10 connectors. If desired, their number can be expanded.

Raspberry Pi

A review of single-board computers should start with one of the most popular models - the Raspberry Pi. This device is known as "Malinka". That was the beginning of the development of single-board computers. The model appeared in 2012 and not all consumers adequately assessed its capabilities and functionality. For buyers, it seemed impossible: a whole computer, the size of which does not exceed the dimensions of a credit card, the cost of it was $25. Worked on Linux operating system. One way or another, after the release, consumers began to slowly acquire the model, thereby making it quite popular.

What is the Raspberry Pi made of?

According to the standard, "Malinka" received a slot for a memory card, a power connector, outputs for headphones, video, USB, Ethernet, HDMI.

In addition, built-in universal ports that allow you to interact with any other devices.

The system is sold in five different configurations. The simplest models are A. They work with 256 MB of RAM. ARMv6 is used. One USB port installed. Models with index B offer the owner 512 MB of RAM. There are 2-4 USB and Ethernet ports. Modification 2B works with a 4-core processor. RAM was 1 GB. On sale there are also options with indexes A +, B +.

Model prices range from $20 to $35.

Raspberry Pi features

"Malinka" is very common, which is why many different distributions are sold for it. We are talking about software, which, as a rule, is created to work with Linux.

The possibilities of the device are almost endless. A single board computer (x86 or x64) is capable of doing any task. The main nuance is the power of the processor, which should be repelled. Unfortunately, he is weak in all modifications except 2B. "Malinka" can be bought both in online stores and at any retail outlets. First of all, it is better to purchase exactly 2B, if there are funds for it. This board is much more powerful, has many ports. The difference in price between the models is small, but in compatible software it is significant.

cube board

The Cubieboard model received GPIO, SATA, HDMI, USB, VGA, Ethernet, as well as the following connectors: power, optical and standard audio output ("mini-jack").

Single-board computers of the Cubieboard model come from China. They were created in 2012, but the first modification, to put it mildly, failed. The third version proved to be the best. Unlike the previous "Malinka", the board has more ports, an infrared port, bluetooth and a wireless network module are built-in. The gadget works with 1/2 GB of RAM (depending on modification) on an ARM Cortex-A7 processor.

Additional information about the model

Single-board computers of this model also work on the basis of Lunix. The manufacturer installed a special version, created by himself. In general, the device vaguely resembles the previously described Malinka. In some nuances, it repeats the characteristics and sometimes expands them. The price is slightly higher: the average cost is $85.

beagle bone

The model appeared in 2013. She received a power connector and other standard ports. The BeagleBone is considered one of the most powerful, if not the best, in its lineup. The developers decided to pay attention to a large number of all available ports. There are many interesting devices on the market. The board is powered by a Cortex-A8 processor, the cores of which operate at a frequency of 1 GHz. RAM is 512 MB.

Additional features

Like the other single-board computers described above, the system runs on Linux. In the factory filling, the manufacturer has already installed 2-4 GB of memory. In some modifications, the Debian distribution is also built in. Due to the fact that there are many ports, you can easily connect the board to any device. If you use peripheral devices, then the system's capabilities will easily increase significantly. The manufacturer has focused on additional devices. The price for the device itself is $45.

conclusions

Now powerful single-board computers are sold at any point of sale. The range is large, sometimes even the understanding of what this device is is erased. The article describes the three most popular models that are in great demand and have proven themselves. Which option to prefer, should be decided only by the buyer. Single-board mini computers are something that will make life much easier, so you should choose consciously.

rpilot62.ru


And he dreamed of developing his own autopilot. 3rd year student, Novosibirsk, Novosibirsk State University - it was exciting…

But I am watching with interest the development and growth of the embedded and portable systems industry: the emergence of RaspberryPI, the variety of SoCs and boards based on them, smart home systems, the Internet of things, smartphones with growing computing power - all this is a fantastic scope for activity. The result of the observation was the desire to participate: to try yourself in the development of a simple platform, in order to study and gain experience.

Projects on microcontrollers are rather fed up with me - there are very few underwater rakes, it’s quite difficult to make mistakes, everything starts “out of the box” - neither flexibility nor complexity. With systems on a chip - SoC (System on Chip) before that, I didn’t really have much to do - except to build the kernel, and run Debian. Therefore, I decided to launch a simple SoC, namely, to go from a circuit to a working Linux on board. Yes, in the future I will not quite correctly call the SoC a processor, I hope this will not confuse anyone.

I had a small choice, and was determined by the complexity of manufacturing the board - only output packages, no BGAs, a maximum of four-layer design, and all because I was going to stick my scarf to one relatively simple working project. It also meant that in the future I would receive an already soldered board from production, ready for experiments.

Design

As a result of a review of available SoCs, I settled on the iMX233 from Freescale. Output housing, 454 MHz, DDR memory controller, interface to SD/MMC memory card, debug port - a great beginner's kit. In addition - a composite video output ("tulip"), audio input / output, SPI, I2C, UART, USB, LCD. There will be things to do at your leisure.

After reading articles about the BlackSwift platform, Qualcom Atheros AR9331 appeared in potential candidates, but the lack of detailed information in the public domain confused me. Too bad, interesting candidate.

I was interested in the minimum configuration sufficient to run Linux on it. Accordingly, a 32 MB (256 MBit) memory chip was chosen for the processor (according to the simple principle that we had it in stock). At that time, I had not yet read on dozens of forums about the existence of difficulties with this processor, I only studied the manufacturer's recommendations for tracing and, happy as an elephant, did everything according to the recommendations.

In general, the processor (or SoC, as it is more correct) is more interesting from the point of view that when it is launched, design errors come out much more expensive. For example, incorrect layout of DDR memory can be expressed at least in subsequent read-write errors, and at most - in the impossibility of initializing the memory at all. Processor power circuits - an error will burn the processor when it is first turned on, interfaces - loss of peripherals on these interfaces, and so on.

Therefore, it is easier to start by studying ready-made debug kits, for example, the official board and its documentation. I did not have a board, but the documentation is available to everyone. In addition, it is useful to study all the instructions for use, read the forums (this is already life experience :)) - in general, study all available information about the victim. After studying, mechanical work begins - draw a diagram, and then a board. Four layers, minimum conductor width 0.2mm, gap 0.2mm, hole 0.3mm.

I connected everything that can be connected painlessly - audio inputs and outputs, output the video signal to the contact pads, any simple peripherals - a memory chip with an I2C interface, another one with SPI, a holder for a uSD card, configuration jumpers, a debug port, and then to a free the place is all that's left. The board turned out to be small - 70x40mm, with a minimum of components. There was no room left for NAND memory, but I planned to run from SD / MMC. Work for one night.

It turned out terrible. From left to right: top layer, two inner layers, bottom layer. Processor on the top layer, memory on the bottom; for each signal conductor of the DDR interface, one via; conductor lengths are aligned, their average length is within the recommended limits, the ground polygon between the processor and memory is almost without breaks, etc.

So, the board has been designed, the documentation for it has been drawn up, all this has been transferred to production, and you can begin to prepare for the receipt of boards from production. I begin to study the materials for the nuances of starting the processor, and I stumble upon hundred-page forums describing problems and difficulties in starting.

It becomes uncomfortable - people have problems until the third revision of the board, the processor does not work with some memory modules, the built-in power subsystem is very unstable, the processor is very picky about power, errata (a document describing errors on the processor) answers many problems with “nothing to help we can’t”, the software is in the open access of the curve, even the internal bootloader needs a patch from the manufacturer, in general, serious problems are outlined. I download BSP (board support package) from the manufacturer - there is a mess of hundreds of scripts and packages. The fun begins.

A month later, the boards arrive, and I begin experiments. Something pops up in a corner of the subconscious, connected with problems in the assembly industry.

Retreat

I also liked this system on a chip because it carries on board all the power regulators necessary for its life - both DC / DC (pulse) and LDO (linear). Including charger for Li-Pol battery. You start on SoC 5 volts from USB - you get 1V8, 2V5, 3V3 and 4V2 at the output. Something goes to the processor itself, something goes to memory, you can recharge the battery. Comfortable. You can burn everything at once :)

SoC bringup

Away with doubts, apply power!
And no sign of life. It's good, good because no smoke. I solder the “Power” button, look at the leg of the quartz resonator with an oscilloscope, start it - there is a generation on quartz. 24 MHz, ugly, but there. The oscilloscope probe with a divider, passive, we will write off on it. "Grandfather is old, he doesn't care"

The most interesting part begins - bringup. How can this term be succinctly translated into Russian in this context? An attempt to breathe life? Doesn't sound.

The processor has its own initial loader, which, when turned on, checks the start conditions - from where and what to load. It also responds to requests via the USB bus. It can be configured with on-board jumpers, or flashable OTP memory. If I can still solder the jumpers, then it is unlikely to reflash the non-reflashable. I unsolder the jumpers, apply power, and lo and behold - the first bytes of data come from the debug port! This means that the processor is satisfied with the power, its most basic nodes have started up, and you can do something further. What these codes mean, I learned from a crooked header file, in the form of a PDF document, with slurred explanations, omissions and authored by huashan. All clear.

Well, in order to work with the board as quickly as possible, it would be better to connect it by wire and load the executable code at the touch of a button. Ok, I connect via USB to my computer. And nothing.

No transactions over the USB bus, even generation on quartz. Badly. I start thinking, I study the board, I remember all the subtle moments. For example, on this board, next to the processor, I put my DC / DC converter, with the expectation of powering some kind of consuming load, connected it to the USB 5V power bus, and did not load anything. I measured with an oscilloscope - 5 volts at the input, 5 volts at the output. Words from production come up, something about a resistor. Yes, it is - there is no resistor in the feedback circuit. (- Captain, captain, the anchor has surfaced! - Hmmm, a bad omen ...)

I solder the resistor, and lo and behold! The board is determined by USB! Before that, I looked at the voltage level of the power bus - 5.1 volts, no significant interference, no ripple. But the processor knows better. After soldering the resistor, the DC / DC source also started working, while without load, but at least it stopped interfering with the processor. Okay, what's next.

Next, you need to deal with the initial launch of the processor and check the operation of DDR. I start digging, and in the process of searching, I collect a set of utilities and "bootlets" - source codes that allow you to initialize the power subsystems, the DDR controller-memory bundle and prepare the system for further work. What you need is the simplest source codes, with an abundance of Hindu code, but most importantly, they work.

Utilities allow you to load these bootlets into the processor's memory and run them for execution. Everything is so complicated, because after turning on the built-in bootloader does not know anything about external RAM, and since there is no memory, there is nowhere to load, for example, the Linux kernel. It turns out a chain of several links, where at each stage a small step forward is made.

Retreat


To connect to serial ports, to implement all sorts of in-circuit JTAG debuggers, programmers and similar tasks in another project, a USB-UART bridge was implemented on the FT2232. Dual layer design, both ports are combed out in 2mm increments. This project has a different story - the USB-UART bridge + data collection board is placed in the center of the main board, and the design of the device involves its removal.

Those. a board without a hole in the center will simply not be able to get into the device. It seemed irrational to throw away the textolite, and I made my creative edits - the USB-UART bridge itself (smaller), and the controller (MSP430FR5738) with a current, voltage sensor, an electromechanical relay, a current source and a thermometer. This entire "hot" part is galvanically isolated from the RS485 interface via a pair of ADuM1281 and decoupled DC/DC (not yet installed on the board). The Modbus stack is spinning in the controller, i.e. a dozen of these boards can be networked, data from the boards can be entered into the SCADA system, and arbitrary processes can be automated. In particular, these scarves will be used for testing devices at -40 / +60 in a heat chamber. I stuck them on the device under test, and sit @ watch how the currents, voltages and temperatures change at the critical nodes.

All of these boards were designed in parallel, so I immediately laid down identical dimensions and flexible connection capabilities. Not in vain:)



Great, I compile the sources, build this constructor, load it, and get the first lines from the debug port! The power subsystem has started!


Battery Voltage = 0.65V

EMI_CTRL 0x1C084040
FRAC 0x92926152
power 0x00820710
Frac 0x92926152
start change cpu freq
hbus 0x00000003
cpu 0x00010002

I look into the memory initialization sources, allow the simplest test, manually edit the initialization procedure for my board configuration, and start it again:
PowerPrep start initialize power…
Battery Voltage = 1.74V
No battery or bad battery detected!!!.Disabling battery voltage measurements.
EMI_CTRL 0x1C084040
FRAC 0x92926152
power 0x00820710
Frac 0x92926152
start change cpu freq
hbus 0x00000003
cpu 0x00010002

end memory test, at 0x41FFFFFC

Wonderful! Memory test passed! This is very good, now you can upload something more serious there.

U Boot

More seriously, I have this U-Boot. I am familiar with this system, it seems to me quite adequate and functional. Allows you to work with peripherals - current versions work with USB, SD / MMC, Ethernet, load images from FAT / ext2 partitions, transfer control, and most importantly - blink an LED - everything you need for happiness and more flexible debugging at the initial stage.
Therefore, without hesitation, I download the current version from the official repository, take the closest configuration, compile it, compile it with Hindu bootlets into one file, and load it into the processor:
PowerPrep start initialize power…
Battery Voltage = 1.74V
No battery or bad battery detected!!! Disabling battery voltage measurements.
EMI_CTRL 0x1C084040
FRAC 0x92926152
power 0x00820710
Frac 0x92926152
start change cpu freq
hbus 0x00000003
cpu 0x00010002
start memory test, at 0x40000000
end memory test, at 0x41FFFFFC

CPU: Freescale i.MX23 rev1.4 at 227 MHz
BOOT:USB
DRAM: 32 MiB
MMC: MXS MMC: 0
MMC0: Bus busy timeout!
MMC0: Bus busy timeout!
MMC0: Bus busy timeout!
MMC0: Bus busy timeout!
Card did not respond to voltage select!
MMC init failed
Using default environment

In: serial
Out: serial
Err: serial

No ethernet found.

=>


And U-Boot started! Great, but the board still starts over the wire. You have to deal with the memory card. Well, I solder the load selection resistors, I stick the card - an error comes from the processor in the terminal. I pull out a card - another. What a twist!

SD/MMC

I start looking, searches lead to a Russian-language forum, to useful and interesting 380 pages of discussion. I'm afraid the guys still remember this SoC with a strong word.

It turns out that in order to boot from an SD / MMC card, it is necessary to flash the OTP bits, then something else may be possible. In particular, it is necessary to reconfigure in the OTP Register: 24 bits of SD MBR Boot - flash to one, and SD_POWER_GATE_GPIO - select NO_GATE - in my design card power management is not provided.

"It's kind of awkward." This means that you can't make a bootable memory card that can flash finished fixtures in batches, instead you'll have to connect each fixture and manually flash those ill-fated OTP bits. Of course, I will not use this processor in any serious project, but you should not forget about such a moment. I download the Windows utility, flash these bits, insert a memory card, a battery ... The system starts and reboots cyclically. Crap!

PowerPrep start initialize power…
Battery Voltage = 3.75V


Battery Voltage = 3.75V
Boot from battery. 5v input not detected

PowerPrep start initialize power…
Battery Voltage = 3.75V
Boot from battery. 5v input not detected
...


I edit the bootlet sources, in particular, I add additional debug messages, and I go to the problematic section of the code:
PowerPrep start initialize power…
Battery Voltage = 3.75V
Boot from battery. 5v input not detected
Try poweron_pll
Try turnon_mem_rail

Crashes when power is applied to DDR memory. Hm. Somewhere I already read about it. How did it work before? Okay, instability is found, we need to understand.

Around the memory chip are its legal decoupling capacitors, 8 pcs. 100 nF. But at the output of the memory power supply built into the SoC, I set 2x10 uF, although the manufacturer recommended only 1uF (I read the instructions, if nothing else helps, yes). To break, not to build: I unsolder one capacitor, connect the battery, and the system starts!

In the very first photo, this capacitor is visible - there is dirt around it, and it is soldered with only one contact.

PowerPrep start initialize power…
Battery Voltage = 3.75V
Boot from battery. 5v input not detected
Try poweron_pll
Try turnon_mem_rail
Try init_clock
EMI_CTRL 0x1C084040
FRAC 0x92926192

power 0x00820710
Frac 0x92926192
start change cpu freq
hbus 0x00000003
cpu 0x00010001

Initcall: 3e09f908 (relocated to 40002908)
initcall: 3e0a013c (relocated to 4000313c)
initcall: 3e0a2ec0 (relocated to 40005ec0)
initcall: 3e0a2ea8 (relocated to 40005ea8)
initcall: 3e0a2e88 (relocated to 40005e88)
initcall: 3e0a2e68 (relocated to 40005e68)
Net: Net Initialization Skipped
No ethernet found.
initcall: 3e0a2e5c (relocated to 40005e5c)
Initial value for argc=3
Final value for argc=3
### main_loop entered: bootdelay=3

### main_loop: bootcmd="mmc dev $(mmcdev); if mmc rescan; then if run loadbootscript; then run bootscript; else if runloadimage; then run mmcboot; else"
Hit any key to stop autoboot: 0
=>
=>


Hehe, it works! Ok, I'll write this down as a reason for potential instabilities in the future, because there is one more 10uF left, which can also complicate life. Now I'm trying with external power.
PowerPrep start initialize power…
Battery Voltage = 3.74V
5v source detected.Valid battery voltage detected.Booting from battery voltage source.
Mar 18 2015
07:59:13
Try poweron_pll
Try turnon_mem_rail
Try init_clock
EMI_CTRL 0x1C084040
FRAC 0x92926192
Try init_ddr_mt46v32m16_133Mhz
power 0x00820710
Frac 0x92926192
start change cpu freq

Now the freezes have begun. Moreover, the situation is not regular, periodically manifests itself when powered by a battery, periodically from external 5V, periodically starts and works. I correct the code again, disable switching the processor to PLL, the core remains running at 24 MHz. Everything is stable. I change the PLL divider, twist the frequency, and the board successfully starts at 320 MHz. You should try the manufacturer's recommendation - a 100 pF capacitor in the pulsed DC / DC circuit. I laid a place on the printed circuit board for the capacitor. I will return to this issue later.

linux kernel

So, at the moment there is a board that starts from a memory card and loads U-Boot. Next, according to the plan, you need to load the kernel.

I download the actual kernel sources from kernel.org, unpack and compile the kernel in three clicks.

make ARCH=arm CROSS_COMPILE=$(CC) mxs_defconfig
make ARCH=arm CROSS_COMPILE=$(CC) menuconfig
make ARCH=arm CROSS_COMPILE=$(CC) -j4 zImage modules

These three clicks

When configuring the kernel, you must strictly specify the merge of the kernel + dtb

Boot options ---> Use appended device tree blob to zImage ----> Supplement the appended DTB with traditional ATAG information

Need to enable Kernel low-level debugging functions along with early printk
And also enable dynamic printk() support
And turn off the video subsystem
And half of the extra and not very drivers

And also collect dtb - device tree blob, a structure that describes basic things to the kernel - the amount of memory, SoC peripherals, etc.

make ARCH=arm CROSS_COMPILE=$(CC) imx23-olinuxino.dtb

And put it all into one file
cat arch/arm/boot/zImage arch/arm/boot/dts/imx23-olinuxino.dtb > arch/arm/boot/zImage_dtb


Then you can copy the kernel to a flash.

I start, and I get kernel panic. Logically, there is no root file system yet.

Debian

I choose Debian as my own operating system. In my opinion, an excellent distribution kit - simple and reliable, like a wooden stick. I take the finished assembly, unpack it into the card section, and indicate when loading the kernel where to look for its legal root.

Download log

PowerPrep start initialize power…
Battery Voltage = 3.68V
Boot from battery. 5v input not detected
poweron_pll
turnon_mem_rail
init_clock
EMI_CTRL 0x1C084040
FRAC 0x92925E92
init_ddr_mt46v16m16_96Mhz
power 0x00820710
Frac 0x92925E92
start change cpu freq
try now
hbus 0x00000003
cpu 0x00010001

U-Boot 2015.04-rc3-00209-ga74ef40-dirty (Mar 18 2015 - 14:26:18)

CPU: Freescale i.MX23 rev1.4 at 320 MHz
BOOT:USB
DRAM: 32 MiB
MMC: MXS MMC: 0
In: serial
Out: serial
Err: serial
Net: Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot: 0
2650994 bytes read in 906 ms (2.8 MiB/s)
Kernel image @ 0x41000000 [ 0x000000 - 0x284e60 ]

Starting kernel…

Uncompressing Linux… done, booting the kernel.
[0.000000] Booting Linux on physical CPU 0x0
[0.000000] Linux version 3.19.2 ( [email protected]) (gcc version 4.9.2 20140904 (prerelease) (crosstool-NG linaro-1.13.1-4.9-2014.09 - Linaro GCC 4.5
[ 0.000000] CPU: ARM926EJ-S revision 5 (ARMv5TEJ), cr=0005317f
[ 0.000000] CPU: VIVT data cache, VIVT instruction cache
[ 0.000000] Machine model: i.MX23 Olinuxino Low Cost Board
[ 0.000000] Memory policy: Data cache writeback
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
[ 0.000000] Kernel command line: console=ttyAMA0,115200 root=/dev/mmcblk0p3 rw rootwait
[ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
[ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
[ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
[ 0.000000] Memory: 18972K/32768K available (3475K kernel code, 244K rwdata, 1372K rodata, 188K init, 8096K bss, 13796K reserved, 0K cma-reserved)
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector: 0xffff0000 - 0xffff1000 (4 kB)
[ 0.000000] fixmap: 0xffc00000 - 0xfff00000 (3072 kB)
[ 0.000000] vmalloc: 0xc2800000 - 0xff000000 (968 MB)
[ 0.000000] lowmem: 0xc0000000 - 0xc2000000 (32 MB)
[ 0.000000] modules: 0xbf000000 - 0xc0000000 (16 MB)
[ 0.000000] .text: 0xc0008000 - 0xc04c42ac (4849 kB)
[ 0.000000] .init: 0xc04c5000 - 0xc04f4000 (188 kB)
[ 0.000000] .data: 0xc04f4000 - 0xc0531018 (245 kB)
[ 0.000000] .bss: 0xc0531018 - 0xc0d19264 (8097 kB)
[ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836480000000ns
[ 0.000000] Console: color dummy device 80x30
[ 0.000000] Lock dependency validator: Copyright 2006 Red Hat, Inc., Ingo Molnar
[0.000000]…MAX_LOCKDEP_SUBCLASSES: 8
[0.000000]…MAX_LOCK_DEPTH: 48
[0.000000]…MAX_LOCKDEP_KEYS: 8191
[0.000000]…CLASSHASH_SIZE: 4096
[0.000000]…MAX_LOCKDEP_ENTRIES: 32768
[0.000000]…MAX_LOCKDEP_CHAINS: 65536
[0.000000]…CHAINHASH_SIZE: 32768
[ 0.000000] memory used by lock dependency info: 5167 kB
[ 0.000000] per task-struct memory footprint: 1152 bytes
[ 0.060000] Calibrating delay loop… 159.12 BogoMIPS (lpj=795648)
[ 0.070000] pid_max: default: 32768 minimum: 301
[ 0.070000] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.070000] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
[0.080000] CPU: Testing write buffer coherency: ok
[ 0.080000] Setting up static identity map for 0x40353070 - 0x403530c8
[ 0.110000] devtmpfs: initialized
[ 0.130000] pinctrl core: initialized pinctrl subsystem
[ 0.180000] DMA: preallocated 256 KiB pool for atomic coherent allocations
[ 0.290000] Serial: AMBA PL011 UART driver
[0.290000] 80070000.serial: ttyAMA0 at MMIO 0x80070000 (irq = 17, base_baud = 0) is a PL011 rev2
[0.480000] console enabled
[ 0.560000] mxs-dma 80004000.dma-apbh: initialized
[ 0.590000] mxs-dma 80024000.dma-apbx: initialized
[ 0.600000] SCSI subsystem initialized
[0.610000] pps_core: LinuxPPS API ver. 1 registered
[0.610000] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti
[ 0.620000] Switched to clocksource mxs_timer
[ 1.130000] futex hash table entries: 256 (order: 1, 11264 bytes)
[1.290000] jffs2: version 2.2. (NAND) 2001-2006 Red Hat, Inc.
[ 1.320000] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)
[ 1.330000] io scheduler noop registered (default)
[ 1.340000] of_dma_request_slave_channel: dma-names property of node "/ [email protected]/[email protected]/[email protected]"missing or empty
[ 1.360000] uart-pl011 80070000.serial: no DMA platform data
[1.360000] 8006c000.serial: ttyAPP0 at MMIO 0x8006c000 (irq = 146, base_baud = 1500000) is a 8006c000.serial
[1.380000] mxs-auart 8006c000.serial: Found APPUART 3.0.0
[ 1.410000] mousedev: PS/2 mouse device common for all mice
[ 1.430000] stmp3xxx-rtc 8005c000.rtc: rtc core: registered 8005c000.rtc as rtc0
[ 1.440000] i2c /dev entries driver
[ 1.450000] stmp3xxx_rtc_wdt stmp3xxx_rtc_wdt: initialized watchdog with heartbeat 19s
[ 1.460000] softdog: Software Watchdog Timer: 0.08 initialized. soft_noboot=0 soft_margin=60 sec soft_panic=0 (nowayout=0)
[ 1.470000] Driver "mmcblk" needs updating - please use bus_type methods
[ 1.480000] 80010000.ssp supply vmmc not found, using dummy regulator
[ 1.540000] mxs-mmc 80010000.ssp: initialized
[ 1.630000] mmc0: host does not support reading read-only switch, assuming write-enable
[1.640000] stmp3xxx-rtc 8005c000.rtc: setting system clock to 1970-01-01 00:27:21 UTC (1641)
[ 1.660000] mmc0: new high speed SD card at address e624
[ 1.680000] mmcblk0: mmc0:e624 SU02G 1.84 GiB
[1.730000] mmcblk0:p1 p2 p3
[ 1.740000] usb0_vbus: disable
[1.780000] EXT3-fs (mmcblk0p3): error: couldn't mount because of unsupported optional features (240)
[1.800000] EXT2-fs (mmcblk0p3): error: couldn't mount because of unsupported optional features (240)
[ 1.870000] EXT4-fs (mmcblk0p3): mounted filesystem with ordered data mode. Options: (null)
[ 1.880000] VFS: Mounted root (ext4 filesystem) on device 179:3.
[ 1.910000] devtmpfs: mounted
[ 1.920000] Freeing unused kernel memory: 188K (c04c5000 - c04f4000)
INIT: version 2.88 booting
Using makefile-style concurrent boot in runlevel S.
Starting the hotplug events dispatcher: udevdudevd: error getting socket: Function not implemented

Error initializing control socketudevd: error initializing control socketudevd
failed!
Setting the system clock.
Activating swap...done.
[ 6.410000] EXT4-fs (mmcblk0p3): re-mounted. Options: (null)
Checking root file system...fsck from util-linux-ng 2.17.2
rootfs: clean, 10152/115920 files, 89453/462839 blocks
done.
[ 6.870000] EXT4-fs (mmcblk0p3): re-mounted. Options: (null)
Setting the system clock.
Cleaning up ifupdown…
Setting up networking…
Loading kernel modules...done.
Activating lvm and md swap...done.
Mounting local filesystems...done.
Activating swapfile swap...done.
Cleaning up temporary files…
Setting kernel variables ...done.
INIT: Entering runlevel: 2
Using makefile-style concurrent boot in runlevel 2.
Starting NTP server: ntpd.
Starting OpenBSD Secure Shell server: sshd.

Debian GNU/Linux 6.0 debian ttyAMA0

Debian login: root
Password:
Last login: Thu Jan 1 02:00:41 EET 1970 on ttyAM0
Linux debian 3.19.2 #5 Thu Mar 19 10:58:08 EDT 2015 armv5tail

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
[email protected]:~#
[email protected]:~# free
total used free shared buffers cached
Mem: 19160 18292 868 0 1496 9756
-/+ buffers/cache: 7040 12120
Swap: 0 0 0
[email protected]:~#
[email protected]:~# cat /proc/cpuinfo
processor: 0
model name: ARM926EJ-S rev 5 (v5l)
BogoMIPS: 159.12
Features: swp half fastmult edsp java
CPU implementer: 0x41
CPU architecture: 5TEJ
CPU variant: 0x0
CPU part: 0x926
CPU revision: 5

Hardware: Freescale MXS (Device Tree)
revision: 0000
Serial: 0000000000000000
[email protected]:~#
[email protected]:~#df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1789440 295900 1384592 18% /
tmpfs 9580 0 9580 0% /lib/init/rw
udev 10240 0 10240 0% /dev
tmpfs 9580 0 9580 0% /dev/shm
tmpfs 9580 0 9580 0% /var/volatile
tmpfs 9580 0 9580 0% /media/ram
[email protected]:~#
[email protected]:~# mount
rootfs on/type auto (rw)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
tmpfs on /var/volatile type tmpfs (rw)
tmpfs on /media/ram type tmpfs (rw)


Yes, there is work to be done.

But, nevertheless, the system works, is loaded from a memory card, is located in the entire range of DDR memory, and can rightfully be called a single-board computer! This is from the scheme in the head to the implementation in the hardware.
In total, no design errors have yet been found, although there are already complaints. Well, for starters, I think that's enough.

Conclusion

In fact, this is just the beginning. There is still something to work on - deal with the peripherals, in particular, the audio and video output is interesting, test the SoC at standard frequencies, or even better, overclock it, measure the current consumption, check it at minus and plus temperatures (the stability of the DDR controller is interesting), test it on resource-intensive tasks ( for example, video broadcasting from a webcam via USB WIFI), and as a result, make a WiFi-controlled tank with a camera and a directional microphone on a scarf. But not right now. Now I have a business proposal :)

There are three fees that I can give away. All you need to get it is to voice an idea in the comments on how you can apply the resulting system. The best proposals will receive a copy for free, with the hope that you will implement your idea and tell us what you got. The distribution of elephants will be carried out on March 30, 2015, i.e. a week later.

For me, this will be feedback: I need to know how the system will behave in real conditions, how reliably it will show itself, what problems will arise, etc.

That's all for now, I look forward to your comments.

UPD: by request: the first copy goes

Small computers are not very popular yet, but I am sure that many users will appreciate them. Personally, I had previously looked at small computers, but at that time there was no such mini Windows computer on sale that could replace a desktop computer.

Of course, there are laptops that are compact and versatile, but they can replace the system unit. But for me in inexpensive laptops There are 2 major downsides:

  1. laptops have a small screen size and a small resolution. The quality of the display is very poor, the image fades when deviated from the right angle.
  2. inexpensive laptops do not put SSD, and this is a serious minus for performance.

Of course, a laptop is not replaceable when traveling, and I have a laptop that I take with me, but when it comes to using it at home, I personally prefer a monitor with a large diagonal, high resolution and an IPS matrix. It is for these reasons that I chose the mini PC.

Let's talk about everything in order, today we are talking about a silent little computer that can replace the system unit:

The mini computer comes in a small box,


Package Included:


1 - the computer itself
2 - power supply
3 - cable 220V
4 - two Wi-FI antennas, mounting screws. Separately, I bought a VESA monitor mount from the same seller.
5 - fixing screws
6 - VESA mount (not included, must be ordered separately)

Dimensions

As you can see, the dimensions of the computer are very compact 14 x 11 x 3.5 cm, the dimensions are comparable to the dimensions of a 3.5″ desktop hard drive:

Specifications

In general, you can buy this small computer in different configurations, I will give links to them below. In the meantime, let's talk about this particular instance.

External connectors

All connectors are located on two opposite ends.
One side


  • power button
  • power supply connector
  • 1 USB 3.0 port
  • 4 USB 2.0 ports

From the other side


  • 2 antenna connectors
  • 3.5″ audio output
  • 3.5″ microphone jack
  • RJ-45 network adapter
  • HDMI output
  • VGA output

What is inside

If we look inside the mini computer, we will see that everything inside is compact. Here you can see 1 SO-DIMM slot with a memory module, an mSATA connector with an inserted SSD drive, a Mini PCIE connector with a Wi-Fi module inserted.


And also there is a SATA connector for connecting a hard drive, and a non-standard power connector for a hard drive. I did not try to connect an additional disk, because there was no power cable. And to be honest, I doubt that it will be possible to fit it in this case, at least there are no mounts for it.

Cooling

The cooling system here is passive, that is, in this computer there are no fans, and the ribbed case of a small computer is responsible for heat dissipation. With the declared requirements of the processor heat dissipation - TDP 7.5W, the case copes well with heat dissipation. As for overheating, until I encountered it, the computer never hung or turned off in 2 months.

The temperature was measured using the sensor built into the processor, during all tests, this is about 80 minutes. As you can see from the measurements:

  • minimum temperature was 40°C
  • Maximum temperature was 50°C

Wherein margin to critical temperature was 50°C from the maximum.

The absence of a fan and a classic hard drive is a complete absence of noise, for me this is a big plus.

Operating system

The computer came preinstalled with English Windows 7, the copy was not licensed. I immediately installed Windows 8.1 x64 drivers installed everything, the only thing I did was update them.


Linux systems on this kid work, Live CD Ubuntu started without problems. I think all other distributions will also work fine.

The characteristics of the computer state that it supports the good old Windows XP, but I did not install this system, so I cannot say for sure how correctly it works, and how things are with the drivers.

Performance

I'll tell you right away gamers - this computer is not for you! As I already wrote, the graphics here are Intel HD Graphics, built into the processor, unfortunately it will not pull modern games. But for some games it is enough.

If you choose a computer that would take up little space, to work on the Internet, to work in office applications, to watch videos and listen to music, to work in Photoshop and other graphic editors, then you can be sure that this kid can easily cope with all these tasks!

Performance test

To measure performance, the PerformanceTest 8 test was used, you can download it on this page of the site www.passmark.com, in this test:

  • Overall score computer 680.4-709.0
  • CPU showed a result 30% lower than the Core2Duo E8400
  • Graphic arts, as expected, weak, about 2 times slower than the Radeon 6450
  • By memory test lagging behind DDR2 - 16%, behind DDR3 - more than 37%
  • Disk showed a result 2.5 times faster than conventional drives and 38% slower than other SSD drives

Detailed test results:
2D graphics:

3D graphics:

CPU:

Memory:

Disk:

Final result:

Modern technologies constantly surprise us. We used to use computers whose hard drives cost tens of thousands of dollars and were transported exclusively by plane. Everything is changing, now such a computer can fit on one arm of a baby, there will still be room for the second. This article will touch on the topic of single-board computers, what are their pros and cons, which one is worth buying for personal use, and in general - is it worth it? The article is recommended for novice users of the Linux operating system. If you do not know this, then you will meet with great difficulties.

Most Popular Mini Computers

To begin with, it is worth deciding what is such a computer? A single-board computer consists of the following elements: a processor, RAM, contact pins, various controllers, for example, Ethernet - they are only auxiliary, so their equipment from different manufacturers is also different.

The processor used by the mobile is generally Why such? All due to considerations of energy efficiency, speed and price / performance ratio. Such processors not only win in the mobile device market, but also here, because a single-board computer does not have any video card, there is only an integrated graphics core right in the processor itself. The most common is Mali-400ml (in many phones in 2013 this is exactly the case).

RAM is ordinary, as a rule, DDR3, if you're lucky, then DDR4, it all depends on the price of the computer. In the market for these devices, everything depends on how much you plan to spend, so in the next paragraph of the article we will talk about the main competitors in this market.

Windows Single Board Computer

So, as already mentioned, there are not so many most popular competitors in this market, since this product is very specific. Imagine a board with electronic components, and it has a gold-plated lead. Many people will simply go crazy from this, they say, what to do with it? Therefore, such things are taken exclusively by either novice programmers or geeks, although the difference between them is only in the time spent at the computer.

There are two biggest competitors in the single board computer market:

  1. Raspberry Pi. A line of programmable microcomputers capable of performing work of any complexity. The cheapest version costs about one thousand Russian rubles.
  2. Orange Pi. A direct analogue of the above board, but the advantage of this company is that there is a very large line of computers - from ultra-small to full-size. The cheapest image costs 400 rubles, and is almost as good as the main competitor in everything.

On any of these computers, you can install a special version of Windows for ARM (CISK Architecture). Which one is more suitable for you is up to you, because a single-board computer is not only a specific thing, but also a very intimate one, since a certain model is sharpened, again, for a certain task. You can order both on the official website and on any intermediary website in Russia.

Is it possible to build a single board computer with your own hands?

Probably a lot of people have asked the same question. Let's just say yes and no. It is possible that you are a very skilled technician and can create something similar, but it will take up much more space. The small size is precisely the advantage of such computers.

Finally

We hope you enjoyed this article about single board computers. It is also worth noting the following. Such devices on the CISC architecture work well enough only on the server version of Linux, and with Windows it is still not so smooth, so if you are ready for the difficulties associated with learning a new OS, then a single board computer is definitely for you.

Computers the size of a credit card (there are models larger and smaller, but this is a kind of standard) are already quite famous. They have been studied, they are used, they work for the benefit of the community.

What's this?

This is a device that has everything that is minimally necessary for operation on one board. As a rule, these are CPU, GPU, their binding and, possibly, USB and network interfaces - both wired and wireless. Video outputs can be different: from outdated VGA or composite video to quite modern HDMI - if only the built-in video core supports it. They are usually powered by a USB connector and require a current in the range of 500-1500 mA. That is, they can be powered using a conventional charger for a mobile phone or (better) tablet.

Why is this needed?

The number of tasks that such a computer can handle is quite large. The list starts with a home computer and ends with routers and modems. For example, you can easily install almost complete Linux on such a device, turning it into a good machine for working with documents, surfing the web, listening to music and other simple tasks. Some models are able to digest even playing videos up to 1080p! And all this - with the usual graphical interface. The only place where problems can arise is in a different architecture. As is right, many applications have a version for the ARM architecture, and if not, it is easy to find an analogue, but specific software on this platform is still rare.

The other side of the coin is automation and narrow specialization. So, for the same Raspberry Pi, there are firmware that allow you to turn it into a Wi-Fi router, network storage or a wireless network player. Very often, such solutions are as complete as possible and require minimal fuss, requiring only the installer to write the desired image to a storage medium (most often a memory card) and specify the necessary settings. The possibilities are truly endless - you can build an entire smart home using just a couple of these boards. Of course, for this you will have to sweat with setting up all such devices, but even here there are ready-made solutions that require only minimal directness of hands.

We should also not forget about the increasingly popular phenomenon called the Internet of Things (IoT). For example, Microsoft is about to release a special version of Windows 10 IoT Edition. A device that uses special protocols (and a software assembly developed by them) will be able to interact even with Lumia phones! From the point of view of the development of the ideas of single-board computers, this is really a step forward: before that, control could only be carried out through a router. Now this link is disappearing, allowing devices to communicate directly, and even using the usual methods for this - for example, C#, known and popular all over the world, is used to interact with Arduino.

The main thing that allows single board computers to communicate with the outside world is the GPIO ports. These are ports that can be both inputs and outputs, allowing the device to interact at the “on-off” level. This simplicity of the idea allows, for example, turning a light bulb on or off when receiving an e-mail with the appropriate command. A typical single board computer has 5-10 GPIO ports, but this number can be expanded in many ways.

Popular Models

1 Raspberry Pi

The Raspberry Pi (or "Malinka" as they are known among enthusiasts) is the device that started this story. For the first time, computers of this family appeared in 2012, and then it seemed to many a fantasy. A computer the size of a credit card? For 25 dollars? Runs Linux? Nevertheless, already at the end of July, the alpha version of the board was launched into production, followed by the first ready-made models in August, and people began to slowly receive their devices.

What's on board?

  • GPIO - universal ports for working with any devices;
  • composite video output;
  • audio output 3.5 mm;
  • USB;
  • Ethernet;
  • HDMI;
  • microUSB (power);
  • memory card slot.

Malinka has different configurations: A, A+, B, B+, 2B. A-models are the simplest, they have 256 MB of RAM, an older generation ARMv6 processor, one USB port and 25/40 GPIO ports. Options with index B are much more interesting - they already have 512 MB of memory, Ethernet and more USB (2 or 4 depending on the model). The latest of them, 2B, is equipped with a quad-core processor, 1 GB of RAM and is generally objectively better than previous models. Prices range from $20 (model A+) to $35 (2B).

What can be installed?

The Raspberry Pi is widely distributed, so there are many different distributions for this board. This is mainly software based on the Linux kernel, but there are exceptions: for example, RISC OS or FreeBSD.

Raspberry Pi

A computer the size of a credit card

Malinka has different configurations: A, A+, B, B+, 2B. A-models are the simplest, they have 256 MB of RAM, an older generation ARMv6 processor, one USB port and 25/40 GPIO ports. Options with index B are much more interesting - they already have 512 MB of memory, Ethernet and more USB (2 or 4 depending on the model).

Malinka

As already mentioned, the possibilities of such a computer are almost endless: it can do any job - the main thing is that the processor power is enough for this. It is frankly weak in all models except 2B. Raspberry Pi is sold through official online stores (RS, Element 14), and in our area through local suppliers. We have it for example in Raspberry or Arduino. It is worth buying in the first place (unless, of course, finances are constraining) model 2B. It is much more powerful, and there are more ports, and 4 USBs are worth a lot. The difference in price is not so great, the compatibility in the software is complete.

2. Cubeboard

What's on board?

  • Power connector;
  • Ethernet;
  • HDMI;
  • optical digital audio output;
  • VGA;
  • USB;
  • micro USB
  • audio output 3.5 mm;
  • SD card;
  • SATA
  • GPIO.

Cubieboard is the creation of a gloomy engineering genius from China. It appeared in test versions in September 2012. The first version was not very successful, so let's talk about the third version (fortunately, the price remained the same). As you can see from the picture, there are more ports than Raspberry, besides, Wi-Fi, Bluetooth and infrared port are soldered on the board - this is a definite plus. The machine carries a dual-core ARM Cortex-A7 processor, 1/2 GB of RAM, gigabit Ethernet and is generally full of interesting things.

What can be installed?

Works, like its raspberry counterpart, on Linux, usually its special version of Cubian (a Debian variant). There is a lot of software, and the missing utilities are easy to compile on your own (after some refinement with a file). The GPIO connectors are successfully implemented, they are spaced into different parts of the board.

Why do I need this and where can I buy it?

cube board

Cubieboard - the creation of a gloomy engineering genius from China

Wi-Fi, Bluetooth and an infrared port are soldered on the board - this is a definite plus. The machine carries a dual-core ARM Cortex-A7 processor, 1/2 GB of RAM, gigabit Ethernet and is generally full of interesting things. Works on Linux. There is a lot of software, and the missing utilities are easy to compile yourself.

Cubieboard repeats the capabilities of Raspberry, expanding them in places. However, the prices are also higher: for the older model they ask for ~$85, that is, exactly 2.5 times more than for the Raspberry Pi 2. Whether it's worth it is up to you.

3. Beaglebone

What's on board?

  • power connector;
  • Ethernet;
  • micro USB
  • micro SD
  • microHDMI;
  • USB;
  • GPIO.

The BeagleBone Black first appeared in 2013 as the successor to the previous BeagleBoards. It can rightfully be called the most stylish of all. Developers focus on the presence of a large number of universal ports. In addition, there are quite good sets of accessories for BeagleBone. There are no wireless modules. Processor - 1 GHz Cortex-A8, 512 MB of RAM. In general, against the background of the Raspberry Pi 2, it already looks rather pale.

What can be installed?

Like all other single board computers - Linux. What is important is that the board already has 2 or 4 GB of memory, and even your own Debian distribution can be installed there. A huge number of expansion ports allow you to implement anything, and peripheral boards can really affect the capabilities of the device. Just take a look at how they look:

Why do I need this and where can I buy it?

beagle bone

BeagleBoard can rightly be called the most stylish of all

Developers focus on the presence of a large number of universal ports. In addition, there are quite good sets of accessories for BeagleBone. There are no wireless modules. Processor - 1 GHz Cortex-A8, 512 MB of RAM.

BeagleBone focuses primarily on accessories. The official price is $ 45, in our area, as usual, it differs upwards. The board can be found in the same stores as the Raspberry Pi.

And what happens in the world of ready-made solutions?

If you suddenly don't feel like messing around with boards and installing an OS, there are so-called "stick computers" at your service. Chinese solutions reign supreme here. When you search for “Android TV”, you can find hundreds of devices of various quality. Due to their diversity, they cannot be sorted in any particularly convenient way, so it is enough to follow a couple of simple rules. Your device must:

  • Have Android older than 4.2. Since then, a lot of useful little things have appeared, you should not chase penny savings and lose them.
  • Have a full size USB. USB OTG is, of course, also an option, but it is seriously inferior in convenience.
  • Have a Wi-Fi antenna. In a small space, this is a must. Often you can find instructions for soldering it where it is not provided. Make your life easier - take it with a ready-made antenna.
  • It is also worth considering the presence of a remote control. For many operations it is very useful, especially if combined with the keyboard.

By the way, Intel recently introduced its own solution - Compute Stick. It is a full x86 computer with an Atom processor, 2 GB of RAM and 32 GB of storage. In fact, in this way you can turn any monitor or TV into a computer. The device comes with a free version of Windows 8.1 with Bing, and you can also install Linux on it. The recommended cost in Ukraine is $130. This is more expensive than all the solutions listed in this material, but the level of performance and compatibility with conventional user software is completely different here.

What about brand new stuff?

Now C.H.I.P. is rapidly gaining popularity on Kickstarter.

Its approach is similar to the BeagleBone: by itself, it costs only $9 (+$20 shipping). You can buy additional boards with different outputs, a battery, and even ... a phone case:

If you are willing to invest, then this is probably a good choice. The device has already collected the required amount, you can support it here (fundraising will continue for a few more days).

Instead of total

Today, there are quite a lot of different single-board computers and stick computers. So much so that even the scope of this term is sometimes washed away, losing accuracy: for example, sometimes even Arduino is called as such. In this material, we tried to cover the most popular and common options, and what to choose from them, and even more so to build on their basis, is already your decision.

P.S. Here are the comparative characteristics of 44 such computers.

Liked the article? Share with friends!