Author Topic: Easy and small Linux ARM platform?  (Read 11189 times)

0 Members and 1 Guest are viewing this topic.

Offline casper.bangTopic starter

  • Frequent Contributor
  • **
  • Posts: 311
  • Country: dk
  • Pro SE, amateur EE.
    • BangBits
Easy and small Linux ARM platform?
« on: August 21, 2014, 11:13:13 am »
Ok so I had a bunch of fun with ATiny and GCC, but now I think I want to try out some basic prototyping with a real OS, preferably ARM + Linux territory. I'm a software developer and my needs are purely academic of nature, to understand and get some hands on experience with low-level systems programming. What are the easiest and smallest platform candidates for doing this, preferably with a very low power usage? Raspberry? BeagleBoard?
 

Offline Cside

  • Regular Contributor
  • *
  • !
  • Posts: 105
Re: Easy and small Linux ARM platform?
« Reply #1 on: August 21, 2014, 11:17:28 am »
ive used the beaglebone black extensively and its really awesome.
we made a few capes for it without problems.
with an LCD and usb modem working it does draw a hefty current so consider that if doing embedded work.
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Easy and small Linux ARM platform?
« Reply #2 on: August 21, 2014, 11:24:46 am »
Quote
Raspberry? BeagleBoard?

Yes.

Or those TV usb-sticks, or arm-based phones. etc. The difficulty is to find documents and to program them.
================================
https://dannyelectronics.wordpress.com/
 

Offline casper.bangTopic starter

  • Frequent Contributor
  • **
  • Posts: 311
  • Country: dk
  • Pro SE, amateur EE.
    • BangBits
Re: Easy and small Linux ARM platform?
« Reply #3 on: August 21, 2014, 12:07:26 pm »
Or those TV usb-sticks, or arm-based phones. etc. The difficulty is to find documents and to program them.

Yeah I actually have an Android USB-stick for HDMI with a Rockchip, but the toolchain and driver story is a nightmare - Chinese vendors do not understand that using copyleft software also require them to disclose their stuff under the same license!
 

Offline bwat

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: se
    • My website
Re: Easy and small Linux ARM platform?
« Reply #4 on: August 21, 2014, 03:04:32 pm »
If you want to learn about low-level systems programming then do some low-level systems programming. Installing a *nix on an ARM board is more of an exercise in integration and tool use.  Of course that may be what you're actually wanting to do.
"Who said that you should improve programming skills only at the workplace? Is the workplace even suitable for cultural improvement of any kind?" - Christophe Thibaut

"People who are really serious about software should make their own hardware." - Alan Kay
 

Offline casper.bangTopic starter

  • Frequent Contributor
  • **
  • Posts: 311
  • Country: dk
  • Pro SE, amateur EE.
    • BangBits
Re: Easy and small Linux ARM platform?
« Reply #5 on: August 21, 2014, 03:18:16 pm »
If you want to learn about low-level systems programming then do some low-level systems programming. Installing a *nix on an ARM board is more of an exercise in integration and tool use.  Of course that may be what you're actually wanting to do.

I hear what you are saying. However, with constraints comes focus. I don't need NUMA, hyperthreaded, out-of-order uber-complex CISC stuff topped up with MMX, SSE, SSE2, AVX, AVX2, FMA... you get the idea! ;)
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: Easy and small Linux ARM platform?
« Reply #6 on: August 21, 2014, 03:18:32 pm »


Quote
Main features

CPU Atmel AT91SAM9G25 SoC (ARM9 @ 400Mhz)
DDR2 Ram 128 or 256 MByte
Power supply: single 3.3 Volt DC
Line levels: TTL 3.3V (NOT 5V tolerant)
Operative temperature range:
ARIETTA-G25 (128MByte RAM): -20 +70 °C
ARIETTA-G25-256 (256MByte RAM): -0 +70 °C
PCB layers: 8
RoHS and REACH compliant. Low EMI
Availability: > 5 years
Designed and Made in Italy
Exposed signals and external devices

