openhwgroup / cva6-sdk

CVA6 SDK containing RISC-V tools and Buildroot
59 stars 64 forks source link

CVA6 on Nexys Video: Reporting on Additional SD Card Partition with Filesystem Test #94

Open amiroshni opened 3 months ago

amiroshni commented 3 months ago

(Apologies to the CVA6-SDK dev's, I used a blank template as what I'm reporting is not directly relevant to the main CVA6 development, since the different targets such as the Genesys 2 are officially supported instead.)

After following @Saute0212's work on setting up CVA6 64-bit variant on the Nexys Video, my colleague @shriyasharma11 and I were able to boot into a Linux busybox environment. See https://github.com/openhwgroup/cva6/issues/2116 for details.

We then added another partition in between the payload firmware and Linux kernel partitions. In this new partition, we wrote an assembled 'Hello World' binary (written in assembler to minimise library dependencies).

See the branch we made for replicating this: https://github.com/openhwgroup/cva6-sdk/compare/master...amiroshni:cva6-sdk:test-hello-nv

The goal was to eventually setup a filesystem on an additional partition, but run into instability issues with the SD card resetting while working in the busybox environment.

I followed the partitioning information from a previous issue: https://github.com/openhwgroup/cva6-sdk/issues/47

The filesystem on an additional partition in the SD card worked for a size of 64 MiB (we were able to read and write files). However when testing with a larger size (432 MiB), the SD card was resetting when being mounted or files accessed in the Linux environment.

We also produced a rough guide for setting up the Nexys Video (and running this hello binary, and additional filesystem partition): https://github.com/amiroshni/documenting-cva6?tab=readme-ov-file

At Red Semi, we'll probably put the Nexys Video work on hold, but hopefully the information in the guide and logs will be useful to @Saute0212 and anyone else trying to use the Nexys Video for CVA6 work. (Realisticly, it's probably better to use the RV32 variant, as it will take a smaller FPGA footprint and will run faster).