I have been working with ZedBoard for one year by now, but always on the "PL" (FPGA) side. I managed to test many FPGA designs with Vivado 2022.2 without any problem. However when I tried to program the PS side, I did something wrong and now, when I power ZB off and on, the system is not booting with the factory setting anymore. Hence the DIGILENT brand is no longer shown at the OLED display and the blue "done" LED is not lighting up anymore.
---> What I want is to restore the ZB to the original factory setting booting.
---> So that the DIGILENT brand is displayed again at the OLED.
In case somebody can help me, I explain below in detail what happened. However, I want to state in advance of below description that I later managed to recover some kind of communication with ZB by changing the settings of the JP7 to JP11 jumpers the "JTAG mode", but the problem is that now I don't know what commands to use with xsct and JTAG-USB connector in order to recover the original configuration booting.
Some 10 days ago I made my first application for communication between PS (dual core ARM Cortex-A9) and PL with Vitis 2022.2. But when I tried my second application of this type, I did something wrong and lost the communication with Zedboard, either through Vivado or Vitis. This means that Vivado stppped detecting ZB as target and with Vitis, the xsct "target" command could not detect any target giving the message:
(The above result was obtained connecting my notebook serial port to the USB-JTAG port used for programming).
Fortunately, as I have another ZB at the university I work, I can know what would be the expected "factory setting" result which is the following:
xsct% targets
1 APU
2 ARM Cortex-A9 MPCore #0 (Running)
3 ARM Cortex-A9 MPCore #1 (Running)
4 xc7z020
Additionally, when connecting my notebook serial port to the UART-USB port of ZB, I keep receiving a permanent transmission of a strange ASCII character like in the following image:
Interestingly, when I press the PS-RST red button at ZB, the terminal stops receiving this weird ASCII character, but reception is automatically resumed when the PS-RST button is released.
Hence, my assumption is that I did something wrong when programming the ZB with Vitis, and for some reason, the ARM CPU got caught in an infinite loop that sends an ASCII character continuosly, and it can no longer execute any normal booting. As a matter of fact, the C program I had tried to implement actually is supposed to send an ASCII text continuosuly inside a loop, (although not the same character all the time but different ones depending on what the FPGA side detects).
Also, when I tried to access to the PL side through Vivado, the "Open Target" command at the GUI could NOT manage to detect my "faulty ZB" and of course this means I no longer was able to program any "LED blinking" hardware to test if the xc7z020 SoC was "still alive".
All of this happened with the JP7 to JP11 jumpers set to factory status:
I then looked into the "ZedBoard Configuration and Booting Guide" and saw that there is a "JTAG booting mode":
After setting the faulty ZB jumpers to the "JTAG booting Mode", I managed to obtain the same response as with the "non faulty ZB":
Moreover, with this jumper setting, I recovered the connection to the "Faulty ZB" with Vivado on the PL-side and managed to program a "LED blinking" hardware-test configuration without problem.
I did something wrong with Vitis and programed the PS-side into some kind of "baremetal application with an infinite loop" that does not allow the "faulty ZB" to communicate with any notebook application that connects through the JTAG-USB (PROG) connector in case the JP7 to JP11 are configure to factory settings. But when I change the jumper settings to "JTAG booting mode" I recover the communication through the JTAG-USB interface, being able to send xsct commands and program the PL again. But what I want is to simply return the "faulty ZB" ti the original factory state, meaning that with the normal factory setting of the ZB I can also program the de PL side and connect using xsct commands and more important that the booting process has the result of showing the DIGILENT brand in the OLED display.
Any help or comment will be deeply appreciated. Thanks in advance.
Question
mvernengo
I have been working with ZedBoard for one year by now, but always on the "PL" (FPGA) side. I managed to test many FPGA designs with Vivado 2022.2 without any problem. However when I tried to program the PS side, I did something wrong and now, when I power ZB off and on, the system is not booting with the factory setting anymore. Hence the DIGILENT brand is no longer shown at the OLED display and the blue "done" LED is not lighting up anymore.
---> What I want is to restore the ZB to the original factory setting booting.
---> So that the DIGILENT brand is displayed again at the OLED.
In case somebody can help me, I explain below in detail what happened. However, I want to state in advance of below description that I later managed to recover some kind of communication with ZB by changing the settings of the JP7 to JP11 jumpers the "JTAG mode", but the problem is that now I don't know what commands to use with xsct and JTAG-USB connector in order to recover the original configuration booting.
----------------------------------------------------------------------------------------
DETAILED DESCRIPTION OF THE PROBLEM:
Some 10 days ago I made my first application for communication between PS (dual core ARM Cortex-A9) and PL with Vitis 2022.2. But when I tried my second application of this type, I did something wrong and lost the communication with Zedboard, either through Vivado or Vitis. This means that Vivado stppped detecting ZB as target and with Vitis, the xsct "target" command could not detect any target giving the message:
xsct% targets
2 whole scan chain (DR shift output all ones)
(The above result was obtained connecting my notebook serial port to the USB-JTAG port used for programming).
Fortunately, as I have another ZB at the university I work, I can know what would be the expected "factory setting" result which is the following:
xsct% targets
1 APU
2 ARM Cortex-A9 MPCore #0 (Running)
3 ARM Cortex-A9 MPCore #1 (Running)
4 xc7z020
Additionally, when connecting my notebook serial port to the UART-USB port of ZB, I keep receiving a permanent transmission of a strange ASCII character like in the following image:
Interestingly, when I press the PS-RST red button at ZB, the terminal stops receiving this weird ASCII character, but reception is automatically resumed when the PS-RST button is released.
Hence, my assumption is that I did something wrong when programming the ZB with Vitis, and for some reason, the ARM CPU got caught in an infinite loop that sends an ASCII character continuosly, and it can no longer execute any normal booting. As a matter of fact, the C program I had tried to implement actually is supposed to send an ASCII text continuosuly inside a loop, (although not the same character all the time but different ones depending on what the FPGA side detects).
Also, when I tried to access to the PL side through Vivado, the "Open Target" command at the GUI could NOT manage to detect my "faulty ZB" and of course this means I no longer was able to program any "LED blinking" hardware to test if the xc7z020 SoC was "still alive".
All of this happened with the JP7 to JP11 jumpers set to factory status:
I then looked into the "ZedBoard Configuration and Booting Guide" and saw that there is a "JTAG booting mode":
After setting the faulty ZB jumpers to the "JTAG booting Mode", I managed to obtain the same response as with the "non faulty ZB":
xsct% connect
tcfchan#1
xsct% targets
6 APU
7 ARM Cortex-A9 MPCore #0 (Running)
8 ARM Cortex-A9 MPCore #1 (Running)
9 xc7z020
Moreover, with this jumper setting, I recovered the connection to the "Faulty ZB" with Vivado on the PL-side and managed to program a "LED blinking" hardware-test configuration without problem.
----------------------------------------------------------------------------------------
CONCLUSIONS:
I did something wrong with Vitis and programed the PS-side into some kind of "baremetal application with an infinite loop" that does not allow the "faulty ZB" to communicate with any notebook application that connects through the JTAG-USB (PROG) connector in case the JP7 to JP11 are configure to factory settings. But when I change the jumper settings to "JTAG booting mode" I recover the communication through the JTAG-USB interface, being able to send xsct commands and program the PL again. But what I want is to simply return the "faulty ZB" ti the original factory state, meaning that with the normal factory setting of the ZB I can also program the de PL side and connect using xsct commands and more important that the booting process has the result of showing the DIGILENT brand in the OLED display.
Any help or comment will be deeply appreciated. Thanks in advance.
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now