qemu-riscv
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: HSS Issue with GCC 10, Qemu Setup for microchip-icicle-kit


From: Rahul Pathak
Subject: Re: HSS Issue with GCC 10, Qemu Setup for microchip-icicle-kit
Date: Tue, 1 Jun 2021 19:48:12 +0530

Hi Bin,

Thanks for the response. 

I think the issue currently is that if I keep the "wait=on" and launch minicom on  "unix\#serial1.sock" then nothing happens.
Qemu keeps waiting for the connection on serial1 and no logs for uboot and Kernel appears on the serial1.

Thanks
Rahul

On Tue, Jun 1, 2021 at 7:39 PM Bin Meng <bmeng.cn@gmail.com> wrote:
Hi Rahul,

On Tue, Jun 1, 2021 at 11:12 AM Rahul Pathak <rpathak@ventanamicro.com> wrote:
>
> Hi BIn,Alistair,
>
> I was passing the hss.elf file and it was strange that gdb after connecting was not letting the target to continue from gdb.

This is the expected behavior if you pass an image to gdb before
connecting to the target, as gdb will assume the debug contexts are
the same, but it's not the case for PolarFire which has 1+4 hybrid
configuration.

> what worked was to not pass anything and then connect the to target then load the symbol file as hss.elf.
> I followed the steps from the "Attaching the GDB" doc and was able to debug.
>

Yes, that's the correct way to debug PolarFire.

>
> For the qemu command line from the doc, I made the "wait=off" then qemu was not waiting for another serial connection
> and launched the hss.

You need to connect to the other serial connection otherwise QEMU does
not start the emulation when "wait=on"

>
>
> The problem remains is that I still do not have the u-boot and linux booting. The unix\#serial1.sock remains offline always.
> These are the HSS logs -
>
> [0.115001] HSS_E51_Banner(): PolarFire(R) SoC Hart Software Services (HSS) - version 0.99.15
> (c) Copyright 2017-2020 Microchip Corporation.
>
> [0.116234] HSS_E51_Banner(): incorporating OpenSBI - version 0.6
> (c) Copyright 2019-2020 Western Digital Corporation.
>
> [0.117071] HSS_PrintBuildId(): Build ID: 811342a39f80176f9e2086bf963a83224b3d3a2e
> [0.117817] HSS_PrintToolVersions(): Built with the following tools:
>  - riscv64-unknown-linux-gnu-gcc (GCC) 10.2.0

Yeah, this log indicates that GCC 10.x works with HSS :)

