SoCkit

Intro
=====

This is the buildroot board support for the Arrow SoCkit Evaluation Board.

A good source of information is :
http://www.rocketboards.org/foswiki/Documentation/ArrowSoCKitEvaluationBoard

How it works
============

Boot process :
--------------

In summary, the bootloader has multiple stages, an hardcoded boot routine is
loaded from an on-chip ROM.

  - That first stage is scanning the SD card's partition table to find
    partition having the 0xA2 type.
  - This partition is expected to contain a boot image on its first 60 Kb,
    because u-boot is bigger, we must fill it with a preloader (u-boot-spl)
    which will load the u-boot image.
  - Then the u-boot image will load the Linux kernel.

A good source of information for the boot process is :
http://xillybus.com/tutorials/u-boot-image-altera-soc

Note for the SPL :
The SPL generated by the u-boot from Rocketboards doesn't seems to work,
therefore we provide a patch for {uboot-PKG}/board/altera/socfpga_cyclone5/*
based on the files generated with the Altera example design.

For more information about this files please look at :
http://www.rocketboards.org/foswiki/Documentation/PreloaderUbootCustomization#Common_Source_Code

How to build it
===============

Configure Buildroot
-------------------

The altera_sockit_defconfig configuration is a minimal configuration with
all that is required to bring the SoCkit :

  $ make altera_sockit_defconfig

Build everything
----------------

Note: you will need to have access to the network, since Buildroot will
download the packages' sources.

  $ make

Result of the build
-------------------

After building, you should obtain this tree:

    output/images/
    ├── rootfs.ext2
    ├── rootfs.ext3 -> rootfs.ext2
    ├── rootfs.tar
    ├── socfpga_cyclone5_sockit.dtb
    ├── socfpga.dtb
    ├── u-boot.img
    ├── u-boot-spl.bin
    └── uImage


Signing the Preloader
---------------------

*** BEWARE ****
The u-boot-spl.bin must be signed using the Altera's tool "mkpimage".
This tool comes as a part of the Altera development environnment (SoC EDS).
A fork of this tool have been done by Maxime Hadjinlian and can be found here :
https://github.com/maximeh/mkpimage

Remember that without signing the u-boot-spl.bin, the board will not boot !!!

  $ mkpimage u-boot-spl.bin -o u-boot-spl-signed.bin

Prepare your SDcard
===================

A good source of information for the partitioning process is :
http://www.rocketboards.org/foswiki/view/Projects/SoCKitLinaroLinuxDesktop#Partition_the_SD_Card

Create the SDcard partition table
----------------------------------

Determine the device associated to the SD card :

  $ cat /proc/partitions

let's assume it is /dev/mmcblk0 :

  $ sudo fdisk /dev/mmcblk0

Delete all previous partitions with 'd' then create the new partition table,
using these options, pressing enter after each one:

  * n p 1 9000000 +20480K t 1 b
  * n p 2 4096 +4496384K t 83
  * n p 3 2048 +1024K t 3 a2

Using the 'p' option, the SD card's partition must look like this :

Device         Boot     Start       End  Blocks  Id System
/dev/mmcblk0p1        9000000   9041919   20960   b W95 FAT32
/dev/mmcblk0p2           4096   8996863 4496384  83 Linux
/dev/mmcblk0p3           2048      4095    1024  a2 Unknown

Then write the partition table using 'w' and exit.

Make partition one a DOS partition :

  $ sudo mkdosfs /dev/mmcblk0p1

Install the binaries to the SDcard
----------------------------------

Remember your binaries are located in output/images/, go inside that directory :

  $ cd output/images

The partition with type a2 is the partition scan by the first bootloader stage
in the SoCkit ROM to find the next bootloader stage so we must write the signed
preloader and the u-boot binaries in that partition :

  $ sudo dd if=u-boot-spl-signed.bin of=/dev/mmcblk0p3 bs=64k seek=0
  $ sudo dd if=u-boot.img of=/dev/mmcblk0p3 bs=64k seek=4

Copy the Linux kernel and its Device tree :

  $ sudo mkdir /mnt/sdcard
  $ sudo mount /dev/mmcblk0p1 /mnt/sdcard
  $ sudo cp socfpga.dtb uImage /mnt/sdcard
  $ sudo umount /mnt/sdcard

Copy the rootfs :

  $ sudo dd if=rootfs.ext2 of=/dev/mmcblk0p2 bs=64k
  $ sudo sync

It's Done!

Finish
======

Eject your SDcard, insert it in your SoCkit, and power it up.

if you want a serial console, you can plug a micro B USB cable on the USB-UART
port, the serial port config to used is 57600/8-N-1.
