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!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor swordfishman
Visitor
1,832 Views
Registered: ‎05-29-2013

ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

I do not believe this is related to my Custom PL address spaces specifically but more generally in the ZynqMP MMAP/MMU.  See DevMem2 output below.

 

We have integrated a set of Custom PL in fabric.  These are the same modules I have previously integrated on several Zynq7 devices.  My address spaces are 0x80000000, 0x80030000, 0x80040000, 0x80050000, 0x80060000

I can effectively read/write my 0x80000000 address space using devmem2 and my userspace application via a custom loadable kernel module.

 

When I attempt to read/write memory addresses > 0x8002FFFF I get a BUS ERROR.  See DevMem2 example output below:

 

root@REAPR1:~# devmem2 0x8002fffe h
                          /dev/mem opened.
                          Memory mapped at address 0x7f8c956000.
                          Value at address 0x8002FFFE (0x7f8c956ffe): 0x0

root@REAPR1:~# devmem2 0x80030000 h
                          /dev/mem opened.
                          Memory mapped at address 0x7f8f95a000.
                          Bus error

 

See attached file for DMESG output when user space application executes.  I have enabled a fair amount of debug in my LKM's.  It demonstrates the same issue of memory access < 0x80030000 working but access at or above that address errors out.

 

My firmware engineer assures me he did nothing to preclude R/W access to these memory spaces but this is our first 2017.2 project.

 

Any thoughts or experiments are appreciated.

0 Kudos
1 Solution

Accepted Solutions
Visitor swordfishman
Visitor
2,434 Views
Registered: ‎05-29-2013

Re: ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

Oddly enough after restarting Vivado 2017.2 and re-generating all is well now.  It seems the IP wasn't REALLY in the BIT thus the memory spaces were invalid.

 

All is working now.  That was an expensive restart.  As a test we pulled out most of our IP and added a new simple block with a single output to drive a an LED.  Our output from the block refused to show up in the block design.  Flailing, and due to past experience, we restarted Vivado and suddenly the block output was present in the block design.  Generating a BIT allowed access to the memory space located above the 0x80030000.  Adding back all previous custom IP blocks rectified all faults.  Memory access and interrupts are flowing from all custom IP to PS.

0 Kudos
4 Replies
Visitor swordfishman
Visitor
1,793 Views
Registered: ‎05-29-2013

Re: ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

It may be an IP import tool issue.  The one block that was brought in manually works while the rest were imported from the previous version of Vivado.  I am cautiously optimistic this will fix it but that is tomorrows issue.

 

Cheers!

 

0 Kudos
Visitor swordfishman
Visitor
1,779 Views
Registered: ‎05-29-2013

Re: ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

Same situation.  synchronous external abort on any access > 0x80030000

Going down the rabbit hole.  If anyone has any ideas we would appreciate them

0 Kudos
Visitor swordfishman
Visitor
2,435 Views
Registered: ‎05-29-2013

Re: ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

Oddly enough after restarting Vivado 2017.2 and re-generating all is well now.  It seems the IP wasn't REALLY in the BIT thus the memory spaces were invalid.

 

All is working now.  That was an expensive restart.  As a test we pulled out most of our IP and added a new simple block with a single output to drive a an LED.  Our output from the block refused to show up in the block design.  Flailing, and due to past experience, we restarted Vivado and suddenly the block output was present in the block design.  Generating a BIT allowed access to the memory space located above the 0x80030000.  Adding back all previous custom IP blocks rectified all faults.  Memory access and interrupts are flowing from all custom IP to PS.

0 Kudos
Xilinx Employee
Xilinx Employee
1,733 Views
Registered: ‎02-01-2008

Re: ZynqMP cannot read/write address space >= 0x80030000

Jump to solution

Be careful of a bug in 2017.2 where exporting a new hdf does not get integrated in an existing sdk workspace. So you end up using an old/stale .bit from an old .hdf.

 

There is an AR, and maybe a patch but also take a look at https://forums.xilinx.com/t5/Embedded-Development-Tools/Exporting-new-hardware-quot-corrupts-quot-SDK-project/m-p/781003#M42394

0 Kudos