>  - GNU ld (GNU Binutils) 2.36.1
>
> [0.118760] HSS_MemTestDDRFast(): DDR size is 1 GiB
> [0.130270] HSS_MMCInit(): Attempting to select SDCARD ... Passed
> Press a key to enter CLI, ESC to skip
> Timeout in 5 seconds
>
> .....
> [5.138747] HSS_TinyCLI_Parser(): CLI check timeout
> [5.139371] IPI_QueuesInit(): Initializing IPI Queues (9000 bytes @ 8000e40)...
> [5.140435] HSS_PMP_Init(): Initializing PMPs
> [5.141093] HSS_BootInit(): Initializing Boot Image..
> [5.141787] getBootImageFromMMC_(): Preparing to copy from MMC to DDR ...
> [5.142671] getBootImageFromMMC_(): Attempting to read image header (1552 bytes) ...
> [5.144118] GPT_ValidateHeader(): Validated GPT Header ...
> [5.153768] GPT_ValidatePartitionEntries(): Validated GPT Partition Entries ...
> [5.155210] copyBootImageToDDR_(): Copying 436008 bytes to 0xA0000000
> [5.407848] copyBootImageToDDR_(): Calculated CRC32 of image in DDR is 795fbbea
> [5.412058] HSS_BootInit():  boot image passed CRC
> [5.412407] HSS_BootInit(): Boot image set name: "PolarFire-SoC-HSS::U-Boot"
> [5.412951] HSS_BootInit(): Boot Image registered...
> [5.413376] HSS_Boot_RestartCore(): called for all harts
> [5.414295] RunStateMachine(): boot_service(u54_1)::Init -> boot_service(u54_1)::SetupPMP
> [5.414812] RunStateMachine(): boot_service(u54_2)::Init -> boot_service(u54_2)::SetupPMP
> [5.415207] RunStateMachine(): boot_service(u54_3)::Init -> boot_service(u54_3)::SetupPMP
> [5.415631] RunStateMachine(): boot_service(u54_4)::Init -> boot_service(u54_4)::SetupPMP
> [5.416107] RunStateMachine(): usbdmsc_service::init -> usbdmsc_service::idle
> [5.417164] RunStateMachine(): boot_service(u54_1)::SetupPMP -> boot_service(u54_1)::SetupPMPComplete
> [5.417887] RunStateMachine(): boot_service(u54_2)::SetupPMP -> boot_service(u54_2)::SetupPMPComplete
> [5.418552] RunStateMachine(): boot_service(u54_3)::SetupPMP -> boot_service(u54_3)::SetupPMPComplete
> [5.419890] RunStateMachine(): boot_service(u54_4)::SetupPMP -> boot_service(u54_4)::SetupPMPComplete
> [23.955147] RunStateMachine(): boot_service(u54_1)::SetupPMPComplete -> boot_service(u54_1)::ZeroInit
> [23.955754] RunStateMachine(): boot_service(u54_2)::SetupPMPComplete -> boot_service(u54_2)::ZeroInit
> [23.956259] RunStateMachine(): boot_service(u54_3)::SetupPMPComplete -> boot_service(u54_3)::ZeroInit
> [23.956757] RunStateMachine(): boot_service(u54_4)::SetupPMPComplete -> boot_service(u54_4)::ZeroInit
> [23.957371] RunStateMachine(): boot_service(u54_1)::ZeroInit -> boot_service(u54_1)::Download
> [23.957876] RunStateMachine(): boot_service(u54_2)::ZeroInit -> boot_service(u54_2)::Download
> [23.958386] RunStateMachine(): boot_service(u54_3)::ZeroInit -> boot_service(u54_3)::Download
> [23.958856] RunStateMachine(): boot_service(u54_4)::ZeroInit -> boot_service(u54_4)::Download
> [23.960300] RunStateMachine(): boot_service(u54_2)::Download -> boot_service(u54_2)::Idle
> [23.960723] RunStateMachine(): boot_service(u54_3)::Download -> boot_service(u54_3)::Idle
> [23.961129] RunStateMachine(): boot_service(u54_4)::Download -> boot_service(u54_4)::Idle
> [23.983168] RunStateMachine(): boot_service(u54_1)::Download -> boot_service(u54_1)::Wait
> [23.983661] boot_download_chunks_onExit(): boot_service(u54_1)::u54_2:sbi_init 80200000
> [23.984374] boot_download_chunks_onExit(): boot_service(u54_1)::u54_3:sbi_init 80200000
> [23.985418] boot_download_chunks_onExit(): boot_service(u54_1)::u54_4:sbi_init 80200000
> [23.986783] boot_download_chunks_onExit(): boot_service(u54_1)::u54_1:sbi_init 80200000
> [23.989086] boot_wait_onEntry(): boot_service(u54_1)::Checking for IPI ACKs: - -
> [23.992106] boot_wait_handler(): boot_service(u54_1)::Checking for IPI ACKs: ACK/IDLE ACK
> [23.994062] RunStateMachine(): boot_service(u54_1)::Wait -> boot_service(u54_1)::Idle
>

Based on the above log, HSS successfully boots U-Boot already. The
U-Boot console is on the other serial console, which I guess you might
turn it off?

>
> One thing I overlooked in the document is that we are preparing the *.wic file after downloading
> but passing the *.img in the qemu command. How to convert the wic to img. I couldn't see much about
> this on the internet ?

The *.wic image is the raw image. Just use it as it is.

> Since U-boot currently does not boot, it seems passing the wic file directly is not right. Now sure here.
>
>  qemu-system-riscv64 -M microchip-icicle-kit -smp 5 \
>     -bios path/to/hss.bin -sd path/to/sdcard.img \
>     -nic user,model=cadence_gem \
>     -nic tap,ifname=tap,model=cadence_gem,script=no \
>     -display none -serial stdio \
>     -chardev socket,id=serial1,path=serial1.sock,server=on,wait=on \
>     -serial chardev:serial1
>
>
> Are there other ways in qemu icicle machine supported now to pass the u-boot and kernel?
>

Yes, it has. The capability to direct boot kernel (can be U-Boot or an
OS kernel) without HSS is currently in the Alistair's riscv-next tree
and should land on qemu/master soon.

Regards,
Bin

reply via email to

[Prev in Thread] Current Thread [Next in Thread]