I am trying to boot Linux on the cv32a6 running on the Nexys video target which has been recently added to the cva6 support. I followed the instructions from the Readme to build my image using make images and flashing the results on a 4Gb SD card using sudo -E make flash-sdcard SDDEVICE=<my_device>.
The OpenSBI firmware and the u-boot seem to execute properly but the boot process gets stuck at the execution of the bootcmd of u-boot to get the kernel. Here is what I get when booting :
When the countdown hits 0, it then hang there without output message. This corresponds to the execution of the boot command configured in u-boot : CONFIG_BOOTCOMMAND="mmc info; mmc read 90000000 100000 7000; setenv fdt_high 0xffffffff; bootm 90000000 - $(fdtcontroladdr)". I observe the same behavior if I manually run mmc command which try to access the mmc device (e.g mmc info, mmc dev, mmc read, ...) : the system gets stuck without error message.
In order to run on the new target, I had to add/modify a few files in the configuration :
CONFIG_RISCV=y
CONFIG_DEFAULT_DEVICE_TREE="cv32a6_nexys"
CONFIG_TARGET_OPENHWGROUP_CVA6_GENESYSII=y
CONFIG_RISCV_SMODE=y
# CONFIG_RISCV_ISA_C is not set
CONFIG_OF_BOARD_SETUP=y
CONFIG_BOOTDELAY=5
CONFIG_USE_BOOTCOMMAND=y
CONFIG_BOOTCOMMAND="mmc info; mmc read 90000000 100000 7000; setenv fdt_high 0xffffffff; bootm 90000000 - $(fdtcontroladdr)"
CONFIG_DISPLAY_CPUINFO=y
CONFIG_SPL_SPI_FLASH_MTD=y
CONFIG_CMD_GPT=y
# CONFIG_RANDOM_UUID is not set
CONFIG_CMD_MMC=y
CONFIG_CMD_MTD=y
CONFIG_CMD_PART=y
CONFIG_OF_EMBED=y
CONFIG_MMC=y
# CONFIG_MMC_WRITE is not set
CONFIG_MMC_SPI=y
CONFIG_DM_MTD=y
CONFIG_MTD_SPI_NAND=y
CONFIG_SPI_FLASH_ATMEL=y
CONFIG_SPI_FLASH_EON=y
CONFIG_SPI_FLASH_GIGADEVICE=y
CONFIG_SPI_FLASH_ISSI=y
CONFIG_SPI_FLASH_MACRONIX=y
CONFIG_SPI_FLASH_SPANSION=y
CONFIG_SPI_FLASH_STMICRO=y
CONFIG_SPI_FLASH_SST=y
CONFIG_SPI_FLASH_WINBOND=y
CONFIG_SPI_FLASH_XMC=y
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
CONFIG_SPI_FLASH_MTD=y
CONFIG_SYS_NS16550=y
CONFIG_SPI=y
CONFIG_XILINX_SPI=y
CONFIG_BAUDRATE=57600
CONFIG_DISPLAY_BOARDINFO=y
Changed uboot baudrate to match the baudrate required by the nexys uart.
Changed device tree target (see next point)
* added `u-boot/arch/riscv/dts/cv32a6_nexys.dts` :
Device tree built from https://github.com/openhwgroup/cva6/tree/master/corev_apu/fpga/src/bootrom
* Deactivation of Ethernet configuration based on https://github.com/openhwgroup/cva6/pull/1925#issuecomment-2053688518
I wonder what may be the issue? Where should I look at?
Thank a lot in advance !
### Description of Done
I am sorry, I used the "task" template where I should have used of a blank issue.
Is there an existing CVA6-SDK task for this?
Task Description
Hello,
I am trying to boot Linux on the cv32a6 running on the Nexys video target which has been recently added to the cva6 support. I followed the instructions from the Readme to build my image using
make images
and flashing the results on a 4Gb SD card usingsudo -E make flash-sdcard SDDEVICE=<my_device>
. The OpenSBI firmware and the u-boot seem to execute properly but the boot process gets stuck at the execution of the bootcmd of u-boot to get the kernel. Here is what I get when booting :When the countdown hits 0, it then hang there without output message. This corresponds to the execution of the boot command configured in u-boot :
CONFIG_BOOTCOMMAND="mmc info; mmc read 90000000 100000 7000; setenv fdt_high 0xffffffff; bootm 90000000 - $(fdtcontroladdr)"
. I observe the same behavior if I manually run mmc command which try to access the mmc device (e.g mmc info, mmc dev, mmc read, ...) : the system gets stuck without error message.In order to run on the new target, I had to add/modify a few files in the configuration :
u-boot/configs/openhwgroup_cv32a6_nexys_defconfig
:CONFIG_BAUDRATE=57600
CONFIG_DISPLAY_BOARDINFO=y
/dts-v1/;
/ {
address-cells = <1>;
size-cells = <1>;
compatible = "eth,ariane-bare-dev"; model = "eth,ariane-bare"; chosen { stdout-path = "/soc/uart@10000000:57600"; }; cpus {
address-cells = <1>;
}; memory@80000000 { device_type = "memory"; reg = <0x80000000 0x08000000 >; }; leds { compatible = "gpio-leds"; heartbeat-led { gpios = <&xlnx_gpio 1 0>; linux,default-trigger = "heartbeat"; retain-state-suspended; }; }; L26: soc {
address-cells = <1>;
}; }; // delete ethernet device if disabled /delete-node/ ð // DELETE_ETH