J4 Placement for a 20x2 pins connector pitch 2.54mm (100 mils) (pinout):
1 full-speed usb host
1 hi-speed host/device (same port lines used for the microUSB port)
1 hi-speed host (same lines used for the WiFi adpter)
UART lines: 3 ports
I2C bus lines: 2 bus
SPI bus lines: 1 bus with up to 3 chip select (5 to 50 MHz)
PWM lines: 4 lines
A/D converters lines: 4 channels@10 bit
SSC/I2S interface for audio soc
No video or TFT output but the SPI bus can be used for small TFT display and I2C bus for small alphanumeric LCD
No direct LAN interface but the USB ports can be used with USB to LAN adapter
DP placements for a 6 pin male strip pitch 2.54 (100 mils) with the Debug Port Interface lines
Placement for IEE802.11 b/g/n Wi-Fi module WiFi USB adapter
Push-push type holder for bootable microSD (up to 64GB) with Linux pre-installed
microUSB connector to plug the Arietta to your PC and access to the internal Linux with and emulated LAN port over USB (USB gadget)
User configurable led on board
User configurable push button on board


It may be you can be interested about things like this (Arietta, made by ACME-System)
 

Offline bwat

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: se
    • My website
Re: Easy and small Linux ARM platform?
« Reply #7 on: August 21, 2014, 04:00:39 pm »
If you want to learn about low-level systems programming then do some low-level systems programming. Installing a *nix on an ARM board is more of an exercise in integration and tool use.  Of course that may be what you're actually wanting to do.

I hear what you are saying. However, with constraints comes focus. I don't need NUMA, hyperthreaded, out-of-order uber-complex CISC stuff topped up with MMX, SSE, SSE2, AVX, AVX2, FMA... you get the idea! ;)

What I meant was more along the lines of installing Linux on a platform isn't really that interesting (and I rarely understand why a multiuser OS is used for embedded systems) but I would definitely say go for ARM development if you want to do low-level programming. I've had only good experiences with driver development with ARM platforms (smartphone products using Symbian OS). If I were you I would write my own kernel as it would force me to figure out how to bootstrap software on the platform, handle interrupts, and I would have to configure timers and other hardware to get something useful. I usually port my kernel to new platforms to figure out the lie of the land.
"Who said that you should improve programming skills only at the workplace? Is the workplace even suitable for cultural improvement of any kind?" - Christophe Thibaut

"People who are really serious about software should make their own hardware." - Alan Kay
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Easy and small Linux ARM platform?
« Reply #8 on: August 21, 2014, 05:17:16 pm »
Quote
but the toolchain and driver story is a nightmare - Chinese vendors do not understand that using copyleft software also require them to disclose their stuff under the same license!

Maybe you will have better luck with Google (Chromecast) or Roku - those devices are not expensive, particularly on the used market, and those companies are US-based so maybe they are better positioned to help you.
================================
https://dannyelectronics.wordpress.com/
 

Offline legacy

  • Super Contributor
  • ***
  • !
  • Posts: 4415
  • Country: ch
Re: Easy and small Linux ARM platform?
« Reply #9 on: August 21, 2014, 05:18:13 pm »
Also this GNUBLIN tiny board in DIP40 package, it's very cheap and very easy ARM chip able to run linux.

 

Offline andersm

  • Super Contributor
  • ***
  • Posts: 1198
  • Country: fi
Re: Easy and small Linux ARM platform?
« Reply #10 on: August 21, 2014, 05:24:31 pm »
Atmel's SAMA5D3 Xplained is a nice and relatively inexpensive Cortex-A5 based board, but it doesn't have the community of the RPi, BeagleBoards or similar.

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #11 on: August 22, 2014, 01:08:53 am »
For development work, the BBB is a good choice.  Here's why I would choose this (well, why I have chosen this) over the RPi...

(Some of this assumes you might want to grow into your own product.  If not, it may not apply.)

- It's popular enough that it has a community, and a few distros ready-to-go.  A baseline is very nice so you aren't forced to start at zero.
- The hardware design is open.  You can take the design files, modify them, and produce a product without any concern.  TI / BB endorse this path.
- The software is less encumbered by binary blobs.  IIRC, you still need one for OpenGL (I think), but 2D is doable with OSS.  This may or may not concern you.
- The CPU is available in single quantities.  No need for NDAs.  No need to stack SMD packages on each other.  You get the parts manifest for free, and can duplicate it or examine the datasheets as required for your purposes.
- It's faster.  Not by an enormous margin, and certainly not compared to a PC or late mobile phone, but it helps.  (Compiling X on Gentoo was an exercise in patience.  Recommend cross-compiling what you can.)
- In general, it seems to be a more solid device.  Ethernet and USB are implemented fairly well.  You get on-board flash and SD-based storage to choose from.
- Cost, after including the req'd SD card for a Pi, is about the same.  OTOH, you will need a mini-HDMI cable if you don't already have one lying around.

