158 lines
4.4 KiB
Plaintext
158 lines
4.4 KiB
Plaintext
|
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 arrow_sockit_defconfig configuration is a minimal configuration with
|
||
|
all that is required to bring the SoCkit :
|
||
|
|
||
|
$ make arrow_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.
|