Date: Mon, 7 Feb 2022 17:44:06 +0000 From: Jessica Clarke <jrtc27@freebsd.org> To: Jakob Alvermark <jakob@alvermark.net> Cc: Mitchell Horne <mhorne@freebsd.org>, "freebsd-riscv@freebsd.org" <freebsd-riscv@FreeBSD.org> Subject: Re: Sipeed Lichee RV (Allwinner D1) Message-ID: <4975A04C-FF52-4FE4-91C3-E445C75EF62A@freebsd.org> In-Reply-To: <39674ce9-bbc4-a817-57ab-922d9c522fac@alvermark.net> References: <bdf1ae3d-6246-1445-49e4-534374986c3d@alvermark.net> <d313d20e-46ed-d088-8327-d84fe535ac4f@freebsd.org> <ed5d7751-bf2c-1d17-50da-06b566059a2b@alvermark.net> <5a74bd6d-4000-c413-02e2-33608f9ae683@freebsd.org> <18b735fb-fd36-daad-9ee7-974ff1955400@alvermark.net> <39674ce9-bbc4-a817-57ab-922d9c522fac@alvermark.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 7 Feb 2022, at 17:38, Jakob Alvermark <jakob@alvermark.net> wrote: >=20 > On 1/29/22 16:12, Jakob Alvermark wrote: >>=20 >> On 1/28/22 16:29, Mitchell Horne wrote: >>> On 1/19/22 18:05, Jakob Alvermark wrote: >>>>=20 >>>> On 1/19/22 17:24, Mitchell Horne wrote: >>>>>=20 >>>>>=20 >>>>> On 1/17/22 15:02, Jakob Alvermark wrote: >>>>>> Hi, >>>>>>=20 >>>>>>=20 >>>>>> With RISC-V SBCs now coming down in price, I got curios and got = myself a Lichee RV (with the dock). >>>>>>=20 >>>>>> https://linux-sunxi.org/Sipeed_Lichee_RV >>>>>>=20 >>>>>> The instructions here, https://linux-sunxi.org/Allwinner_Nezha = along with some patching got me a working U-boot. >>>>>>=20 >>>>>> Cross-building and putting together and image for and SD card got = me this far: >>>>>>=20 >>>> <snip> >>>>>> Loading kernel... >>>>>> /boot/kernel/kernel text=3D0x609ddc text=3D0x133abc data=3D0xf4420 = data=3D0xb54+0x1d73e4 syms=3D[0x8+0xcd188+0x8+0xee5ae] >>>>>> Loading configured modules... >>>>>> can't find '/etc/hostid' >>>>>> can't find '/boot/entropy' >>>>>> Using DTB provided by EFI at 0x47ef5000. >>>>>> Kernel entry at 0x56a0002e... >>>>>> Kernel args: (null) >>>>>>=20 >>>>>> ----- >>>>>>=20 >>>>>> And here it stops for ~16 seconds then restarts, that's the = watchdog resetting it. >>>>>>=20 >>>>>> So where do I go from here? >>>>>>=20 >>>>> Hi Jakob, >>>>>=20 >>>>> Looks like it bails somewhere in the initial kernel setup, before = the first output to the console. This is a wide range, so it's difficult = to say exactly where things are going wrong. >>>>>=20 >>>>> I will say that generally FreeBSD is not expected to work on the = D1; as far as I know you are the first to try it. This hardware has some = quirks requiring special support, which we are entirely lacking. = Specifically, there is one related to virtual memory management, which = requires custom (spec-breaking) bits in the page tables to be set, to = properly specify the attributes of physical and device memory. This = _may_ have something to do with why it is failing where it is. It would = take a motivated party to add the support required for this SoC, and I'm = not aware of anyone currently taking this on. This board has caused some = headaches in Linux-land for the same reasons, but there are more hands = to do the work there. I just want to set the expectations properly :) >>>>>=20 >>>>> If you wanted to debug this further, you might rebuild the kernel = after adding 'options EARLY_PRINTF' to the config file, as this should = enable a couple early outputs and narrow down the search slightly. >>>>=20 >>>>=20 >>>> Hi Mitchell, >>>>=20 >>>>=20 >>>> I did not expect it to work. But it would be nice if it did. >>>>=20 >>>> I have a long experience with FreeBSD and I have played around with = a couple of different ARM-boards, but I'm not very experienced with = kernel hacking. >>>>=20 >>>> I built a kernel with EARLY_PRINTF, but it did not give me any more = output... >>>>=20 >>>> Is there anything else I could try? >>>>=20 >>>=20 >>> Yes, I missed an important detail: the required uart driver is = missing from the kernel. Please add 'device uart_snps' to the kernel = config as well, and see if this results in any output. >>=20 >>=20 >> Hi, I tried that, but sadly it did not make any difference. >>=20 >> I looked at what they have done in Linux, and this commit seems to = have some interesting bits: >>=20 >> = https://github.com/smaeul/linux/commit/c1bc61cee73e236c3cd69fe6c998b7f80c6= 54263#diff-4f4bb4eea826b523d76ddb1c539dad5685a0e7fd7cc8f1089a0493efd0e8e5b= 8=20 >=20 >=20 > Hi again, >=20 >=20 > I noticed they have updated the U-Boot code to specifically support = this board. >=20 > With nothing to loose, I decided to try it. >=20 > Now I get a little more: >=20 > [35]HELLO! BOOT0 is starting! > [38]BOOT0 commit : 525883d-dirty > [41]set pll start > [43]periph0 has been enabled > [46]set pll end > [47]board init ok > [49]DRAM only have internal ZQ!! > [52]get_pmu_exist() =3D -1 > [55]ddr_efuse_type: 0x0 > [58][AUTO DEBUG] single rank and full DQ! > [62]ddr_efuse_type: 0x0 > [65][AUTO DEBUG] rank 0 row =3D 15 > [68][AUTO DEBUG] rank 0 bank =3D 8 > [71][AUTO DEBUG] rank 0 page size =3D 2 KB > [75]DRAM BOOT DRIVE INFO: V0.24 > [77]DRAM CLK =3D 792 MHz > [80]DRAM Type =3D 3 (2:DDR2,3:DDR3) > [83]DRAMC ZQ value: 0x7b7bfb > [85]DRAM ODT value: 0x42. > [88]ddr_efuse_type: 0x0 > [91]DRAM SIZE =3D512 M > [94]DRAM simple test OK. > [96]dram size =3D512 > [98]card no is 0 > [100]sdcard 0 line count 4 > [102][mmc]: mmc driver ver 2021-04-2 16:45 > [112][mmc]: Wrong media type 0x0 > [115][mmc]: ***Try SD card 0*** > [132][mmc]: HSSDR52/SDR25 4 bit > [135][mmc]: 50000000 Hz > [137][mmc]: 15193 MB > [139][mmc]: ***SD/MMC 0 init OK!!!*** > [176]Loading boot-pkg Succeed(index=3D1). > [180]Entry_name =3D opensbi > [183]Entry_name =3D dtb > [185]Entry_name =3D u-boot > [189]Adding DRAM info to DTB. > [193]Jump to second Boot. >=20 > OpenSBI v1.0 > ____ _____ ____ _____ > / __ \ / ____| _ \_ _| > | | | |_ __ ___ _ __ | (___ | |_) || | > | | | | '_ \ / _ \ '_ \ \___ \| _ < | | > | |__| | |_) | __/ | | |____) | |_) || |_ > \____/| .__/ \___|_| |_|_____/|____/_____| > | | > |_| >=20 > Platform Name : Sipeed Lichee RV Dock > Platform Features : medeleg > Platform HART Count : 1 > Platform IPI Device : aclint-mswi > Platform Timer Device : aclint-mtimer @ 24000000Hz > Platform Console Device : uart8250 > Platform HSM Device : --- > Platform Reboot Device : sunxi-wdt-reset > Platform Shutdown Device : --- > Firmware Base : 0x40000000 > Firmware Size : 264 KB > Runtime SBI Version : 0.3 >=20 > Domain0 Name : root > Domain0 Boot HART : 0 > Domain0 HARTs : 0* > Domain0 Region00 : 0x0000000014008000-0x000000001400bfff (I) > Domain0 Region01 : 0x0000000014000000-0x0000000014007fff (I) > Domain0 Region02 : 0x0000000040000000-0x000000004007ffff () > Domain0 Region03 : 0x0000000000000000-0xffffffffffffffff = (R,W,X) > Domain0 Next Address : 0x000000004a000000 > Domain0 Next Arg1 : 0x0000000044000000 > Domain0 Next Mode : S-mode > Domain0 SysReset : yes >=20 > Boot HART ID : 0 > Boot HART Domain : root > Boot HART ISA : rv64imafdcvsux > Boot HART Features : scounteren,mcounteren,mcountinhibit,time > Boot HART PMP Count : 16 > Boot HART PMP Granularity : 2048 > Boot HART PMP Address Bits: 38 > Boot HART MHPM Count : 0 > Boot HART MIDELEG : 0x0000000000000222 > Boot HART MEDELEG : 0x000000000000b109 >=20 >=20 > U-Boot 2022.01-32931-gc249924b17-dirty (Feb 06 2022 - 17:29:00 +0100) >=20 > DRAM: 512 MiB > Core: 43 devices, 18 uclasses, devicetree: board > WDT: Started watchdog@6011000 with servicing (16s timeout) > MMC: mmc@4020000: 0, mmc@4021000: 1 > Loading Environment from nowhere... OK > In: serial@2500000 > Out: serial@2500000 > Err: serial@2500000 > Net: No ethernet found. > Hit any key to stop autoboot: 0 > switch to partitions #0, OK > mmc0 is current device > Scanning mmc 0:1... > ** Unable to read file / ** > Failed to load '/' > libfdt fdt_check_header(): FDT_ERR_BADMAGIC > Scanning disk mmc@4020000.blk... > Scanning disk mmc@4021000.blk... > Disk mmc@4021000.blk not ready > Found 3 disks > ** Unable to read file ubootefi.var ** > Failed to load EFI variables > BootOrder not defined > EFI boot manager: Cannot load any image > Found EFI removable media binary efi/boot/bootriscv64.efi > 1409436 bytes read in 248 ms (5.4 MiB/s) > libfdt fdt_check_header(): FDT_ERR_BADMAGIC > Booting /efi\boot\bootriscv64.efi >=20 > Consoles: EFI console > Reading loader env vars from /efi/freebsd/loader.env > Setting currdev to disk0p1: > FreeBSD/riscv EFI loader, Revision 1.1 > (Fri Jan 14 13:21:23 CET 2022 root@legion) >=20 > Command line arguments: l > Image base: 0x5e9d8000 > EFI version: 2.90 > EFI Firmware: Das U-Boot (rev 8226.256) > Console: comconsole (0) > Load Path: /efi\boot\bootriscv64.efi > Load Device: = /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/SD(0)/SD(0)/HD(1,GPT,1ab17495= -7795-11ec-9e49-f875a47d4ead,0xa1f8,0x10418) > Trying ESP: = /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/SD(0)/SD(0)/HD(1,GPT,1ab17495= -7795-11ec-9e49-f875a47d4ead,0xa1f8,0x10418) > Setting currdev to disk0p1: > Trying: = /VenHw(e61d73b9-a384-4acc-aeab-82e828f3628b)/SD(0)/SD(0)/HD(2,GPT,2973d4b3= -7795-11ec-9e49-f875a47d4ead,0x1a610,0x200000) > Setting currdev to disk0p2: > Loading /boot/defaults/loader.conf > Loading /boot/defaults/loader.conf > Loading /boot/device.hints > Loading /boot/loader.conf > Loading /boot/loader.conf.local > / > ______ ____ _____ _____ > | ____| | _ \ / ____| __ \ > | |___ _ __ ___ ___ | |_) | (___ | | | | > | ___| '__/ _ \/ _ \| _ < \___ \| | | | > | | | | | __/ __/| |_) |____) | |__| | > | | | | | | || | | | > |_| |_| \___|\___||____/|_____/|_____/ ``` = ` > s` = `.....---.......--.``` -/ > +---------- Welcome to FreeBSD -----------+ +o .--` /y:` +. > | | yo`:. :o `+- > | 1. Boot Multi user [Enter] | y/ -/` -o/ > | 2. Boot Single user | .- = ::/sy+:. > | 3. Escape to loader prompt | / `-- = / > | 4. Reboot | `: = :` > | 5. Cons: Video | `: = :` > | | / = / > | Options: | .- = -. > | 6. Kernel: default/kernel (1 of 1) | -- = -. > | 7. Boot Options | `:` `:` > | | .-- `--. > | | .---.....----. > +-----------------------------------------+ > Autoboot in 0 seconds. [Space] to pause >=20 > Loading kernel... > /boot/kernel/kernel text=3D0x5ef0ec text=3D0x1704dc data=3D0xf7900 = data=3D0xbcc+0x2741cc syms=3D[0x8+0xd0290+0x8+0xf1d3e] > Loading configured modules... > can't find '/boot/entropy' > can't find '/etc/hostid' > Using DTB provided by EFI at 0x47ef6000. > Kernel entry at 0x56a0002e... > Kernel args: (null) > ERROR loading DTB > panic: Boot hart ID was not properly set > cpuid =3D 0 > time =3D 1 > KDB: stack backtrace: > Uptime: 1s Like it says, your device tree is broken. U-Boot is supposed to copy the previous stage=E2=80=99s /chosen/boot-hartid to any device tree it = loads, but something=E2=80=99s gone wrong there. Not much FreeBSD can do about = that. Jess
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4975A04C-FF52-4FE4-91C3-E445C75EF62A>