-
Notifications
You must be signed in to change notification settings - Fork 575
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Separate address maps for CPU and SoC? #1154
Comments
for Zynq7000 I'm a bit asthonish, all my tests shows using same addr at CPU and logic side works perfectly. But It's true for EOS and ZynqMP FPGAs. |
It depends on how do you assign CSR address in the SoC memory map: if you set it to the value valid for the CPU (smth like 0x43c0_0000) CSR_BASE in C will be correct but LiteX will generate a decoder which will prevent the bus from functioning normally. So I'm thinking that an easy temporary solution could be to just have an option to remove the bus decoder - given all current problematic situations require a zero base value on the logic side. |
It's true, with master branch for both litex and litex-boards repositories, the communication is not working for redpitaya and arty_z7, By reading the verilog I see (in the flow order)
first two lines and last one are mutually exclusives. I have added an hack similar to your in So I think a simple bool at soc class level to fix decoding to 0 at SoCRegion level make sense. Have to try with zynqmp and quicklogic |
I have tested this PoC successfully for both zynq. |
With #1208 merged we can probably close this. Thanks @sergachev, @trabucayre. |
Some hard CPU cores (Zynq-7000, EOS S3) do address translation on peripheral buses - say for the CPU addresses of a bus start at 0x40020000 and CSR_BASE C definition has to have that value, but the address output to that bus in the logic will have this base offset removed and start from 0x0 (so decoding using the offset done by LiteX by default breaks the access). I'm not sure what is the best way to deal with this - to manage a separate address space with all boundary checks etc or to simply redefine CSR_BASE in the C code or else. I solved it temporarily this way: sergachev@197a635 + sergachev@e93d543
The text was updated successfully, but these errors were encountered: