Runtime issue of migrating an IP from pynq-z1 to ultra96 v2

Hi, i’m tring to moving a project from pynq-z1 to ultra96-v2. Both boards run the v3.0.1 image. I migrated the IP and rebuilt the overlay for ultra96-v2, and try to run the same python code on ultra96-v2. However, segfault occurs when it’s tring to access the mapped ip address in a c library function.

The BaseAddr passed into the record() function is casted from the self.mmio.array in python code. The same code works on pynq-z1.

I further printed the “description” object passed inside pynq code when calling Overlay and cannot find anything looks incorrect to me.

Another weird thing is that when I try to directly print mmio.array in python, it leads to kernel death. But it can be accessed by index and its content looks the same as what’s on pynq-z1.

I don’t know if the problem is caused by something related to 32bit/64bit architecture difference of the two boards. Thanks for any help or insight.