I swapped the serial_hd() index between the MMUART0 and MMUART1 , so my default qemu console is the MMUART1. I can see the U-Boot and Kernel logs now.
I still need both serial consoles for HSS and UBoot/Kernel and will need your help to make the original qemu command line work with unix\#serial1.sock. I am unable to figure out what's wrong with unix\#serial1.sock On Tue, Jun 1, 2021 at 7:48 PM Rahul Pathak <rpat...@ventanamicro.com> wrote: > 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...@gmail.com> wrote: > >> Hi Rahul, >> >> On Tue, Jun 1, 2021 at 11:12 AM Rahul Pathak <rpat...@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 >> >