UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 46911

EDK 14.1 Zynq-7000 - How do I create a stub for the second CPU core?

Description

How do I create a stub for the second CPU core?

Solution

The attached tcl script (stub.tcl) creates a stub for the second CPU core. The second CPU core executes a wfe (wait for event) instruction and waits for the first CPU core to wake up.

If the first processor wants to wake up the second core, it just needs to write the desired pc value at location 0xFFFFFFF0 and send a sev (send event) instruction.

Without this, Linux might not boot, since the boot rom has a bug in jtag mode for rev1 of the silicon. Therefore, this step is needed when Linux is being loaded directly into RAM without booting from flash.

Following is the assembly code that the second CPU core executes:

0xFFFFFF00: mvn r0, #15
0xFFFFFF04: mov r1
0xFFFFFF08: str r1, [r0]
0xFFFFFF0C: wfe
0xFFFFFF10: ldr r2, [r0]
0xFFFFFF14: cmp r2, r1
0xFFFFFF18: beq 0xc
0xFFFFFF1C: mov pc

Attachments

Associated Attachments

Name File Size File Type
stub.tcl 723 Bytes TCL

Linked Answer Records

Master Answer Records

Answer Number Answer Title Version Found Version Resolved
52540 Zynq-7000 AP SoC - Frequently Asked Questions N/A N/A

Associated Answer Records

Answer Number Answer Title Version Found Version Resolved
47567 Zynq-7000 AP SoC, Boot - Program Counter (PC) Of CPU1 Points to an Invalid Address when Booting from JTAG N/A N/A
AR# 46911
Date Created 05/31/2012
Last Updated 03/02/2013
Status Active
Type General Article
Devices
  • Zynq-7000