During Ultra96-V2 Workshop: Session 3: Hello World on a Cortex-A53 and R5 Processor , one of the homework assignments was to create and run the Peripherals Test from the Example Templates. I also mentioned that you may run into an issue during the running of that test and challenged you to figure it out.
The issue is that the PS UART self-test on the Bluetooth Radio Uart didn't work. It hung. I wrote about this previously in this blog:
Ultra96 and the Mystery of the UARTs
Well, turns out that the the latest Vitis 2021.1 Peripheral Test template doesn't have the same issue, so it never hangs! Kudos to andrewj for pointing that out to me. Here are the instructions for creating and running that example based on the Hello World workspace from Workshop #3, as well as the results below.
- Launch Vitis 2021.1 and open the U96V2_Basic_Applications workspace.
- Create a New Application Project with new System Project, targeting the A53_0.
- File > New > Application Project
- Next
- Next
- Give the application a name and allow a new system project to be created, Next
- Next (re-using the standalone domain on psu_cortexa53_0)
- At the Templates screen, select Peripherals Tests, then click Finish. You will see new System and Application Projects added in the Explorer. The src folder contains drivers for every peripheral in your hardware platform.
- Right-click on the new Application Project and select Build Project.
- After setting up the hardware and connecting TeraTerm to the JTAG/UART Pod, right-click on the Test_Peripherals application, Run As > Launch Hardware.
Scrolling near the bottom of the results, you can see that two psu_uart_0 self-tests pass, which confirms that previous error seen no longer exists in Vitis 2021.1!
Running UartPsPolledExample() for psu_uart_0...
UartPsPolledExample PASSED
Running Interrupt Test for psu_uart_0...
UartPsIntrExample PASSED
The full text of the terminal output from the Peripherals Test is shown below.
---Entering main---
Running ScuGicSelfTestExample() for psu_acpu_gic...
ScuGicSelfTestExample PASSED
ScuGic Interrupt Setup PASSED
Running XZDma_SelfTestExample() for psu_adma_0...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_0...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_1...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_1...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_2...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_2...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_3...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_3...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_4...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_4...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_5...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_5...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_6...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_6...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_adma_7...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_adma_7...
ZDMA Simple Example PASSED
Running SysMonPsuPolledPrintfExample() for psu_ams...
Entering the SysMon Polled Example.
The Current Temperature is 29.293 Centigrades.
The Maximum Temperature is 29.293 Centigrades.
The Minimum Temperature is 28.492 Centigrades.
The Current Supply 1 is 0.841 Volts.
The Maximum Supply 1 is 0.842 Volts.
The Minimum Supply 1 is 0.840 Volts.
The Current Supply 3 is 1.800 Volts.
The Maximum Supply 3 is 1.802 Volts.
The Minimum Supply 3 is 1.798 Volts.
Exiting the SysMon Polled Example.
SysMonPsuPolledPrintfExample PASSED
Running SysMonPsuIntrExample() for psu_ams...
Entering the SysMonPsu Interrupt Example.
The Current Temperature is 28.958 Centigrade.
The Current Supply 1 is 0.841 Volts.
The Current Supply 3 is 1.800 Volts.
Temperature Alarm(0) HIGH Threshold is 18.956 Centigrade.
Temperature Alarm(0) LOW Threshold is 8.954 Centigrade.
Supply 1 Alarm(1) HIGH Threshold is 0.641 Volts.
Supply 1 Alarm(1) LOW Threshold is 1.041 Volts.
Supply 3 Alarm(3) HIGH Threshold is 1.600 Volts.
Supply 3 Alarm(3) LOW Threshold is 2.000 Volts.
Alarm 0 - Temperature alarm has occurred
The Current Temperature is 28.826 Centigrade.
The Maximum Temperature is 29.417 Centigrade.
The Minimum Temperature is 28.414 Centigrade.
The Current Supply 1 is 0.840 Volts.
The Maximum Supply 1 is 0.842 Volts.
The Minimum Supply 1 is 0.840 Volts.
The Current Supply 3 is 1.800 Volts.
The Maximum Supply 3 is 1.802 Volts.
The Minimum Supply 3 is 1.798 Volts.
Exiting the SysMon Interrupt Example.
SysMonPsu IntrExample PASSED
Running XCsuDma_SelfTestExample() for psu_csudma...
XCsuDma_SelfTestExample PASSED
Running Interrupt Test for psu_csudma...
CSUDMA Interrupt Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_0...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_0...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_1...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_1...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_2...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_2...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_3...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_3...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_4...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_4...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_5...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_5...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_6...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_6...
ZDMA Simple Example PASSED
Running XZDma_SelfTestExample() for psu_gdma_7...
XZDma_SelfTestExample PASSED
Running Interrupt Test for psu_gdma_7...
ZDMA Simple Example PASSED
Running IicPsSelfTestExample() for psu_i2c_1...
IicPsSelfTestExample PASSED
Running SpiPsSelfTestExample() for psu_spi_0...
SpiPsSelfTestExample PASSED
Running SpiPsSelfTestExample() for psu_spi_1...
SpiPsSelfTestExample PASSED
Running Interrupt Test for psu_ttc_0...
TtcIntrExample PASSED
Running Interrupt Test for psu_ttc_1...
TtcIntrExample PASSED
Running Interrupt Test for psu_ttc_2...
TtcIntrExample PASSED
Running Interrupt Test for psu_ttc_3...
TtcIntrExample PASSED
Running UartPsPolledExample() for psu_uart_0...
UartPsPolledExample PASSED
Running Interrupt Test for psu_uart_0...
UartPsIntrExample PASSED
Running WdtPsSelfTestExample() for psu_wdt_0...
WdtPsSelfTestExample PASSED
Running WdtPsSelfTestExample() for psu_wdt_1...
WdtPsSelfTestExample PASSED
---Exiting main---