-
Notifications
You must be signed in to change notification settings - Fork 175
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
ULX3S: Quad-core system hangs at FPGA manager framework #362
Comments
Hi, One very possible cause to your slow boot issue is that the linux kernel tick too fast for a too slow system. There is a config in the in the kernel that you can enable : CONFIG_HZ_100 |
@Dolu1990 CONFIG_HZ_100 really helped a lot. I'm now able to build and boot a quadcore system (see below). It was not enough to only enable 100 Hz ticks, but I also had to increase the clock frequency to 40 Mhz (with 45 Mhz in reach):
For this repo:
I will now investigate on the framebuffer Boot log (40 Mhz, 4 cores, CONFIG_HZ_100, no framebuffer)
|
Nice :)
Yes, i think you are right, that would be a more portable default. Also, if possible avoid --with-wishbone-memory as it realy hit the memory bandwidth between the SoC and the SDRAM The framebuffer is also probably starving data, i had that when for instance i was running digilent video at 50 Mhz, just got blackscreen. Not sure what is your actual resolution ? |
Currently, I have not changed the default settings of framebuffer at all. Therefore, I cannot tell about the resolution that the framebuffer has. In the end, I would be more than happy to have a 80x25 text terminal (as in former times with CGA and Hercules cards). For the 100Hz: There is pull request #363 |
Ok. So when using the framebuffer, the system seems to be memory starving on the ulx3s. However, If I enable the
It does not seem to be a problem, however, I'm not sure what it means that the pll1_clkout1 is less than 125 Mhz. Further, the video_terminal is not to useful with Linux using the uart for its login shell. My Next Step: I also think that it should be doable to modify "VideoTerminal" so that it (a) does not sniff the uart sink for its data, but that it (b) exposes the video and the font memory via wishbone. Thereby, I should become able to emulate a good old text-mode graphic card. @Dolu1990 Would it make sense (in the multi-core mode) to (a) Disable framebuffer for the ULX3S Board (b) reduce the clock frequency? |
Hi,
I think that is to drive the 640x480@75Hz
See https://github.com/SpinalHDL/NaxSoftware/tree/main/debian_litex#boot-console So console=tty1 in the linux bootcmd may fix it ? If you want, you can try to get the USB host working. (there is a OHCI controller in litex)
I'm not sure. There is so many possibility / use cases. I would say people need to customiz for their use case. |
TL;DR: Multi-Core System does not boot Linux. Framebuffer makes everything worse
Hello! I have the goal to build a quad-core RISC-V system that I load
onto an ULX3S Board (ECP-85F). In the long term, I want to use this
setup to give university-level lecture on multi-core operating system
construction.
At this point, I want to boot a Linux system on a synthesized quadcore
to test the gateware, before I start porting my own software there,
hunting gateware-level bugs. Also: I'm aware of other softcores
(Rocket, NaxRiscv, PULP) but my current goal is to make it running
with the VexRiscv.
Problem
I am not able to get a multi-core system with > 2 cores
running as it hangs before the user-land fully starts. The last line
on the litex_terminal is:
Suspicion: I suspect two problems here: There is some multicore
problem and the litex framebuffer yields unfavorable logic for the
ulx3s.
Overview
I got a dual core system to boot with
--board=ulx3s --cpu-count=2 --with-wishbone-memory --device LFE5U-85F
. However, I had to reducethe system clock to 25Mhz and disable the "framebuffer". Besides from
that, I tried the following configurations:
[good] 2 cores, whishbone-memory, 25 Mhz
[bad] 2 cores, wishbone-memory, 25 Mhz, with framebuffer: Timing warning, Boot hangs at FPGA manager framework
[bad] 4 cores, whishbone memory, 25Mhz, No timing warning, boot hangs at "FPGA manager framework", boot is super slow (200 seconds till hang)
[bad] 4 cores, No timing warning, boot hangs at "FPGA manager framework", 25 Mhz
Also, with the framebuffer enabled, I had tremendously long nextpnr runtime (> 1.5 h).
Detail for 4 cores
As an example, I will provide the some logs for my last attempt (4
cores, 25 Mhz, no framebuffer, no whishbone memory).
For this test, I built the buildroot by myself. but I also tried the
downloaded/pre-built buildroot before, and it gave the same problem.
Version Info:
Building it:
Loading it:
Boot Log
Working Variant
For comparision reasons, I also attached the boot log form the working
2 core machine (wishbone memory, 25 Mhz, no framebuffer):
The text was updated successfully, but these errors were encountered: