Skip to content

Bubblegum Getting Started Guide

Scott Bambrough edited this page Jul 20, 2015 · 2 revisions

96Boards Bubblegum-96

Getting Started

This document describes how to get started with the Bubblegum-96 96Board community development board.

The following information is provided in these release notes:

  1. Using the Bubblegum-96 Board
    Information on using the Bubblegum-96 board and the Debian 8.0 ("Jessie") OS software on the Bubblegum-96 board.
  2. Updating Debian on the Bubblegum-96
    Information on updating Debian 8.0 on the Bubblegum-96 board.
  3. Board Recovery
    Information on board recovery and loading a bootloader onto the Bubblegum-96 board.
  4. Hardware notes
  5. Known Issues
  6. Building Software from Source Code
    Information on building software for the Bubblegum-96 board from source code.
  7. Appendices
    Information on the partition table used on Bubblegum-96 and the contents of the boot partition.

1. Using the Bubblegum-96 Board

To get started you will need a power supply, a USB ethernet adapter and a USB keyboard and mouse.

IMPORTANT NOTES

At present the following interfaces are not supported. A future software update will introduce support for these devices:

  • HDMI port
  • WiFi and Bluetooth
  • microSD card

Power Supply

The Bubblegum-96 board requires an external power supply providing 12V at 2A. (The board will also work with 9V or 15V power supplies). It is not possible to power the board from a USB power supply because the board can use more power than is available from a standard USB power supply. The Bubblegum-96 board uses a standard DC barrel jack with a 1.7mm barrel, center pin positive. An adapter cable is required to use power supplies with 2.1mm barrel jacks.

Suggested power solutions and adapters can be found here.

Powering up the Board

Link 1-2 causes Bubblegum-96 to auto-power up when power is applied. Links 3-4 should be not fitted (open). If Link 1-2 is not installed then the back edge push button switch near the power jack is used to power on the Bubblegum-96 board. Make sure a cable is NOT connected between the front side microUSB port (next to the HDMI port) and a PC as this will cause the board to start up in fastboot mode.

To use the Bubblegum-96 board without HDMI you will need to connect to a UART. The console comes up to UART1 on the Low Speed Expansion Connector. A small mezzanine UART-USB card is available to enable direct connection to a PC. Be careful to install the board the right way round - the microUSB port should be pointing to the back of the Bubblegum-96 board (the same side as the power supply barrel jack). Alternatively you can use an FTDI cable configured for 1.8V operation terminated in wires and directly connect the UART Tx, Rx and GND wires to pins 1, 11 and 13 on the 96Boards low speed expansion header.

Connect the UART-USB card microUSB port or FTDI cable to your PC and start up a terminal program (e.g. minicom). Configure the PC serial port to be 115200 baud, 8 data bits, 1 stop bit, and no parity bit. About 10 seconds after applying power the right hand green User LED0 will start flashing about once per second. The next User LED1 is used as a disk indicator showing access to the on-board eMMC flash memory. Startup console messages will appear on the minicom terminal until the root login prompt is shown.

Wired Network

You can connect to a wired network by using a USB Ethernet adapter. Network is automatically configured using DHCP if the USB Ethernet adapter is present.

Other Useful Information

1. Updating and Adding Software

Before adding any software to your system you must do an update as follows:

$ sudo apt-get update

You can now add Debian packages to your system:

$ sudo apt-get install [package-name]

You can search for available packages here: https://www.debian.org/distrib/packages

Search the stable distribution for packages for the Bubblegum-96.

2. File Systems

The following is the default file system layout for Bubblegum-96 running Linux:

/dev/mmcblk0p9  5.3G  820M  4.5G  16% /    main user space file system

3. Logging in

The default user name is "linaro" and the default password for user linaro is "linaro".

4. Clock

The Bubblegum-96 board does not support a battery powered RTC. System time will be obtained from the network if available. If you are not connecting to a network you will need to manually set the date and time on each power up.

5. System and User LEDS

Each board led has a directory in /sys/class/leds. By default the LEDs use the following triggers:

LED Trigger
wifi_active phy0tx
bt_active hci0tx
user_led1 heartbeat
user_led2 mmc0 disk access
user_led3 mmc1 disk access (not used)
user_led4 CPU core 0 active (not used)

To change a user LED you can do the following as a root user:

$ su bash
# echo heartbeat > /sys/class/leds/<led_dir>/trigger      make a LED flash
# cat /sys/class/leds/<led_dir>/trigger                   show triggers
# echo none > /sys/class/leds/<led_dir>/trigger           remove triggers    
# echo 1 > /sys/class/leds/<led_dir>/brightness           turn LED on
# echo 0 > /sys/class/leds/<led_dir>/brightness           turn LED off
# exit
$

2. Updating Debian on the Bubblegum-96

Updates to 96Boards supported operating systems will be made available from time to time at:
http://builds.96boards.org/snapshots/Bubblegum-96/linaro/debian

IMPORTANT NOTE:
The installation process will overwrite all contents of the eMMC memory. This will remove all installed software and all user files. Before updating the OS make sure that you have saved any user files or data that you want to keep onto a USB memory stick or other storage device.

