-
Notifications
You must be signed in to change notification settings - Fork 630
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
Asymmetric Multi Processing on RedPitaya #163
Comments
Does OS that is provided by RedPitaya supports openAMP? |
Hi Waqar, This question was once discussed on the Red Pitaya forum: I even did tests and managed to run Linux on one core and a bare metal application on other. I have some instructions at this link but they are very outdated. So, it's technically possible but requires patching Linux and building an additional module. Cheers, Pavel |
Hello Pavel, I will check the links you provided and will post my questions here. I am unable to login/register to the red pitaya forum, which is quite annoying. Anyway great to have you here. Cheers, |
How to configure redpitaya kernel to enable remoteproc and rpmsg? Like done here ug1186 |
So I managed to compile the kernel using the pull request #87 Now I am looking into adding the remoteproc and sharedmemory nodes to the device tree, here are the bindings (describes structure of node for dts). I am not really sure as to where to add them. I made a few attempts but failed. I think I have to change them in the Any tips? |
In order for openAMP to work, we will first need to move kernel to a higher address as Xilinx baremetal and freeRTOS applications only work in lower addresses (Correct me if I am wrong as I read it somewhere and didn't have time to verify it). As can be seen in the figure below First comes the baremetal application/FreeRTOS, then the shared memory region (done in remoteproc device tree?) and then Linux Kernel. So we have to first move the kernel to memory address 0x10000000 (I got this address from ug978 Xilinx doc), to do that see #178 . After that we will need to modify the device tree and add the remoteproc entry. Its same as done for zedboard and I did it in my youtube video Tutorial 07 Asymmetric Multi-Processing on ZedBoard (OpenAMP, remoteproc, petalinux) You also will need to compile the device tree and for that I recommend having a look at the Makefile.x86, specifically the target $(DEVICETREE) and hopefully you can figure it out from there how to compile the device tree sources. With that setup, you can load firmware to remote processor (CPU1), start and stop it. For verification you can use For making your own remote application, you can start with Xilinx SDK and follow the OpenAMP Framework for Zynq Devices: Getting Started Guide (UG1186) chapter 2. I will also make a video tutorial about it and will upload it my youtube channel and will add the link here. I am still figuring out how the linux side application of the AMP system works and whether I can develop an application in userspace. There is no Image Source: https://www.xilinx.com/support/documentation/sw_manuals/petalinux2014_2/ug978-petalinux-zynq-amp.pdf |
According to the source code of rpmsg_user_dev_driver.c its description is
And this has to be compiled if we want to use the examples from Xilinx e.g echo_test etc. There are other types of examples which are all in kernel space. So clarify, the Linux application can either be in Kernel space or partly in userspace and partly in kernel space (e.g rpmsg_user_dev_driver). P.S It seems like Xilinx has moved away from using rpmspg_user_dev_driver so if you want to use the older versions, you might have to reset the meta-openamp repository to an older commit. |
Now We need to compile both kernel module and userspace application. I don't know yet If we would need to compile the libmetal for it. |
Other applications like wget etc are also not working so that means the root file was not created properly.. will have to recreate the root file system and see if this problem persists.. also the compilation can be move into the schroot scripts which are used for creation of root file system. P.S wget problem might be because of some error in that one run of image.sh |
Ok So I managed to run one AMP application and would update here soon. |
Useful talks that somehow wasn't showing up in google search results.. |
Hi Waqar, After running command modprobe zynq_remoteproc, /sys/class/remoteproc folder is empty. Do yoy know about this error ?? Thank you, so much |
Hello victor, Best regards, |
Thank you!! Best regards! |
Hi! I change your added system-top.dts lines (first video of tutorial) with:
Maybe it's interesting for you. Now, it seems to work Thanks Waqar |
Running a bare-metal app on cpu1 by using remoteproc modules, i have the next errors: [ 205.874292] remoteproc remoteproc0: bad phdr da 0x3e000000 mem 0x1a488 Does anyone know about it? I check some pages that say it's about devicetree.dtb register. Now, i'm using devicetree.dtb file like waqar in tutorial. My linux version is 2017.2. Thanks!! So much |
Finally, by addind next line to devicetree.dtb, it works. amba { }; |
Hello Friends,
I am working on a project where I would like to do Asymmetric Multi Processing on redpitaya. Linux on one core and BareMetal/RTOS on other. I am unable to create an account on redpitaya forums so I will try to update my progress here or ask for help here.
Edit 1:
For those of you who are looking for answers about AMP or openamp etc and are not getting any, you might find this mailing list useful https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!forum/open-amp
Just make sure to ask the stuff that you can't find anywhere else
Cheers.
Waqar
The text was updated successfully, but these errors were encountered: