Line 46: | Line 46: | ||
|- | |- | ||
| L310 || L2 Cache || l2x0 || X || X || X || || | | L310 || L2 Cache || l2x0 || X || X || X || || | ||
|- | |||
| Nomadik I2C || I2C || nmk-i2c || X || X || X || || | |||
|- | |- | ||
| L138 USB OHCI || USB Host || db8500-musb || || X || X || || | | L138 USB OHCI || USB Host || db8500-musb || || X || X || || |
Revision as of 15:29, 6 December 2013
The Snowball board is a tiny energy-efficient but surprisingly complete development board from Calao Systems. Although the board is discontinued, there are still a good thousand boards in stock. In Europe these boards can be obtained (with a minimum order of 5 pieces) for around €40,= including shipping, making them an interesting alternative to the Raspberry Pi. With a dual-core ARM Cortex A9 processor the processing capabilities can be up to 6 times as high as the RPi.
Some of the boards features: 1GB of RAM, 4GB (SDK) or 8GB(PDK) storage on-board (eMMC), 10/100 ethernet, on-board Wifi-Bluetooth-GPS(full version), HDMI out and several other connectors including audio, uSD, serial console over USB. When the radio functions are not required, it can be powered over a standard USB port, otherwise an external 5V adapter is required.
Purpose of this page
This wiki page documents the work-in-progress on making Linux, and Fedora in particular, run on the Calao Snowball board. In particular this should cover technical documentation and notes about the eMMC flashing tool, the U-boot boot loader and the Linux kernel plus device drivers.
Eventually this work should lead to a single Fedora image that can be uploaded to the eMMC containing a fresh U-boot, a recent kernel containing many OSS drivers and a user-space useful and expandable in the Fedora fashion. Reaching this final goal depends on the redistributability of the boot-loader binaries provided by ST-Ericsson, which I currently treat as a later concern. If no complete image could be provided due to licensing constraints, at least we should aim for good installation instructions.
Riff
The Snowball board contains an embedded 8GB MMC chip, or eMMC, that off-the-shelve contains several first-stage bootloader binaries, U-Boot 2009.11, and a Linaro 11.09 installation. The eMMC can be overwritten either from inside the system, or externally through a USB cable using the Riff tool.
Compilation is a bit painful by default, because the tool is abandoned and designed with a different distro in mind. Specific problems include expectations on the filenames for Xalan-j2, a seemingly non-working install make target and poor instructions in the README files.
U-Boot
U-boot is situated on the eMMC at offset 0x120000. Riff can be used to write a new build of the bootloader to this address. The size of U-boot is stored in a 4-byte integer at 0x200a4. Upstream U-Boot can be used on the Snowball board, but loading a kernel from the eMMC does not work due to a regression introduced in:
e95504497ecac46907204b0ee3460b708a2981ac mmc: Split device init to decouple OCR-polling delay
Reverting this commit makes U-boot work. By default the upstream U-boot has no support for Device Tree or network boot. The latter is supported by the preloaded image.
Kernel and drivers
Component | Purpose | Module | Works | Upstream kernel | FDT | Firmware required? | Notes |
---|---|---|---|---|---|---|---|
U8500 | CPU | dbx500-cpufreq | - | X | X | loop delay calibration fails, boot with lpj=7970816 | |
pmu-a9 | X | X | X | ||||
DMA | dma40 | X | X | ? | |||
AMBA SSP | ssp-pl022 | X | X | ? | |||
AB8500 RTC | Real-time clock | rtc-ab8500 | X | X | |||
AB8500 | Thermal sensor | ab8500 | X | X | |||
UART | Serial port | amba-pl011 | X | X | |||
L310 | L2 Cache | l2x0 | X | X | X | ||
Nomadik I2C | I2C | nmk-i2c | X | X | X | ||
L138 USB OHCI | USB Host | db8500-musb | X | X | |||
ARM Mali | GPU | lima | No DRM driver yet | ||||
AV8100 | HDMI output | av8100_hdmi | X | Needs port to DRM | |||
? | CVBS output | ||||||
PL180 | (e)MMC | mmci | X | X | |||
SMC9115 | Ethernet | smc911x | X | X | Odd MMIO layout, register location shifted
Powered on by U-Boot | ||
CW1200 | Wifi | cw1200 | X | X | GPIO 170 powers it on | ||
CG2900 | Bluetooth+GPS | cg2900 | |||||
MOP500 | Audio | snd-soc-mop500 | X | X | |||
LP5521 | LED driver | ||||||
LSM 303DLH | Accelerometer/Magnometer | - |
This wiki page has a lot more info on the "smaller" devices on this board (sensors, GPIO ports, LED drivers..)