: The ZCU102 production board has a SODIMM memory from Micron (MTA8ATF51264HZ) which has the same configuration as Kingston SODIMM but does not support ECC.
3. Implementation Details
|Design Type||PS + PL|
|SW Type||Linux SMP|
|CPUs||Quad Cortex-A53 cores|
- DDR4 2133 MHZ
|Xilinx Tools Version ||Vivado 2018.1 |
|Board||ZCU102 Rev 1.0, Rev A, Rev B , Rev C and Rev D|
Reference Design Download:File Name: ecc-design-files_2018.1Note: In the ecc_design files.zip file there are separate files for ZCU102 for Production Silicon and Engineering Sample Silicon Version 2(ES2) on Rev 1.0 board. Please follow only steps that are required for your board as mentioned in the instructions given below in each section.
- Linux Host machine
- Xilinx ZCU102 evaluation kit with power supply.
- Class 4 or Class 10 SD card (4GB or more).
- Micro USB to Standard USB cable.
5. Running the ECC Error Injection example with prebuilt images:
The fastest way to execute the design is using prebuild images supplied with this tech tip. This section explains step by step procedure to execute the reference design with prebuilt images.
Note: If you want to build the complete software from the sources, skip this section and follow section 6. Building the Software
in this document.
If you want to generate the hardware , follow the 7. Building the Hardware Section.
1. Download the supplied ecc-design-files.zip
file and extract it to any known directory whether it is Linux or Windows Environment.
It should contain the following directories.
2. Copy the images in the ready_to_test directory to the SD Card.
a. For Rev 1.0 board with production silicon, the ready to test files are present in ready_to_test/rev1.0_prod directory.
b. For Rev 1.0 board with es2 silicon, the ready to test files are present in ready_to_test/rev1.0_es2 directory.
3. Boot the images by following the "8. ZCU102 board setup
4. Power on the board and monitor the terminal messages.
5. Once the board boots up, login username and password as "root".
Injecting ECC Errors for ZynqMP DDRC Controller
When the ECC is enabled the following sysfs entries are created that enables the user to inject ecc errors.1. /sys/devices/system/edac/mc/mc0/inject_data_poison
This entry is created to enabled correctable(CE or single error correction and detection)error or uncorrectable (UE or double error detection)2. /sys/devices/system/edac/mc/mc0/inject_data_error
This entry is created to specify the DDR address to monitor for the ECC errors.
Enabling the CE/UE errors
1. Type the following command on the Linux terminal if you want to enable correctable error injection.
root@plnx_aarch64:~# echo "CE" > /sys/devices/system/edac/mc/mc0/inject_data_poison
2. Type the following command on the Linux terminal if you want to enable uncorrectable error injection.
root@plnx_aarch64:~# echo "UE" > /sys/devices/system/edac/mc/mc0/inject_data_poison
3. Select a address to inject ECC Errors in that memory location. This command will configure the Data poison registers to inject errors at the address specified.
root@plnx_aarch64:~# echo 0x7EE0EEE0 > /sys/devices/system/edac/mc/mc0/inject_data_error
As per ZynqMP DDR Controller specification, whenever a write operation detected on the address specified, it injects errors to that location and it will report the errors back, when a read operation is performed.
So write some data to the address specified using devmem command, based CE/UE enable, the DDR controller injects errors corrupts the data at that address specified.
4. Type the following command to corrupt the data at the address specified.
root@plnx_aarch64:~# devmem 0x7EE0EEE0 32 0x1234
5. Read the corrupted data at the same address using the devmem command which will trigger an error interrupt.
root@plnx_aarch64:~# devmem 0x7EE0EEE0
Whenever the read occurs the error condition is triggered and the EDAC driver will print the below message depending on the UE/CE bit set in the data_poison register.
[ 130.548214] EDAC MC0: 1 CE DDR ECC error type :CE Row 16240 Bank 1 Col 0 BankGroup Number 3 Block Number 476 on mc#0csrow#0channel#0 (csrow:0 channel:0 page:0x0 offset:0x0 grain:1 syndrome:0x0)
EDAC MC0: 1 UE DDR ECC error type :UE Row 12544 Bank 0 Col 0 BankGroup Number 2 Block Number 64 on mc#0csrow#0channel#0 (csrow:0 channel:0 page:0x0 offset:0x0 grain:1)
Unhandled fault: synchronous external abort (0x92000210) at 0x0000007f8d666200
6. Building the Software:
Setting up Petalinux:
Download the petalinux-v2016.4-final-installer.run file
For ZCU102 Rev 1.0 board with production silicon download the xilinx-zcu102-v2017.1-final.bsp from Xilinx site.
For ZCU102 Rev 1.0 board with ES2 silicon download the xilinx-zcu102-zu9-es2-rev1.0-v2017.1-final.bsp from Xilinx site.
Ensure your system has required dependencies for running Petalinux. For more information on Petalinux installation and it dependencies refer to 2018.1 UG114 Petalinux User guide.https://www.xilinx.com/support/documentation/sw_manuals/xilinx2018_1/ug1144-petalinux-tools-reference-guide.pdf
Install the Petalinux software:
1. Open a terminal on your Linux machine and run the following commands.
$ ./petalinux-v2018.1-final-installer.run /opt/
$ source /opt/petalinux-v2018.1-final/settings.sh
2. Copy the ecc-designfiles.zip file on to your linux machine and run the following commands
$ unzip ecc-designfiles.zip
$ export MYWORKSPACE=<path to ecc-designfiles directory>
$ cd $MYWORKSPACE
Check if you are in ecc-design files directory by typing “pwd” in the Linux terminal.
3. Type ls and you should see the following directories.
Creating the Petalinux project:
- Create a Petalinux project and source the Zynq MPSoC ECC Hardware description file for the ZCU102 board present in the sdk_export directory.
a. For Rev 1.0 board with Production Silicon run the following commands.
$ petalinux-create -t project -s xilinx-zcu102-v2018.1-final.bsp
$ petalinux-config --get-hw-description $MYWORKSPACE/sdk_export/rev1.0_prod -p xilinx-zcu102-v2018.1
b.For Rev 1.0 board with Engineering Sample 2(ES2) Silicon run the following commands.
$ petalinux-create -t project -s xilinx-zcu102-zu9-es2-rev1.0-v2018.1-final.bsp
$ petalinux-config --get-hw-description $MYWORKSPACE/sdk_export/rev1.0_es2 -p xilinx-zcu102-zu9-es2-rev1.0-v2018.1
2. When the hardware description file is sourced it launches the system configuration of the Petalinux as shown below.
|Figure: Petalinux System Configuration Menu|
3. Exit and Save the new configuration.
This might take a while to apply the new configuration to the BSP.
Build the images for the ZCU102 board.
1. After the tools and BSP are setup compile the images by typing the following command in the Linux terminal.
a. For Rev 1.0 board with Production Silicon run the following commands.
$ cd xilinx-zcu102-2018.1
$ cd images/Linux
b. For Rev 1.0 board with ES2 Silicon run the following commands.
$ cd xilinx-zcu102-zu9-es2-rev1.0-v2018.1-final
$ cd images/Linux
This will generate all the images required for booting the ZCU102 board.
2. For booting the ZCU102 using an SDcard you need a BOOT.bin file which is a packaged file which contains the fsbl, bitstream, secure-monitor and u-boot.
Create the boot binary for the ZCU102 board using the following command.
$ petalinux-package --boot --fsbl zynqmp_fsbl.elf --fpga design_1_wrapper.bit --u-boot u-boot.elf
This will generate the BOOT.bin package file in the images/linux directory.
3. Copy the boot.bin
file present in the images/linux directory to an SD card.
Insert the SDCard to the ZCU102 board and power on the ZCU102 board.
7. Building the Hardware:
This step will provide instructions on how to setup the ZCU102 board for running the design.
Setup Requirements:Operating System:
Windows or Linux.Software Installed:
Steps to generate Hardware Description File:
1. Unzip the ecc-design-files.zip to C:/ drive.
2. Launch Vivado 2018.1 tool.
3. In TCL console. type the following commands
a. For Rev 1.0 board with production silicon run the following commands.
b. For Rev 1.0 board with ES2 silicon run the following commands.
c. For Rev AB/C/D board with ES1 silicon run the following commands.
board run the following commands.
This will generate the block design and will generate the hardware until the bitstream is done.
|Figure: ZCU102 Block Design|
4. After the bitstream has been generated close the bitstream generated Dialog box.
5. Double click on the zynq_ultra_ps_e_0
block in the block design to open the Zynq MPSoC PS Configuration Wizard.
6. Select the DDR Configuration
option in the Page Navigator section of the Zynq MPSoC PS Configuration Wizard.
You should see the ECC
option enabled for the DDR Controller.
|Figure: ECC option enabled for DDR controller|
7. Close the wizard without making changes by clicking on Cancel
8. Export the Hardware to SDK. In Vivado GUI , Select File > Export Hardware
This will launch the Export Hardware
|Figure: Exporting Hardware to SDK|
9. Select the Include bitstream
Option and click on OK
The exported hardware should be present in "C:\ecc-designfiles\hw\ecc_design\ecc_design.sdk
8. ZCU102 Board Setup:
The following instructions will provide the steps to setup the ZCU102 board for running the design..
1. Connect the Micro USB cable into the ZCU102 Board Micro USB port J83
, and the other end into an open USB port on the windows PC. This cable will be used for UART over USB communication.
2. Insert SD card into the SD card slot J100
3. Set the SW6
switch to SD boot mode as shown below.
a. The below figure shows SD boot mode settings for ZCU102 Rev-B/C/D board
|Figure: SD boot mode switch setting for ZCU102 Rev A/B/C/D boards|
b.The below figure shows SD boot mode settings for ZCU102 Rev-1.0 board
|Figure: Switch SW6 settings for selecting SD bootmode for ZCU102 Rev 1.0 baord|
4. Connect 12V Power to the ZCU102 6-Pin Molex connector.
5. The following figure shows the ZCU102 board with all the required connections.
|Figure: ZCU102 Board setup|
1. Switch on the ZCU102 Board at SW1 (red switch). Note: Make sure that any one of the serial console utility ( Example: Tera term , putty ) is installed on the the windows machine to which UART cable is connected.This Tech tip exercises with Tera Term.
2. Connect the Tera Term with the interface 0 of the UART bridge like as shown in the below figure.
|Figure: Serial communication port selection|
3. After the Linux is boots up ,Login prompt appears. Enter the login with the username and password as "root".
This reference design has shown both the ECC capabilities of the Zynq UltraScale+ MPSOC along with the software support provided by Xilinx
Please refer to the Zynq MPSoC Technical Reference Manual for more information on the Zynq MPSoC Architecture.