Questions regarding Runtime/SDK

I'm currently starting a project based on Pulpissimo with an Ibex core as Fabric Controller. I got everything set up as described in the Readme. The RTL simulation works fine and I got a (working) implementation running on a Nexys A7 board (ported from the Nexys Video implementation) which I want to use to test some peripherals.
I connect to the board by using a Digilent HS2 JTAG debugger with OpenOCD from the pulp-SDK.

At this point I have a few questions (and problems) regarding the runtime/PulpOS.

There are currently three repositories providing SW support for Pulp/Pulpissimo. The pulp-builder, pulp-sdk, and the pulp-runtime.

I understand that the pulp-runtime is currently a simplified version of the runtime. But as i noticed it seems to have different way of configuring/building.
A) As it is a newer runtime, do you plan to extend this further to replace the "old sdk" at some point?
B) Currently the pulp-runtime supports only the riscy core. Would it be possible to support the ibex as well?

The simple runtime worked on the FPGA out of the box with the riscy core. That was nice Smile 

In the readme of the pulpissimo the pulp-builder is the suggested package to use the runtime and therefor is the same as an SDK, right? But what is the pulp-SDK then?
The runtime and api files seems to be similar. But I encountered different problems with both when using the examples.

E.g. the hello uart example:
With the pulp-builder SDK the Code doesn't even reach the main() part but hangs somewhere during the boot/configuration part.
With the pulp-sdk i can use the UART with printf but not using the UART driver. Also only after using this fix.

C) Now I'm not quite sure which one to use. For which should I use my time to investigate my problems?

Also the SDK seems to use deprecated drivers for the examples (at least the name of the folder is like that). So..
D) Is there any documentation of the runtime and its APIs except for the auto generated docs and the examples in the SDK?
The pulp-builder has an empty Doc folder.

E) Regarding a comment on this issue the support of the SDK regarding the ibex core is not really complete. It seems like nothing has changed much since then.
Are you planing to keep the support for the ibex core?

I hope someone finds the time to answer my questions and I'm looking forward to work with the pulp platform. Smile
A) We don't plan to replace it. It is more of a way to write bare-metal programs.
B) This is a bit more complicated since ibex has diverged quite a bit from ri5cy (with respect to csr mapping etc.), but I believe you can get quite far by a specific target in rules/pulpos/targets/ for ibex (editing the march flags appropriately)
C) pulp-builder builds the pulp-sdk. The suggested version is probably outdated though.
D) see C). Drivers are called deprecated because we are internally trying to move to a new api called pmsis_api.
E) Technically yes, but we didn't really have a lot of internal demand for it which is why it is moving slowly

big thanks for your reply.

As I would like to use driver support (especially for SPI) I think I need to stick to PulpOS. But I will have a look at it.

I tried a few things out. First of all I updated pulp-builder to the 4a7a69 commit, which then worked fine with the riscy core.

In your pending pull request for pulpissimo the upgraded version of pulp_soc should contain a fix for the Ibex CSR problem. I was able to upgrade and synthesize without a problem but using the ibex core. But programs stuck waiting for a never happening interrupt if I use the same pulp-builder commit.

Do you know if I need to upgrade the runtime/configs as well somehow?

I will investigate it further and will not make an Issue as long the unreleased upgraded version of pulpissimo is merged.
For now I'm going to stick to the riscy core for now and switch later at some point if possible.

Thanks again

Forum Jump:

Users browsing this thread: 1 Guest(s)