Re: Sipeed Lichee RV (Allwinner D1)

From: Jakob Alvermark <jakob_at_alvermark.net>
Date: Mon, 07 Feb 2022 17:38:44 UTC
On 1/29/22 16:12, Jakob Alvermark wrote:
>
> On 1/28/22 16:29, Mitchell Horne wrote:
>> On 1/19/22 18:05, Jakob Alvermark wrote:
>>>
>>> On 1/19/22 17:24, Mitchell Horne wrote:
>>>>
>>>>
>>>> On 1/17/22 15:02, Jakob Alvermark wrote:
>>>>> Hi,
>>>>>
>>>>>
>>>>> With RISC-V SBCs now coming down in price, I got curios and got 
>>>>> myself a Lichee RV (with the dock).
>>>>>
>>>>> https://linux-sunxi.org/Sipeed_Lichee_RV
>>>>>
>>>>> The instructions here, https://linux-sunxi.org/Allwinner_Nezha 
>>>>> along with some patching got me a working U-boot.
>>>>>
>>>>> Cross-building and putting together and image for and SD card got 
>>>>> me this far:
>>>>>
>>> <snip>
>>>>> Loading kernel...
>>>>> /boot/kernel/kernel text=0x609ddc text=0x133abc data=0xf4420 
>>>>> data=0xb54+0x1d73e4 syms=[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)
>>>>>
>>>>> -----
>>>>>
>>>>> And here it stops for  ~16 seconds then restarts, that's the 
>>>>> watchdog resetting it.
>>>>>
>>>>> So where do I go from here?
>>>>>
>>>> Hi Jakob,
>>>>
>>>> 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.
>>>>
>>>> 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 :)
>>>>
>>>> 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.
>>>
>>>
>>> Hi Mitchell,
>>>
>>>
>>> I did not expect it to work. But it would be nice if it did.
>>>
>>> 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.
>>>
>>> I built a kernel with EARLY_PRINTF, but it did not give me any more 
>>> output...
>>>
>>> Is there anything else I could try?
>>>
>>
>> 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.
>
>
> Hi, I tried that, but sadly it did not make any difference.
>
> I looked at what they have done in Linux, and this commit seems to 
> have some interesting bits:
>
> https://github.com/smaeul/linux/commit/c1bc61cee73e236c3cd69fe6c998b7f80c654263#diff-4f4bb4eea826b523d76ddb1c539dad5685a0e7fd7cc8f1089a0493efd0e8e5b8 
>


Hi again,


I noticed they have updated the U-Boot code to specifically support this 
board.

With nothing to loose, I decided to try it.

Now I get a little more:

[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() = -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 = 15
[68][AUTO DEBUG] rank 0 bank = 8
[71][AUTO DEBUG] rank 0 page size = 2 KB
[75]DRAM BOOT DRIVE INFO: V0.24
[77]DRAM CLK = 792 MHz
[80]DRAM Type = 3 (2:DDR2,3:DDR3)
[83]DRAMC ZQ value: 0x7b7bfb
[85]DRAM ODT value: 0x42.
[88]ddr_efuse_type: 0x0
[91]DRAM SIZE =512 M
[94]DRAM simple test OK.
[96]dram size =512
[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=1).
[180]Entry_name        = opensbi
[183]Entry_name        = dtb
[185]Entry_name        = u-boot
[189]Adding DRAM info to DTB.
[193]Jump to second Boot.

OpenSBI v1.0
    ____                    _____ ____ _____
   / __ \                  / ____|  _ \_   _|
  | |  | |_ __   ___ _ __ | (___ | |_) || |
  | |  | | '_ \ / _ \ '_ \ \___ \|  _ < | |
  | |__| | |_) |  __/ | | |____) | |_) || |_
   \____/| .__/ \___|_| |_|_____/|____/_____|
         | |
         |_|

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

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

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


U-Boot 2022.01-32931-gc249924b17-dirty (Feb 06 2022 - 17:29:00 +0100)

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

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)

    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

Loading kernel...
/boot/kernel/kernel text=0x5ef0ec text=0x1704dc data=0xf7900 
data=0xbcc+0x2741cc syms=[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 = 0
time = 1
KDB: stack backtrace:
Uptime: 1s