Next: Performance Previous: Electrical Subsystems
Software
Prerequisites
The Raptor SDR includes a PetaLinux board support package (BSP) that can be used for immediate development. The BSP includes pre-built images that can be transferred to the SD card to boot the board.
To prepare the environment on a host computer:
- Install PetaLinux Tools. Please refer to the PetaLinux Tools Installation Steps from the Xilinx website.
- Download the Raptor Project:
git clone https://gitlab.com/rinconresearch/raptor.git
- Set up the PetaLinux Working Environment. Please refer to the PetaLinux documentation for the steps to set up the environment.
Link to Petalinux installer here
Link to Petalinux user guide document here
Getting Started
Preparing Booting Media
Choose one of the options to prepare the booting media:
- Single partition (see 4.2.1.1 INITRAMFS Boot (Default RootFS for PetaLinux) Option)
- Two partitions (see 4.2.1.2 SD Card Extended File System Boot Option)
INITRAMFS Boot (Default RootFS for PetaLinux)
The INITRAMFS boot, which is the default booting option, only requires one partition on the SD card.
To prepare the SD card and create a FAT32 partition:
-
Insert the SD card into an SD card reader in the host computer, and run the
lsblk command to identify the device.
Following is the output of the lsblk command, where sdb is the SD card:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931.5G 0 disk ├─sda1 8:1 0 501M 0 part /boot ├─sda2 8:2 0 200M 0 part /boot/efi └─sda3 8:3 0 930.8G 0 part sdb 8:16 1 7.4G 0 disk └─sdb1 8:17 1 7.4G 0 part /run/media/jgm/3632-6239
There are many tools to format and partition media. These instructions use the parted tool to perform the task. -
Exchange **sdb** with the name of your block device in the following command:
sudo parted /dev/sdb
-
At this point the parted utility is running. Create a partition table by entering the
following command:
(parted) mklabel msdos
-
Create one partition on the SD card:
(parted) mkpart primary fat32 1MiB 100%
-
Set boot flag:
(parted) set 1 boot on
-
Exit parted utility:
(parted) quit
- Verify that the partition was created successfully by performing an **lsblk** command. Verify that the new partition is shown in the output.
-
Format device as a FAT32:
sudo mkfs.vfat /dev/sdb1
SD Card Extended File System Boot
The SD card extended (ext) file system boot requires two partitions. The first partition should be at least 40 MB in size, be formatted as a FAT32 file system, and be named boot. The second partition, which will store the root filesystem, should be formatted as an ext4 file system, be named rootfs, and can take up the remaining space of the SD card.
To prepare the SD card for ext boot:
- Perform steps 1 through 3 of the previous section.
-
Create fat32 partition with at least 50MB of space:
(parted) mkpart primary fat32 1MiB 50MiB
-
Set boot flag:
(parted) set 1 boot on
-
Create ext4 partition wih the rest of the space available in the SD card:
(parted) mkpart primary ext4 50MiB 100%
- Verify that the partition was created successfully by performing an **lsblk** command. Verify that the new partition is shown in the output.
-
Format devices as a FAT32 and EXT4:
sudo mkfs.vfat /dev/sdb1
sudo mkfs.ext4 /dev/sdb2
Installing Raptor BSP
The Raptor Board Support Package (BSP) contains all the libraries and drivers needed to build the Raptor SDR project. The Raptor BSP contains the software stack as well as the hardware design.
To install the Raptor BSP:
-
Change to the directory under which you want the project to be created:
cd /home/user
-
Perform the *Petalinux-create* command to install the BSP:
petalinux-create –t project –s <path-to-bsp>
The Raptor BSP is now installed in your desired location. The BSP contains a pre-built folder that contains the Linux images needed to boot the system immediately; those images are located at <plnx‑proj‑root>/pre‑built/. Move BOOT.bin and image.ub to the FAT32 partition of the SD card. At this point the SD card is ready to be installed in the board.
The Raptor project is configured with a default set of drivers and libraries. However, the PetaLinux tool can be used to add any library, driver, or application code. Refer to the PetaLinux documentation for more details on how to modify and rebuild a PetaLinux project.
Arch Linux distribution
The Raptor BSP includes an Arch Linux distribution cpio image that can be loaded into the ext4 partition when the project is configured to do an SD card extended file system boot.
To configured the project to boot from the SD card :
-
Change to the directory under which you want the project to be created:
cd /home/user
-
Perform the *petalinux-create* command to install the BSP:
petalinux-create –t project –s <path-to-bsp>
-
Perform the *petalinux-config* command to configure the project:
petalinux-config
-
Select Image Packaging Configuration.
-
Select Root filesystem type.
-
Select SD card as the RootFS type.
-
Exit menuconfig and save configuration settings.
-
Perform the *petalinux-build* command to build the project.
-
Rebuild BOOT.BIN.
-
Copy BOOT.BIN and image.ub to BOOT partition of SD card. The image.ub file will have device tree and kernel image files.
-
Extract raptor_arch_rootfs.cpio.gz file to rootfs partition of SD card.The raptor_arch_rootfs.cpio.gz is included in the raptor project.
$ gunzip raptor_arch_rootfs.cpio.gz
$ cd /media/rootfs
$ cpio -idmv < path/ raptor_arch_rootfs.cpio
Raptor Bring-up
To power up your Raptor board:
- Move *BOOT.bin* and *image.ub* from the pre-built folder to the *boot* partition of the SD card.
- Remove the SD card from host computer and insert it into the Raptor board.
- Connect USB2 cable to the USB/UART port of the Raptor board.
- Using terminal emulator such as putty, open a terminal and connect to the UART device that is assigned to the Raptor board.
- Power up the Raptor board.
-
Following is an example of the messages that will be displayed in the
console by the board:
Xilinx Zynq MP First Stage Boot Loader Release 2016.2 Dec 9 2016 - 13:29:49 NOTICE: ATF running on XCZU9EG/silicon v1/RTL5.1 at 0xfffe5000 NOTICE: BL31: Secure code at 0x60000000 NOTICE: BL31: Non secure code at 0x8000000 NOTICE: BL31: v1.2(release):1058495 NOTICE: BL31: Built : 07:24:40, Jun 10 2016 U-Boot 2016.01 (Jun 10 2016 - 07:24:48 +0530) Xilinx ZynqMP ZCU102 I2C: ready DRAM: 4 GiB Enabling Caches... EL Level: EL2 MMC: sdhci@ff170000: 0 Using default environment In: serial@ff000000 Out: serial@ff000000 Err: serial@ff000000 Bootmode: SD_MODE1 SCSI: SATA link 0 timeout. SATA link 1 timeout. AHCI 0001.0301 32 slots 2 ports 6 Gbps 0x3 impl SATA mode flags: 64bit ncq pm clo only pmp fbss pio slum part ccc apst scanning bus for devices... Found 0 device(s). Net: ZYNQ GEM: ff0e0000, phyaddr 12, interface rgmii-id Warning: ethernet@ff0e0000 (eth0) using random MAC address - 02:71:fd:43:66:69 eth0: ethernet@ff0e0000 Hit any key to stop autoboot: 0 switch to partitions #0, OK mmc0 is current device Device: sdhci@ff170000 Manufacturer ID: 3 OEM: 5344 Name: SL08G Tran Speed: 50000000 Rd Block Len: 512 SD version 3.0 High Capacity: Yes Capacity: 7.4 GiB Bus Width: 4-bit Erase Group Size: 512 Bytes reading uEnv.txt 380 bytes read in 13 ms (28.3 KiB/s) Loaded environment from uEnv.txt Importing environment from SD ... reading system.dtb 35193 bytes read in 34 ms (1010.7 KiB/s) reading Image 11489792 bytes read in 768 ms (14.3 MiB/s) ## Flattened Device Tree blob at 04000000 Booting using the fdt blob at 0x4000000 Loading Device Tree to 000000000fff4000, end 000000000ffff978 ... OK Starting kernel ... ........ [ 4.913267] Freeing unused kernel memory: 456K (ffffff8008a76000 - ffffff8008ae8000) Mount failed for selinuxfs on /sys/fs/selinux: No such file or directory [ OK ]ting up X socket directories... g EVIOCSKEYCODE: Invalid argumentt [ OK ]Starting IIO Daemon iiod Last login: Thu Sep 29 17:49:19 UTC 2016 on ttyPS0 Welcome to Linaro 14.04 (GNU/Linux 4.6.0-08559-ga64b9bc aarch64) * Documentation: wiki.analog.org ez.analog.com 2 packages can be updated. 0 updates are security updates. New release '16.04.1 LTS' available. Run 'do-release-upgrade' to upgrade to it. root@raptor:~#
-
At this point, a check needs to be done to make sure all the IIO devices
have been created. The **ii_info** command can be used to check the devices.
root@raptor:~# iio_info | grep iio:device iio:device3: cf-ad9361-lpc (buffer capable) iio:device1: ams iio:device2: cf-ad9361-dds-core-lpc (buffer capable) iio:device0: ad9361-phy
Now your Raptor board is ready to be connected to any IIO system object backend.
Operating System Options
The Raptor SDR features the ARM flagship Cortex-A53 64-bit quad-core processor capable of running a great variety of software options, including Linux, RTOS, and bare metal, to mention a few. The complete list of supported software options for the Zynq Ultrascale+ is here.
Libiio and IIO Daemon
The Raptor BSP comes with the IIO Daemon (IIOD) server that enables you to transmit and receive RF signals out of the box. Following is the list of network backends that can be used to stream data to.
Source Code and Reference Designs
Analog Devices provide a set of drivers, libraries and reference designs for the AD9361 part. The Raptor SDR includes them in the BSP that is included with the board.
Analog Devices AD9361 RF Transceiver
Analog Devices provides complete drivers for the AD9361 for both bare metal/No-OS and operating systems (Linux). The AD9361 drivers can be found at:
Linux - wiki page and device driver customization.
No-OS - wiki page.
FPGA - HDL Reference Design.