Starting with the 2017.1 release, all PM masters must call the PmInitFinalize() API when they have finished initializing all their slave nodes. Otherwise, the PMU will not power down any slave node (e.g. GPU, DDR, etc.). The 2017.1 PetaLinux pre-built image contains no RPU application. As a result, the PMU will never receive the PmInitFinalize() API call from the RPU. As a result, when Linux suspends itself, PMU will not power down the FPD. This can be avoided if the RPU is initially loaded with a minimal application that calls PmInitFinalize(), and then suspends itself.
This example shows how to load this application at boot time, using the PetaLinux pre-built image.
Before you start, make sure you have done the following:
- Install and able to run PetaLinux tools.
- Create a PetaLinux project.
- Load and boot the pre-built image on your board.
- Install and able to run the Vivado Design Suite tools.
Now you are ready to add the RPU applications to BOOT.BIN. Please note that the default PetaLinux hardware definition file (HDF) specifies the two RPU cores running in split mode. Therefore, we need to load both R5 cores with their own application and suspend themselves.
Add RPU Apps to BOOT.BIN
- CD to the PetaLinux pre-built image folder (e.g. <project folder>/pre-built/linux/images).
- Copy boot.bif,release_all_r5-0.elf and release_all_r5-1.elf to this folder.
- Run command: "bootgen -arch zynqmp -image boot.bif -w -o BOOT.BIN". (You may need to delete BOOT.BIN first).
- Boot pre-built images with the new BOOT.BIN file.
After Linux boots up, you should be able to suspend Linux and see that the FPD is powered down.
The BIF, source and ELF files are in:MinRpuApp.zip
Configuration Object file Generated by PetaLinux tool chain and Vivado is attached below:
-1) Linux SubsystemMaster -
2) R5-0 SubsystemMaster -
- L2 Cache
- OCM Bank 0, 1, 2 and 3
3) R5-1 SubsystemMaster -
- TCM Bank 0 - A
- TCM Bank 0 - B
- TCM Bank 1 - A
- TCM Bank 1 - B