| 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. |