To install updates you will need a Linux PC with fastboot support. For information on installing and setting up fastboot on your Linux PC see Section 3: Board Recovery - Installing Fastboot on your Linux PC below.

Once fastboot is installed on the Linux PC proceed as follows:

Download the following files from:
http://builds.96boards.org/snapshots/Bubblegum-96/linaro/debian/latest

  • pxa1928-Bubblegum-96.dtb
  • boot.emmc.img.gz
  • Bubblegum-96-jessie_developer_-n.emmc.img.gz

Uncompress the *.img.gz files using your operating system file manager, or with the following command for each file:

$ gunzip [filename].img.gz

The bootloader will enter fastboot automatically when a USB connection is detected during boot.

Power on the Bubblegum-96 board and verify communications from the Linux PC:

$ sudo fastboot devices
???????????????? fastboot

Then install the update using the downloaded files:

Note: The small files will download very quickly, the larger system file will take much longer (several minutes) due to its size.

$ sudo fastboot flash boot boot.emmc.img
$ sudo fastboot flash dtb pxa1928-Bubblegum-96.dtb
$ sudo fastboot flash userdata Bubblegum-96-jessie_developer_*.emmc.img

When flashing is completed, continue the boot with:

$ sudo fastboot continue

Please read the Hardware notes and the Known Issues later in this document before using the OS.

3. Board Recovery

Installing FastBoot on a Linux PC

You will need the fastboot application installed on your Linux PC – if this is not installed use the following commands

$ sudo apt-get install android-tools-fastboot      On Debian/Ubuntu
$ sudo yum install android-tools                   On Fedora

Either create the file: /etc/udev/rules.d/51-android.rules with the following content, or append the content to the file if it already exists. You will need to have superuser privileges so use

$ sudo vi /etc/udev/rules.d/51-android.rules       or 
$ sudo gedit /etc/udev/rules.d/51-android.rules

to create and edit the file. Add the following to the file.

# USB download gadget on Marvell PXA1928 Bubblegum-96
SUBSYSTEM=="usb", ATTR{idVendor}=="0451", ATTR{idProduct}=="d022", MODE="0600", GROUP="dialout"
# Ethernet gadget on Marvell PXA1928 Bubblegum-96
SUBSYSTEM=="usb", ATTR{idVendor}=="0525", ATTR{idProduct}=="a4a1", MODE="0600", GROUP="dialout"
# TD2 on Marvell PXA1928 Bubblegum-96
SUBSYSTEM=="usb", ATTR{idVendor}=="1286", ATTR{idProduct}=="8165", MODE="0600", GROUP="dialout"

Installing a Bootloader

If fastboot is functioning, then fastboot can be used to update the bootloader. Download the following file:

Then update the Bootloader:

$ sudo fastboot flash bootloader u-boot.bin

For most users a board can be “recovered” from a software failure by reloading the operating system using the instructions provided above. However, if the primary bootloader in the eMMC flash memory has been corrupted then the bootloader will need to be re-installed. This requires a proprietary flashing tool presently only available from Marvell. Please contact your Marvell local support for the tool which will be supplied as a single file: marvell-flashtool.tgz. This section describes how to reinstall the primary bootloader.

Set Board Link options

For flashing the bootloader (u-boot) with the Marvell flashing tool, a jumper must be installed on link 3-4 of J15.

Name Link State
Auto Power up Link 1-2 open or closed
Boot Select Link 3-4 closed
GPIO_8 Link 5-6 open or closed

Link 1-2 causes Bubblegum-96 to auto-power up when power the power connector is inserted into the barrel jack. If link 1-2 is not closed, it will be necessary to power press the power button on the long side of the board near the barrel jack to get the board to boot.

Link 3-4 causes the PXA1928 SoC internal ROM to start up in bootROM USB download mode which will allow installing a supplied bootloader over the microUSB OTG port into eMMC.

Prepare a standard microUSB to USB connector between the Bubblegum-96 microUSB port and your Linux PC but do not plug it in yet.

Preparing the Flash Tool

Once you have obtained marvell-flashtool.tgz from Marvell then do the following on your local system:

$ tar -xzf marvell-flashtool.tgz
$ cd marvell-flashtool

To flash u-boot (u-boot.bin downloaded as above) to the Bubblegum-96 run:

$ sudo ./flash.sh <path to u-boot.bin>

If you get an "expect: not found" error then install the expect package:

$ sudo apt-get install expect

Note if this does not work you will need to review the README file in the directory and follow the manual steps, including building the kernel module. Please contact Marvell support if you require assistance.

When prompted to connect, power on the board by connecting the power supply to the barrel jack. If there is no jumper on link 1-2 of J15, then you may also have to press the power button near the barrel jack to get the Bubblegum-96 board to start up. Then plug the microUSB end of the cable into the Bubblegum-96 port next to the HDMI port and the USB Type A plug into your PC.

The script will automatically install the bootloader. Once this has been completed the bootloader has been installed into eMMC.
Power off the Bubblegum-96 board by disconnecting the power supply from the barrel jack.

