PYNQ: PYTHON PRODUCTIVITY

Pynq built image for custom board doesnt boot but it does with another prebuilt image

Hello. Im trying to understand this issue.
I have a Zybo Z7-10 that i want to use with the PYNQ framework.

I successfully generated an image with the steps for agnostic board image but when i flash on the sd the board doesnt boot. If instead i use my bootfiles and a pynq prebuilt image for another board it boots but with other issues.

Steps:

  1. Generate a simple base design with vivado 2019.1
  2. Generate the bitstream and my .spec file:
ARCH_Zybo := arm
BSP_Zybo := 
BITSTREAM_Zybo := base/base.bit
STAGE4_PACKAGES_Zybo := pynq ethernet xrt 
FPGA_MANAGER_Zybo := 1
  1. Run setup_host and source petalinux (2019.1)
  2. make PREBUILT=../../bionic.arm.2.5.img BOARDS=Zybo nocheck_images (repo is check out at 2.5 release)
  3. Once the image is completed, i write Zybo-2.5.img on the sd and place BOOT.bin and image.ub on the first partition of the SD
  4. Connect the board and wait… The board doesnt start or response to a ping.

On the other hand, i do the follow:

  1. Grab a prebuilt Pynq-Z1-2.5.img and write it on the SD.
  2. Put the built Zybo BOOT.bin and image.ub on the first partition of the sd card
  3. Boot the board.

The board boots and jupyter is launched, i can access with pynq:9090.
The issue here is that when i try to load an overlay i get the following issue:

On the notebook:
TimeoutError: [Errno 110] Connection timed out

On dmesg:

[  144.186045] fpga_manager fpga0: writing base.bit.bin to Xilinx Zynq FPGA Manager
[  146.748956] fpga_manager fpga0: Error after writing image data to FPGA
[  146.755174] fpga_manager fpga0: writing base.bit.bin to Xilinx Zynq FPGA Manager
[  149.266907] fpga_manager fpga0: Timeout waiting for PCFG_INIT
[  149.271387] fpga_manager fpga0: Error preparing FPGA for writing

fpga manager and xlnk are present but not working. This pynq thread had a similar issue and solved it with a new bitstream but im generating a bitstream also with no success.
This xilinx thread had the same issue but was with kernel 4.14 and according to petalinux-config the built kernel is 4.19 and the issue appears to be fixed.
They also do:

The way that use to send the ecrypted bitstream to the FPGA is:
echo 0x4 > /sys/class/fpga_manager/fpga0/flags

But sill doesnt work. Is there another way to use an overlay? or to program with usb (vivado) and then access with pyhton?

The strange thing is that the built image with makefile doesnt boot but it boots with another image for other board and my bootfiles. Does anyone have an idea on why the image doesnt boot? or how can i verify why?

1 Like

For the first part, do you mean you copy the .img file over to the SD card?
The .img file is a full disk image an is all you need. You should use an SD card imager (see writing sd card image) to write this to the SD card. This creates a bootable SD card image.
If you just copy files over it won’t be a bootable SD card.
You also don’t need to copy the boot.bin and the image.ub. The are included in the .img file.

For the second part … just don’t do this :wink: Let’s try fix the image build.

By the way, is there any reason you are not using v2.6?

If you get this image working and can host it on a google drive or similar, you could add your build steps and link to the image here:
https://discuss.pynq.io/t/3rd-party-images-for-zynq-boards/431/3?u=cathalmccabe

Cathal

1 Like

For the first part, do you mean you copy the .img file over to the SD card?

Yes, i used Etcher to write the image file, I expressed myself wrongly.
I just did only the step with Etcher for the SD without “replacing” boot.bin and image.ub and still doesn’t boot.
Just tried also to use the sudo dd ... and its the same…

By the way, is there any reason you are not using v2.6?

I had vivado 2019.1 already installed so thats why I used v2.5. I’ll try later to download for 2.6 but first need to delete some files since dont’ know how much free space do i have on the vm.

Do you have any terminal output you can share that might help show why it doesn’t boot?

Cathal

I only have:
"Destination Host Unreachable" timeout for ping 192.168.2.99 and "ssh:connect to host 192.1no route to host" from ssh xilinx@192.168.2.99.
What other info can i get? Is there a way to attach a terminal to the booting process?

Yes, you can open a USB terminal to the board. https://pynq.readthedocs.io/en/v2.6.1/getting_started/pynq_z2_setup.html#opening-a-usb-serial-terminal

Cathal

@cathalmccabe
putty_dmesg_log.txt (21.3 KB)

It looks like the board boots, but just doesn’t get an IP address. Do you have an Ethernet cable plugged in?
Can you try manually assign an address to eth0? Otherwise check the config for the Ethernet?

Cathal

1 Like

@cathalmccabe oh man, you’re the best. I wasted so many hours this past weeks.

I was able to add the ip this way (with the correct IP values) and now I can access the jupyter notebooks and i dont have the PCFG_INIT issue. I can now load a custom overlay.

The only issue is that there are some “getting_started” notebooks that are not present but i believe that its because the files werent on the boards/Zybo/notebooks folder. Its that or there is some incomplete build on the image. Ill try to add them later.

I will later do more tests and then upload the files to drive/github for anyone with issues.

Thanks!

1 Like

Great, thanks for letting us know. Notebooks don’t need to be included in your image. You can easily add them later if needed.
It would be great if you can make your steps/files available.
We have a wiki post for 3rd party images here: 3rd party images for Zynq boards - #3 by ombhilare999

Cathal