PULP Community
Modifying bootloader to load data from flash memory to different L2 addresses - Printable Version

+- PULP Community (https://pulp-platform.org/community)
+-- Forum: PULP's Community forum (https://pulp-platform.org/community/forumdisplay.php?fid=1)
+--- Forum: PULP General questions (https://pulp-platform.org/community/forumdisplay.php?fid=2)
+--- Thread: Modifying bootloader to load data from flash memory to different L2 addresses (/showthread.php?tid=186)

Modifying bootloader to load data from flash memory to different L2 addresses - LPLA - 04-22-2020


I'm currently trying to understand how the booting process works (PULPissimo) and if I can modify it in a way that data gets moved from the flash memory to different locations in the L2 memory during this process.

This is similar to how booting from flash already works but the difference is that my flash does not only contain the image of the code that i want to run but also additional data that needs to be loaded in an accelerators memory once.

After loading the image into the flash i boot from flash using STANDALONE.
Of course everything works fine for a simple code like the hello example from the pulp_rt_examples.
I simulate using QuestaSim and get the expected "Hello !" output at the end.

The tricky part is that the additional data for my accelerator needs to be loaded to specific address(es) in the L2 memory.
For example i want to load X bytes from 0x00010000@flash to 0x1c030000@L2 and Y bytes from 0x00110000@flash to 0x1c040000@L2 and so on.
That's the basic idea behind what i want to do.

I'd like to know if it is possible to have my data from flash loaded to L2 during the boot phase in the way i described.
There are a couple of things that are still unclear to me:

The GitHub page mentions that:
Quote:Boot from ROM is not available yet. The ROM will always return the code jal x0,0 to trap the core until the debug module takes over control and loads the programm into L2 memory.
This is mentioned in the FPGA section but I'm not sure how up-to-date this is and if this is also true for non FPGA scenarios.

I have not been able to find the linker script or startup code in either the PULPissimo or the pulp-builder directory, only a few assembly startup code files. The setup I'm working with is slightly different than the GitHub version so it can be confusing trying to compare them by simply looking for certain files which might be needed in one version but not the other one. For example: The version I'm currently working with has a bootloader.c file which is the startup code but i couldn't find such a file in the GitHub version.

I hope my question is a bit clearer now as basically all I'm trying do to is loading data from flash to L2 during boot phase (like it already does in the STANDALONE boot mode) but in my case I also have additional data which needs to be moved to certain addresses in L2.

Edit: Rephrased nearly the entire question.

Thank you,