Next change the link configuration as follows:

  1. Remove the jumper from link 3-4 so the Bubblegum-96 board will boot from the newly installed bootloader in eMMC.
  2. Leave the USB cable connected between your Linux PC and the micro-USB port. The Bubblegum-96 will automatically boot up into fastboot mode.

Now power up the Bubblegum-96 board again.

Check that the Bubblegum-96 board is detected by your Linux PC:
You should see the ID of the Bubblegum-96 board returned

$ sudo fastboot devices
???????????????? fastboot

Your bootloader has been successfully installed and you are now ready to install the operating system into the eMMC flash memory (see Section 2: Updating Debian on the Bubblegum-96, above).

4. Hardware Notes

Schematics and Bubblegum-96 Board Hardware User Guide

  • Schematics - Please contact Linaro or Marvell for schematics prior to the ArmadaBoard 28 release
  • Hardware User Guide is not yet available

HDMI Port

At present the HDMI port is not supported. We expect a future software update to support EDID and setting of alternate video modes for the display.

USB Ports

There are multiple USB ports on the Bubblegum-96 board:

  • One microUSB OTG port on the front edge of the board
  • Two Type A USB 2.0 host ports on the front edge of the board
  • One USB 2.0 host port on the high-speed expansion bus

UART Ports

The 96Boards UARTs are mapped as follows. They are configured at 115200 baud by default. The kernel console defaults to /dev/ttyS3.

Board UART location Linux tty device
Debug 2x2 2mm header UART /dev/ttyS0
Bluetooth UART /dev/ttyS1
LS Expansion UART0 /dev/ttyS2
LS Expansion UART1 /dev/ttyS3

Note that the LS expansion port I/O pins on the 96Boards 2mm header, including the UART signals, are at 1.8V levels.

5. Known Issues

The following are known software issues on the current release.

  1. Not Yet Supported
    • SD card slot support. Support for the SD card slot available in u-boot, but not in Linux 4.1.
    • HDMI video displays. Console access is only available via serial terminal or SSH.
    • HDMI and Expansion bus audio.
    • WiFi & Bluetooth wireless interfaces.
  2. Unique Serial ID
    Support for a serial id is missing in u-boot. This causes the fastboot devices command to return "????????????".
  3. Need better UMS support
    Need to allow for setting fs-types for better ums support. Can't mount with usb mass storage gadget.
  4. TFTP is broken
    Ethernet gadget is detected but timeout with ERROR: The remote end did not respond in time.

6. Building Software from Source Code

To build a kernel using a Linux computer use the following instructions. These assume that you have a good level of knowledge in building Linux kernels.

The Bubblegum-96 kernel sources for now are located at: https://git.linaro.org/people/rob.herring/linux.git

To build a kernel, make sure you have an AArch64 cross-toolchain installed on your linux computer, and configured to cross compile to ARMv8 code. For example, Linaro GCC 4.9:

$ wget http://releases.linaro.org/15.02/components/toolchain/binaries/aarch64-linux-gnu/\
>  gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz
$ mkdir ~/arm64-tc/bin
$ tar --strip-components=1 -C ~/arm64-tc/bin -xf gcc-linaro-4.9-2015.02-3-x86_64_aarch64-linux-gnu.tar.xz
$ export PATH=~/arm64-tc/bin:$PATH

Note: the toolchain binaries are for a 32 bit host system. On Debian/Ubuntu, you should install multiarch-support and enabled i386 architecture. On Fedora, you should install glibc.i686 package.

The following instructions can then be used to build the kernel:

Git clone the source code tree:

$ git clone --depth 1 -b v4.1-pxa1928 https://git.linaro.org/people/rob.herring/linux.git

To build the kernel:

$ cd linux
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- pxa1928_defconfig 
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j$(getconf _NPROCESSORS_ONLN) Image dtb modules

Note: if you make ANY of your own changes to the tagged tree your built kernel will be named 4.1.0-linaro-Bubblegum-96+ (use uname -a to see the kernel name). This means that the installed kernel modules in /lib/modules will not work correctly unless you install a new set of kernel modules in /lib/modules from your kernel build.

Source for Debian 8.0 Jessie rootfs build

We pull all the packages from Debian official repository.

Appendix 1: Partition Information

Table 1 describes the partition layout on the Bubblegum-96 eMMC.

Number  Start (sector)    End (sector)  Size       Code  Name
   1            4096            8191   2.0 MiB     0700  DTIM
   2            8192           30719   11.0 MiB    0700  recovery
   3           30720           32767   1024.0 KiB  0700  bootloader
   4           32768           65535   16.0 MiB    0700  boot
   5           65536           98303   16.0 MiB    0700  dtb
   6           98304         1671167   768.0 MiB   0700  system
   7         1671168         2195455   256.0 MiB   0700  vendor
   8         2195456         3244031   512.0 MiB   0700  cache
   9         3244032        14680063   5.5 GiB     0700  userdata

Table 1: Bubblegum-96 Partitions

Note1: Kernel build image: arch/arm64/boot/Image
Note2: DTB: arch/arm64/boot/dts/marvell/pxa1928-Bubblegum-96.dtb