Closed Chgavilana closed 3 years ago
HI: Testing I checked that boot process continue, but It spend more of 2 hours to continue (with 640x480_75Hz, more resolution take more of 12 hours). At the end, I got login prompt but system is very slow, console work fine but slow, but HDMI out nothing. if I remove framebuffer option when I build system, all work fine. I checked #42 recommendation, and find that VCO program inside MMCME2_ADV is 1500 and FPGA arty 100 speedgrade -2 support 1440 max (Vivado show this as CRITICAL WARNING). I don't know if someone who have any board running HDMI out framebuffer have the same problem or some recommendation to check why this happens.
I will continue to check mmcm parameters and driver to understand more about this section of code.
LinuxFramebuffer22122020.txt LinuxFramebuffer22122020detailed.txt
Update: litevideo load fine. problem is with simple-framebuffer or something else when create /dev/fb0 (see LinuxFramebuffer22122020detailed.txt)
HI: continue with debugging, I need a second opinion about two parts of code. Checking over json2dts.py:
1) When define framebuffer, they use framebuffer_base = 0xc8000000
. I change to 0x4F000000 (aprox end of main ram (0x40000000-frambuffer_size)). With this change, system boot fine and quickly without error, but I can't show nothing over hdmi (monitor is black all time and it doesn't change if a write a random value over framebuffer or monitor doesn't detect input origin). Why default value is 0xc8000000 if it is out of main ram?
2) About litevideo0:
gpu@{litevideo_base:x}, litevideo_dma-offset is defined as framebuffer_base - d["memories"]["main_ram"]["base"]. if use framebuffer_base = 0xc8000000, is it a possible wrong value? 3) this is maybe a bug, but framebuffer and soc_controller use same direction f0000000.
framebuffer0` is defined with this value by default and a warning message is showed at the end when I generate all.
I feel close to make it work, but my monitor start to show problems, so I prefer to check all signal first. BR. Carlos.
HI: continue with debugging, I need a second opinion about two parts of code. Checking over json2dts.py:
1. When define framebuffer, they use `framebuffer_base = 0xc8000000`. I change to 0x4F000000 (aprox end of main ram (0x40000000-frambuffer_size)). With this change, system boot fine and quickly without error, but I can't show nothing over hdmi (monitor is black all time and it doesn't change if a write a random value over framebuffer or monitor doesn't detect input origin). Why default value is 0xc8000000 if it is out of main ram? 2. About `litevideo0:` gpu@{litevideo_base:x}`, litevideo_dma-offset is defined as framebuffer_base - d["memories"]["main_ram"]["base"]. if use framebuffer_base = 0xc8000000, is it a possible wrong value? 3. this is maybe a bug, but framebuffer and soc_controller use same direction f0000000. `framebuffer0` is defined with this value by default and a warning message is showed at the end when I generate all.
I feel close to make it work, but my monitor start to show problems, so I prefer to check all signal first. BR. Carlos.
Hi Carlos:
for #1, I also found the setting what you modified is right. In my case using 0x4f8000000 as framebuffer base address, and the boot process will show some kernel panic message. after change framebuffer base address to 0x4f000000, the boot process completes, and shows simple_framebuffer is registered. there is a fb device node at /dev/fb0.
for #2 , I also think this may be case by case setting, due to different ddr memory size.
for #3, I'm not very sure this. but this setting should differ to soc_controller base address.
the following is what I want to discuss.
from make.py which come from linux-on-litex-vexriscv, I found there two board, NeTV2 and NexysVideo. in litex-boards/targets, the clock is not the same. for netv2, the clock is S7PLL based, and for nexysvideo, the clock is S7MMCM based. for fixed hdmi video output resolution, is the S7PLL not OK, and must switch to S7MMCM ?
for hdmi video output, such like scl, sda, hpd, cec is needed or could be ignore or should be configured?
for video path, i found there is some patch code in https://github.com/daveshah1/linux-on-litex-vexriscv/commit/7a4ccd70de92aa004b27ad714114cb8b89928612. for framebuffer setting, the related code is in soc_linux.py. the framebuffer related code also include hdmi port initialization or not?
BR, Sanada
Hi:
Still it not working, but I will continue this problem over issue #181.
A quickly summary, litevideo need some updates and I found that:
1) framebuffer_base = 0xc8000000
is defined over main ram, and this address is when main ram memory was declared over 0xC0000000 but It was moved to 0x40000000 (https://github.com/litex-hub/linux-on-litex-vexriscv/commit/66ced884caac0fccaef75eb91e5e69394d0634dd)
2) According with previous point, litevideo_dma-offset it's correct.
3) framebuffer and soc_controller use same direction f0000000, need some future fix.
When Change framebuffer_base over ram memory, system boot fine without problems.
BR. Carlos.
Hi:
I try to boot linux vexriscv system with hdmi output (just one HDMI port over board QMTECH Wukong board), however, when it's go to simple framebuffer line, boot process stop and can get working with HDMI port.
Some idea about what could be the problem?. Following nexys_video and netv2 configuration I cant see some additional configuration. Output of boot process is show below.
I found a critical warning during vivado syntesis, but I'm not sure about if i can down this frequency and not affect timing of some signals. Warning is true for xc7a100T arty FPGA speedgrade -2 according with datasheet and output is showed below. I tried down frequency and have the same output during boot process, also changing video resolution.