openhwgroup / cva6

The CORE-V CVA6 is an Application class 6-stage RISC-V CPU capable of booting Linux
https://docs.openhwgroup.org/projects/cva6-user-manual/
Other
2.2k stars 670 forks source link

When running the program, the output of the Linux terminal suddenly gets stuck. #1778

Open chenqian13 opened 7 months ago

chenqian13 commented 7 months ago

Is there an existing CVA6 bug for this?

Bug Description

When I was running my own C++program, the output printed through the printf() function suddenly froze on the serial terminal. And I cannot make any input through the keyboard in the terminal. But through Vivado's Logic Analyzer, it can be seen that my program has actually completed the entire operation normally. I have tried different terminal tools and the phenomenon is the same. So I think it may be a hardware issue.

The output of the serial terminal gets stuck in the area shown in the picture, sometimes also getting stuck in "wrbuf11" and "wrbuf13". At that location, I configured some custom registers through the AXI bus. Did this operation affect the serial part? Has anyone encountered a similar situation as me?

Any help or clarification would be much appreciated. Thanks!

3 4

JeanRochCoulon commented 7 months ago

@jquevremont I labeled this PR as "Component:SW" but I do not know who to assign. I set your name, sorry for the bad gift. We should discuss it during cva6 meeting.

jquevremont commented 7 months ago

@chenqian13, are you using https://github.com/openhwgroup/meta-cva6-yocto on Genesys 2 board?

chenqian13 commented 7 months ago

Hi! @jquevremont No, I'm using https://github.com/openhwgroup/cva6-sdk on xcku5p board. I added an axi master and axi slave in the design. I added the axi-slave device information (as shown in the figure) and changed the CPU clock-frequency and UART clock-frequency (both equal to CLK_OUT1=100MHZ) in "cv64a6genesysII.dts" under "cva6-sdk/uboot/arch/riscv/dts/", and then remade the Linux system. In addition, I did the same thing for "cv64a6. dts" under "FPGA/src/bootrom" and regenerated the bootrom 64.sv. Should I add my master device information in the dts files?

What's the difference between https://github.com/openhwgroup/cva6-sdk and https://github.com/openhwgroup/meta-cva6-yocto ? Should I use https://github.com/openhwgroup/meta-cva6-yocto to make Linux?

dts1

jquevremont commented 7 months ago

cva6-dsk is based on BuildRoot. meta-cva6-yocto is based on Yocto. May I suggest that you start your Linux system on a Genesys 2 board to get it up and running and add the AXI peripherals. This would be more incremental, starting from a known working configuration. We have not worked on the xcku5p board and can't provide advice on it. Genesys 2 is the "default" OpenHW FPGA board.

chenqian13 commented 7 months ago

@jquevremont OK, thank you for your quick reply!

I would greatly appreciate it if anyone else could continue to offer help or suggestions!

chenqian13 commented 7 months ago

Hi! @jquevremont I followed the README in the "meta-cva6-yocto" repository and finally generated the content shown in the figure. Then I executed the following command: gunzip -c build/tmp-glibc/deploy/images/cv64a6-genesys2/core-image-minimal-cv64a6-genesys2.wic.gz | sudo dd of=/dev/sd$ bs=1M iflag=fullblock oflag=direct conv=fsync status=progress But I was unable to successfully start the system. I want to know what the partition requirements for the SD card are. Also, I would like to know if there are any other files that need to be placed in the SD card besides the files in the command above.

1