If you're interested in developing multimedia (read: video) projects, go with the Pi.  For audio only, the BBB might be better.  The McASP is a beast with serious potential.  It is nearly wasted on the BBB, but you have access to the registers and a few of the required pins, so you can at least get started before spinning your own reference board.
 

Offline casper.bangTopic starter

  • Frequent Contributor
  • **
  • Posts: 311
  • Country: dk
  • Pro SE, amateur EE.
    • BangBits
Re: Easy and small Linux ARM platform?
« Reply #12 on: August 22, 2014, 04:42:03 am »
Thanks for the feedback guys. I'm very close to ordering a BBB, apart from a small power-envelope (1-2W is low but not anywhere close to the ATTiny stuff I am used to), it seems to be what I need. :)
 

Online David Hess

  • Super Contributor
  • ***
  • Posts: 16547
  • Country: us
  • DavidH
Re: Easy and small Linux ARM platform?
« Reply #13 on: August 22, 2014, 06:35:07 am »
SirNick covered the reasons I would pick the BBB over the Raspberry Pi.  The documentation is better, it is more open, the parts have better availability, and the hardware including the Ethernet interface is better.
 

Offline Laurynas

  • Contributor
  • Posts: 47
  • Country: lt
Re: Easy and small Linux ARM platform?
« Reply #14 on: August 22, 2014, 07:17:52 am »
Check out olimex stuff, they got quite a few interesting boards and their quality is very good.

I have this one:
https://www.olimex.com/wiki/A20-OLinuXino-LIME
 

Offline poida_pie

  • Regular Contributor
  • *
  • Posts: 119
  • Country: au
Re: Easy and small Linux ARM platform?
« Reply #15 on: August 22, 2014, 09:12:22 am »
raspberry pi? no a-d but I am using them for a barcode data acquisition project here at work.
Cheap and well supported by OS's.
 

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #16 on: August 22, 2014, 07:13:05 pm »
Thanks for the feedback guys. I'm very close to ordering a BBB, apart from a small power-envelope (1-2W is low but not anywhere close to the ATTiny stuff I am used to), it seems to be what I need. :)

For sure.  The ATtiny is nowhere close to the CPU that you'll need to run Linux either.  (Not to speak of all the peripherals, like Ethernet and HDMI.)  With great power comes great power demand.  ;)
 

Offline bwat

  • Frequent Contributor
  • **
  • Posts: 278
  • Country: se
    • My website
Re: Easy and small Linux ARM platform?
« Reply #17 on: August 22, 2014, 07:23:29 pm »
Thanks for the feedback guys. I'm very close to ordering a BBB, apart from a small power-envelope (1-2W is low but not anywhere close to the ATTiny stuff I am used to), it seems to be what I need. :)

For sure.  The ATtiny is nowhere close to the CPU that you'll need to run Linux either.  (Not to speak of all the peripherals, like Ethernet and HDMI.)  With great power comes great power demand.  ;)

Reminds me of the following:
Quote
Costs come in different varieties: monetary cost, cost in physical space, and energy cost. In one project I was involved with, my team was chosen over a competing system because (among other reasons) our operating system used less power than the competition! We were referred to as a "half-watt operating system" while the other system weighed in at a hefty three watts. A peculiar way of comparing software, to be sure!

The quote is from POSIX.4 Programming for the Real World by Bill O. Gallmeister, 1995, O'Reilly. The book is recommended - a very enjoyable read and pretty useful too!
"Who said that you should improve programming skills only at the workplace? Is the workplace even suitable for cultural improvement of any kind?" - Christophe Thibaut

"People who are really serious about software should make their own hardware." - Alan Kay
 

Offline dannyf

  • Super Contributor
  • ***
  • Posts: 8221
  • Country: 00
Re: Easy and small Linux ARM platform?
« Reply #18 on: August 22, 2014, 08:28:44 pm »
Quote
A peculiar way of comparing software, to be sure!

Not unusual. There are a lot of peculiar ways to evaluate software. "Low cost" means different things to different people.

================================
https://dannyelectronics.wordpress.com/
 

Offline igendel

  • Frequent Contributor
  • **
  • Posts: 359
  • Country: il
    • It's Every Bit For Itself (Programming & MCU blog)
Re: Easy and small Linux ARM platform?
« Reply #19 on: August 22, 2014, 11:39:26 pm »
Hi, apologies for budging in, but since BBB was mentioned...

I own a BBB which I currently use as a (weak  :)) Ubuntu 12.04 desktop computer, for the children and such. I would like to do some stuff with the GPIO, but the material I found so far about it seems too complex to my noob Linux skills. At this point I'm not asking for much - a simple, slow digital IO will be enough.

Is there a way I missed, to access the BBB GPIO comfortably from, say, Python, or generally as a pseudo-file device? Any information will be greatly appreciated!
Maker projects, tutorials etc. on my Youtube channel: https://www.youtube.com/user/idogendel/
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26755
  • Country: nl
    • NCT Developments
Re: Easy and small Linux ARM platform?
« Reply #20 on: August 23, 2014, 12:01:15 am »
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline igendel

  • Frequent Contributor
  • **
  • Posts: 359
  • Country: il
    • It's Every Bit For Itself (Programming & MCU blog)
Re: Easy and small Linux ARM platform?
« Reply #21 on: August 23, 2014, 01:23:43 am »
Scroll down to around line 450:
http://lxr.free-electrons.com/source/Documentation/gpio.txt?v=2.6.27

Hmm. A little verbose  :) but I'll try to see what I can make of it after I get some sleep. Thanks!
Maker projects, tutorials etc. on my Youtube channel: https://www.youtube.com/user/idogendel/
 

Offline JoeO

  • Frequent Contributor
  • **
  • Posts: 527
  • Country: us
  • I admit to being deplorable
Re: Easy and small Linux ARM platform?
« Reply #22 on: August 23, 2014, 02:25:41 am »
Adafruit has many many tutorials about BBB, RPi and other topics.

https://learn.adafruit.com/
The day Al Gore was born there were 7,000 polar bears on Earth.
Today, only 26,000 remain.
 

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #23 on: August 23, 2014, 03:06:52 am »
Indeed.  Here's result #1 from Google: "BeagleBone Black gpio python"

http://learn.adafruit.com/setting-up-io-python...beaglebone-black/gpio
 

Offline igendel

  • Frequent Contributor
  • **
  • Posts: 359
  • Country: il
    • It's Every Bit For Itself (Programming & MCU blog)
Re: Easy and small Linux ARM platform?
« Reply #24 on: August 23, 2014, 09:06:45 am »
Indeed.  Here's result #1 from Google: "BeagleBone Black gpio python"

http://learn.adafruit.com/setting-up-io-python...beaglebone-black/gpio

Yes, however that's a "black-box" solution, while I prefer to know what is actually happening - I mean, if such a process is absolutely necessary, so be it, but one would think that the developers of the BBB didn't count on Adafruit to provide the GPIO functionality to their average user...
Maker projects, tutorials etc. on my Youtube channel: https://www.youtube.com/user/idogendel/
 

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #25 on: August 26, 2014, 07:15:01 pm »
The processor has registers that can be written to and read from.  Doing this requires low-level access to the CPU, which, in a Linux environment usually means you need a kernel driver (which should be already present in your chosen distribution), and then you need an interface library for your language of choice.

For Python on RaspPi, this is "RPi.GPIO", as seen here:

http://www.raspberrypi.org/learning/quick-reaction-game/

I didn't read much of the Adafruit tutorial when I found the link (because I prefer languages that allow arbitrary white space) and it appears the link is dead now, so I can only assume there wasn't anything Adafruit-specific in the previous tutorial.  Sometimes they write their own libraries when there's no other or better option, but generally they're not big on reinventing wheels.  Regardless, the Raspberry Pi Foundation's tutorial ought to be as official as it gets.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26755
  • Country: nl
    • NCT Developments
Re: Easy and small Linux ARM platform?
« Reply #26 on: August 26, 2014, 08:31:42 pm »
The processor has registers that can be written to and read from.  Doing this requires low-level access to the CPU, which, in a Linux environment usually means you need a kernel driver (which should be already present in your chosen distribution),
Actually you don't have to that. With the mmap function (C) you can access the physical memory space (and thus registers) from an application.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #27 on: August 26, 2014, 10:41:53 pm »
Hm, I thought those regions were already mapped to files in like /sys or something..?  Are they concurrently accessible?  (Haven't done much with mmap at this stage in my dealings with C.)
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26755
  • Country: nl
    • NCT Developments
Re: Easy and small Linux ARM platform?
« Reply #28 on: August 27, 2014, 12:34:21 am »
AFAIK you can write the entire memory using mmap() without any limitations. I have used it before to read some registers in a SoC but my memory is not serving me well at this moment.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline RoadRunner

  • Frequent Contributor
  • **
  • Posts: 378
  • Country: de
Re: Easy and small Linux ARM platform?
« Reply #29 on: August 27, 2014, 06:31:56 am »
i was at same position as you are currently few months back.

and what i learnt , you need
1. community support , it should be huge.
2. open hardware
3. already running distributions. 
4. lots of expansion headers.

so i suggest you to go raspberrypi b+ or beaglebone black.
 

Offline westfw

  • Super Contributor
  • ***
  • Posts: 4196
  • Country: us
Re: Easy and small Linux ARM platform?
« Reply #30 on: August 27, 2014, 08:41:43 am »
 
Quote
ARM + Linux territory. ...
  :
 get some hands on experience with low-level systems programming.

Arguably, once you have linux, you no longer do "low-level systems programming"; you mostly do "linux systems administration."  (And I've been amused to watch beginning arduino users who asked basic programming questions move to Raspberry Pi and start asking basic linux admin questions.)

I guess there are things that are comparatively low-level: writing network daemons or middleware that speaks to sockets and /dev/etc instead of being off in the GUI stratosphere, but it's a lot different than programming an arduino.  (Given an I2C device driver provided to you, you'd still have some effort required to be able to interface a 9DoF sensor array to your high-level SW.)

There COULD be a community of people writing device-driver level firmware for the small linux boards, which is more what I'd consider to be really low level.  But I'm not aware of anything.
 

Offline nctnico

  • Super Contributor
  • ***
  • Posts: 26755
  • Country: nl
    • NCT Developments
Re: Easy and small Linux ARM platform?
« Reply #31 on: August 27, 2014, 11:41:16 am »
Unless it is your goal it is quite tedious work to write devices drivers and put a working Linux distribution together. I went through this process several times. So if you can get a board which already has a good kernel available and a complete Linux environment it is a big plus because you can start doing interesting work.
There are small lies, big lies and then there is what is on the screen of your oscilloscope.
 

Offline mrflibble

  • Super Contributor
  • ***
  • Posts: 2051
  • Country: nl
Re: Easy and small Linux ARM platform?
« Reply #32 on: August 27, 2014, 04:43:40 pm »
Unless it is your goal it is quite tedious work to write devices drivers and put a working Linux distribution together. I went through this process several times.
Yup. In eons past I used to write kernel drivers for projects, but that is indeed quite time consuming. With the introduction of modules development became easier but still took up a nice chunk of time. Implementing it in user space is so much easier. And since there's user space hooks for quite a lot of things these days, user space it is. :)
 

Offline SirNick

  • Frequent Contributor
  • **
  • Posts: 589
Re: Easy and small Linux ARM platform?
« Reply #33 on: August 27, 2014, 09:13:26 pm »
There COULD be a community of people writing device-driver level firmware for the small linux boards, which is more what I'd consider to be really low level.  But I'm not aware of anything.

Well, it's not exactly a buzzing community, but it does exist.  Examples:

I've lurked in a few threads where people discussed hacking device drivers for (e.g.) the BBB to get some peripheral working.  A lot of the peripherals on the CPU require other stuff (e.g., audio, HDMI, etc.) so you have to be willing to hack at the kernel driver level.  Ditto with specialty projects like the community Squeezbox player, or OpenElec.  Even the RasPi forums have a few people moving the X Windows drivers along and whatnot.

Certainly not the bulk of that space though!
 

Offline salfter

  • Contributor
  • Posts: 25
  • Country: us
    • My Blog
Re: Easy and small Linux ARM platform?
« Reply #34 on: September 02, 2014, 05:17:45 am »
There COULD be a community of people writing device-driver level firmware for the small linux boards, which is more what I'd consider to be really low level.  But I'm not aware of anything.

Not all driver development is necessarily tied to embedded systems.  I recently designed and built this 1-Wire/I2C breakout board for the Raspberry Pi, for instance.  To switch a solid-state relay on and off, I included a DS2406 1-Wire addressable switch on-board.  When it came time to write the software for my intended application (a temperature controller for my brewing fridge), I found that there was no driver for the DS2406 in the kernel 1-Wire stack.  (It's supported by owfs, but owfs doesn't support bit-banged 1-Wire on the Raspberry Pi...it's intended to be used with USB 1-Wire interfaces and such.)  I started with another 1-Wire driver (think it was for the DS2413) and modified it to work with the DS2406.  I submitted it for inclusion in the kernel, and it's slated to appear in Linux 3.17.  It'll work not just on the Raspberry Pi, but on every system that can use the kernel 1-Wire stack (which is nearly everything that can run Linux).
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf