This is an old revision of the document!
Now, depending if you are using Linux or Windows, follow these instructions to write the file to your SD card.
$ git clone https://github.com/analogdevicesinc/linux.git $ cd linux /linux$ export ARCH=arm /linux$ export CROSS_COMPILE=/path/to/your/arm/cross-compiler /linux$ make socfpga_adi_defconfig /linux$ make zImage -j4 /linux$ make socfpga_arria10_socdk_adrv9371.dtb
$ cd ~/Workspace/hdl/projects/adrv9371x/a10soc
$ make
$ quartus_cpf -c --hps -o bitstream_compression=on ./adrv9371x_a10soc.sof soc_system.rbf
This flow applies starting with release 2021_R1 / Quartus Pro version 20.1. For older versions of the flow see previous versions of this page.
$ cd ~/Workspace/hdl/projects/adrv9371x/a10soc
$ mkdir -p software/bootloader
$ cd software/bootloader $ git clone https://github.com/altera-opensource/u-boot-socfpga.git
$ cd u-boot-socfpga $ ./arch/arm/mach-socfpga/qts-filter-a10.sh ../../../hps_isw_handoff/hps.xml arch/arm/dts/socfpga_arria10_socdk_sdmmc_handoff.h
make socfpga_arria10_defconfig make -j4
$ ln -s ../../../soc_system.core.rbf . $ ln -s ../../../soc_system.periph.rbf . $ tools/mkimage -E -f board/altera/arria10-socdk/fit_spl_fpga.its fit_spl_fpga.itb
$ mkdir extlinux $ echo "LABEL Linux Cyclone V Default" > extlinux/extlinux.conf $ echo " KERNEL ../zImage" >> extlinux/extlinux.conf $ echo " FDT ../socfpga.dtb" >> extlinux/extlinux.conf $ echo " APPEND root=/dev/mmcblk0p2 rw rootwait earlyprintk console=ttyS0,115200n8" >> extlinux/extlinux.conf
dragos@debian:~$ time sudo dd if=2022-07-08-ADI-Kuiper-full.img of=/dev/mmcblk0 bs=4194304 1895+0 records in 1895+0 records out 7948206080 bytes (7.9 GB) copied, 503.909 s, 15.8 MB/s real 8m23.919s user 0m0.020s sys 0m6.376s dragos@debian:~$ sync dragos@debian:~$ sudo fdisk /dev/mmcblk0 Welcome to fdisk (util-linux 2.25.2). Command (m for help): p Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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 Disklabel type: dos Disk identifier: 0x00096174 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 1056767 1048576 2.0G c W95 FAT32 (LBA) /dev/mmcblk0p2 1056768 14497791 13441024 6.4G 83 Linux /dev/mmcblk0p3 14497792 14499839 2048 1M a2 unknown Command (m for help): d Partition number (1-3, default 3): 3 Partition 3 has been deleted. Command (m for help): n Partition type p primary (2 primary, 0 extended, 2 free) e extended (container for logical partitions) Select (default p): p Partition number (3,4, default 3): 3 First sector (2048-31116287, default 2048): 4096 Last sector, +sectors or +size{K,M,G,T,P} (4096-8191, default 8191): +1M Created a new partition 3 of type 'Linux' and of size 1 MiB. Command (m for help): t Partition number (1-3, default 3): 3 Hex code (type L to list all codes): a2 Changed type of partition 'Linux' to 'unknown'. Command (m for help): p Disk /dev/mmcblk0: 14.9 GiB, 15931539456 bytes, 31116288 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 Disklabel type: dos Disk identifier: 0x00096174 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 8192 1056767 1048576 2.0G c W95 FAT32 (LBA) /dev/mmcblk0p2 1056768 14497791 13441024 6.4G 83 Linux /dev/mmcblk0p3 4096 6143 2048 1M a2 unknown Partition table entries are not in disk order. Command (m for help): w The partition table has been altered. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8). dragos@debian:~$ sync dragos@debian:~$ time sudo dd if=uboot_w_dtb-mkpimage.bin of=/dev/mmcblk0p3 2048+0 records in 2048+0 records out 1048576 bytes (1.0 MB) copied, 0.199898 s, 5.2 MB/s real 0m0.206s user 0m0.000s sys 0m0.004s dragos@debian:~$ sync
$ git clone https://github.com/analogdevicesinc/linux.git $ cd linux /linux$ export ARCH=arm /linux$ export CROSS_COMPILE=/path/to/your/arm/cross-compiler /linux$ make socfpga_adi_defconfig /linux$ make zImage -j4 /linux$ make socfpga_cyclone5_sockit_arradio.dtb
$ cd ~/Workspace/hdl/projects/arradio/c5soc
$ make
$ quartus_cpf -c -o bitstream_compression=on ./arradio_c5soc.sof soc_system.rbf
This flow applies starting with release 2021_R1 / Quartus Standard version 20.1. For older versions of the flow see previous versions of this page.
$ cd ~/Workspace/hdl/projects/arradio/c5soc
$ mkdir -p software/bootloader
$ embedded_command_shell.sh bsp-create-settings --type spl --bsp-dir software/bootloader --preloader-settings-dir "hps_isw_handoff/system_bd_sys_hps" --settings software/bootloader/settings.bsp
$ cd software/bootloader $ git clone https://github.com/altera-opensource/u-boot-socfpga.git
$ cd u-boot-socfpga $ ./arch/arm/mach-socfpga/qts-filter.sh cyclone5 ../../../ ../ ./board/altera/cyclone5-socdk/qts/
make socfpga_cyclone5_defconfig make -j4
$ echo "load mmc 0:1 \${loadaddr} soc_system.rbf;" > u-boot.txt $ echo "fpga load 0 \${loadaddr} \$filesize;" >> u-boot.txt $ ./tools/mkimage -A arm -O linux -T script -C none -a 0 -e 0 -n "Cyclone V script" -d u-boot.txt u-boot.scr
$ mkdir extlinux $ echo "LABEL Linux Cyclone V Default" > extlinux/extlinux.conf $ echo " KERNEL ../zImage" >> extlinux/extlinux.conf $ echo " FDT ../socfpga.dtb" >> extlinux/extlinux.conf $ echo " APPEND root=/dev/mmcblk0p2 rw rootwait earlyprintk console=ttyS0,115200n8" >> extlinux/extlinux.conf
CLOCKSEL0 | CLOCKSEL1 | BOOTSEL0 | BOOTSEL1 | BOOTSEL2 | |
---|---|---|---|---|---|
POS | 2-3 | 2-3 | 2-3 | 2-3 | 1-2 |
JP2 |
---|
2.5V or 1.8V |
MSEL0 | MSEL1 | MSEL2 | MSEL3 | MSEL4 | CODEC_SEL | |
---|---|---|---|---|---|---|
POS | 0 | 1 | 0 | 1 | 0 | 0 |
dragos@dragos-debian:~$ sudo fdisk /dev/sdb Command (m for help): p Disk /dev/sdb: 7948 MB, 7948206080 bytes 245 heads, 62 sectors/track, 1021 cylinders, total 15523840 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: 0x00096174 Device Boot Start End Blocks Id System /dev/sdb1 8192 532479 262144 b W95 FAT32 /dev/sdb2 532480 15521791 7494656 83 Linux Command (m for help): n Partition type: p primary (2 primary, 0 extended, 2 free) e extended Select (default p): p Partition number (1-4, default 3): 3 First sector (2048-15523839, default 2048): 15521792 Last sector, +sectors or +size{K,M,G} (15521792-15523839, default 15523839): 15523839 Command (m for help): t Partition number (1-4): 3 Hex code (type L to list codes): a2 Changed system type of partition 3 to a2 (Unknown) Command (m for help): p Disk /dev/sdb: 7948 MB, 7948206080 bytes 245 heads, 62 sectors/track, 1021 cylinders, total 15523840 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: 0x00096174 Device Boot Start End Blocks Id System /dev/sdb1 8192 532479 262144 b W95 FAT32 /dev/sdb2 532480 15521791 7494656 83 Linux /dev/sdb3 15521792 15523839 1024 a2 Unknown Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. dragos@dragos-debian:~$ sudo dd of=/dev/sdb3 bs=512 if=boot-partition.img 949+1 records in 949+1 records out 486376 bytes (486 kB) copied, 1.2313 s, 395 kB/s dragos@dragos-debian:~$ sync