You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

.At the moment [09.01.2020] it is not fully understood which files are necessary
to boot a Linux or an bare metal application onto the HPS of a Cyclone 5 / 10 or Aria chip
Every detail which not fully clear will be emphasized as questionable.

Requirements


All steps to format / setup a bootable SD card can only be performed within a Linux.

Background


The boot process of the HPS consists of several stages:

  • Boot ROM
     - Hard coded into the chip
     - It's purpose is to detect the selected boot source
     - Perform minimal Setup of the HPS
     - Load the next Boot stage [Preloader / u-boot-spl] into the On chip RAM [OCRAM]
        therefore the preloader / SPL u-boot is limited to 64 kByte on Cyclone 5 devices

  • Preloader
     - Perform additional HPS initialization
     - Bring up SDRAM
     - Load the next boot stage from Flash to SDRAM and jump to it
     - Preloader-optins:
            u-boot - SPL
            SoC EDS - MPL [Altera bare-metal libraries - HWLibs]
     - For Cyclone 5 devices, the preloader consists of 4 identical copies. each 64 kB in size,
        256 kb in total
  • Main Bootloader
     - Load Linux [u-boot] or Bare Metal Application into the RAM
     - Jump to it



Partitions within the SD card


The SD card can be partitioned or not, a partitioned SD card offers the advantage of a separation / persistent data storage.
Partitions of the SD card:

Partition                     Required for                                Size
W95 FAT32 (LBA)       Kernel and Device Tree Blob       > 20 MB
Linux ext(2/3 or 4)     Linux Distribution                        > 150 MB to 2 GB
Altera / a2                 SPL u-boot and Main u-boot      >= 1 or 2 MB


The first partition need to be the vFat partition, best practice: vFat, Linux and a2 partition


Unknown - partition for u-boot config script (uboot.scr)
vfat-partition:          optional - Linux-Config-Script / main u-boot instead a2-partition


Format the SD card


To partition the SD card, Linux offers the command line tool fdisk [sfdisk].
        BEWARE!    fdisk can operate on every disk within the system and does not ask for approval.


Identify your SD card

Inserd the Sd card into the system, start a console [Ctrl + Alt + t] and type:
     lsblk → list the disks conected to the system / Get SD-card-path

Example output:
NAME  MAJ:MIN  RM      SIZE  RO   TYPE    MOUNTPOINT
sda            8:0         0     120G     0    disk
├─sda1     8:1         0     112G     0    part /
├─sda2     8:2         0         1K     0    part
└─sda5     8:5         0         8G    0     part   [SWAP]
sdc            8:32       1       7,2G    0    disk
└─sdc1     8:33       1         1M    0    part
sr0           11:0         1   1024M    0   rom

RM = Removable ? → sdc is the sd card


Format the card - Manual approach:

To format the card, start the tool fdisk by typing:
     sudo fdisk /dev/sdc    ->    sudo=grant root, enter password    fdisk=tool   /dev/...=SD card
The command promt changes to Command (m for help)

Type p to list all existing partitions.
Type d to erase a partition.
Type n to edit a new partition.
Type t to set the partition type (default is Linux / 83).

Output for p:    For convenience, the partition table listed is the one which the SD card needs to be setup to
                         Sizes may vary

Disk /dev/sdc: 7740 MB, 7740588032 bytes
239 heads, 62 sectors/track, 1020 cylinders, total 15118336 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x982b3f12

Device         Boot       Start          End             Blocks         Id            System
/dev/sdc1                  2048          616448       307200+     c             (W95 FAT32 (LBA))
/dev/sdc2                  616449      3074049     1228800+   83           Linux
/dev/sdc3                  3074050    3094530     10240+       a2           Unknown



Step 1: Erase all partitions → Type d and select a partition number to delete or go with the suggested one
            Repeat for all partitions

Step 2: Create a partition → Type n.
            One can type in all required values by hand, but the tool offers usefull values by default.
            To accept them, yout press enter.

            Partition type → Select p   ;    Partition number → Enter   ;   First sector → Enter
            Last sector → +size{K,M,G} / example: 20 MB partition →  +20M

Step 3: Set partition type → Type t
            c=(W95 FAT32 (LBA))    a2=Altera boot partition   83=Linux, default value

Step 4: Repeat step 2 and 3 until all partitions are edited

Step 5: Write the new table to th SD card → Type w

Step 6: Close programm → Type q


Format the card - Automated approach:

Copy to a textfile and save

unit: sectors

/dev/sdb1 : start= 2048, size= 204800, Id= c /dev/sdb2 : start= 206848, size= 4096000, Id=83 /dev/sdb3 : start= 4302848, size= 4096, Id=a2 /dev/sdb4 : start= 0, size= 0, Id= 0




unmount

run fsdisk



Data of each partition


sudo mkfs -t vfat /dev/sdX-nummer

sudo mkfs.ext3 /dev/sdX-nummer



vFat zimage and dtb


a2, nur sd card angeben, keine partition, wird selbsttätig gesucht
sudo ~/intelFPGA/19.1/embedded/host_tools/altera/diskutils/alt-boot-disk-util -p preloader-mkpimage.bin -b u-boot.img -a write /dev/sdb


sudo tar -xvf ~/Desktop/arrow-sockit/arrow-sockit-console-image-minimal-arrow-sockit-20191121221211.rootfs.tar.gz -C /mnt/card/





2 Weitere Partitionene erstellen:
Fat32 / VFat ~ 29152 Sectoren / 24576 Blocks groß
- Command (m for help): n, p, 3, "Enter", +29576
- Command (m for help): t=table, c (W95 FAT32 (LBA))
- Command (m for help): a=active, 3

Ext4 ~ 2097152 Sectoren / 1048576 Blocks
- ....
- Nicht nötig, per default als "83" / Linux markiert

Im Ergrbnis erhält man diese Partitionstabelle:
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sdc1 * 8 42605 21299 c W95 FAT32 (LBA)
/dev/sdc2 42608 44655 1024 a2 Unknown
/dev/sdc3 44656 3454691 1705018 83 Linux
SPEICHERN der Tabelle mittels:
Command (m for help): w

Dateisystem der 2ten und 3ten Partion erzeugen:
de-10@de10-VirtualBox:~$ sudo umount /media/user/Partitions-Name
sudo mkfs -t vfat /dev/sdxp3
sudo mkfs.ext4 /dev/ldx2p2
Möglicherweise nochmal ummounten



PRE-Loader mit inkludiertem Haupt-Boot-Loader installieren / kopieren:
sudo dd if=/home/de-10/Desktop/deployA19.01/u-boot-arrow-sockit-v2019.04+gitAUTOINC+bc38a09daa-r0.sfp of=/dev/sdf1 seek=0


Damit kann der Preloader den U-Boot-bootloader laden und
danack kann wiederum von der Fat-Partition der DTB (Device Tree Blob)
sowie der Linux-kernel zImage geladen werden.








  • No labels