On 3/8/24 22:48, E Shattow wrote:
Yes this reference to GPIO high/low states is clearer to understand. Have you tested the DIP switch functionality to confirm?; It is not shown in the MilkV documentation or outdated schematics and I don't have a Mars to test. I did find function descriptions from what is likely cut-and-paste of VisionFive2 board reference.

Ref: https://github.com/milkv-mars/mars-files/blob/main/Mars_hardware_schematics/Mars_V1.11_20230821.pdf <https://github.com/milkv-mars/mars-files/blob/main/Mars_hardware_schematics/Mars_V1.11_20230821.pdf> Sheet 7 of 22 JH7110 GPIOs
There is a schematic for SW2 (bootloader button?) that lists an inset table:
* - GPIO_1
   - GPIO_0
   - Boot
* - 0
   - 0
   - Flash
* - 0
   - 1
   - SD
* - 1
   - 0
   - eMMC
* - 1
   - 1
   - UART

That circuit on SW2 appears to pull high both RGPIO_1 and RGPIO_0 with transistors. Again, no DIP switch as this is an earlier revision.

Ref: https://doc-en.rvspace.org/VisionFive2/Developer_Guide/JH7110_Boot_UG.pdf <https://doc-en.rvspace.org/VisionFive2/Developer_Guide/JH7110_Boot_UG.pdf>  page 9 table 1-4: RGPIO1=0x0 RGPIO0=0x0 Boot Source: Quad SPI NOR flash memory, Read SPL from Sector 0. RGPIO1=0x1 RGPIO0=0x1 Boot Source: UART0, (description of UART Xmodem function).

Following in the same document on page 13 figure 2-1 Boot Flow:
JH7110supportsthefollowingbootdevices.
QSPIFlash(ForSPL + OpenSBI + U-Boot)+NVMe/SDCard/eMMC(ForKernel+FileSystemandlater) Note: System will detect in sequence whether it can boot from the following device sequence: NVMe > SD > eMMC.
For example,if the boot program is found on the SD, eMMC will be ignored.

The GPIOs select from where U-Boot SPL is loaded. Currently U-Boot SPL loads main U-Boot from the same device. But you could change it to scan multiple devices for main U-Boot.

Once you have successfully loaded main U-Boot, main U-Boot will scan the different boot devices. This includes NVME, eMMC, SD, USB, Network.

Currently upstream U-Boot development is moving from hard coded sequences in board files to configurable boot sequences.


Again in this document Figure 4-2 on page 17 is a visual listing of the DIP switch positions for QSPI, SDIO, eMMC, and UART boot modes, of the VisionFive2 board.

These are just the same switches as on the Milk-V.


The only consistent physical interface over VisionFive2, Mars, Star64, Mars CM all is RGPIO1=L RGPIO0=L SPI and RGPIO1=H RGPIO1=H UART; either by DIP switch or pushbutton attached circuit. So, I question our assumptions about what the actual behavior is for RGPIO1=H RGPIO0=L pairing and RGPIO1=L RGPIO0=H, and in what circumstance would there be followed a device sequence as suggested by the JH7110 reference. Why does the StarFive documentation list a JH7110 boot device sequence if there is also these H+L or L+H pairings to choose the device?

As said the device sequence including NVMe is not realized by the code loading U-Boot SPL. It is realized in main U-Boot.

Best regards

Heinrich


On Thu, Mar 7, 2024 at 6:37 PM Heinrich Schuchardt <heinrich.schucha...@canonical.com <mailto:heinrich.schucha...@canonical.com>> wrote:

    On 3/8/24 00:20, E Shattow wrote:
     >
     > On Sun, Mar 3, 2024 at 5:02 AM Heinrich Schuchardt
     > <heinrich.schucha...@canonical.com
    <mailto:heinrich.schucha...@canonical.com>
     > <mailto:heinrich.schucha...@canonical.com
    <mailto:heinrich.schucha...@canonical.com>>> wrote:
     > ...
     >
     >     +The board provides the DIP switches MSEL[1:0] to select the boot
     >     device out of
     >     +SPI flash, eMMC, SD-card, UART. To select booting from
    SD-card set
     >     the DIP
     >     +switches MSEL[1:0] to 10.
     >
     >
     > This does not match the [Milk-V Mars vendor
     >
    documentation](https://milkv.io/docs/mars/getting-started/bootloader
    <https://milkv.io/docs/mars/getting-started/bootloader>
     > <https://milkv.io/docs/mars/getting-started/bootloader
    <https://milkv.io/docs/mars/getting-started/bootloader>>). Maybe you
    have
     > a different board revision?

    Thank you for reviewing.

    My board revision is V1.21 according to the silk screen.

    The Milk-V Mars has DIP switches for the boot selection as shown in
    https://gist.github.com/xypron/e28f95b1ed6911aeb9699ba63ae1a885
    <https://gist.github.com/xypron/e28f95b1ed6911aeb9699ba63ae1a885>

    If you look at the photo
    https://milkv.io/assets/images/mars-icon-04-e8814f18158a0e9d4387f4fa330693f1.webp 
<https://milkv.io/assets/images/mars-icon-04-e8814f18158a0e9d4387f4fa330693f1.webp>
    in the https://milkv.io/mars <https://milkv.io/mars> page, it also
    shows DIP switches (in the
    SPI-Flash position) on a rev 1.2 board.

    Did you see a board without DIP switches being sold?

    The silk screen markings on the board and the switch don't match.
    The same confusion exists on the VisionFive2.

    So maybe I should better write in a table:

    SPI-Flash:
    GPIO0=L
    GPIO1=L

    SD-Card:
    GPIO0=H
    GPIO1=L

    eMMC:
    GPIO0=L
    GPIO1=H

    UART:
    GPIO0=H
    GPIO1=H

    Best regards

    Heinrich


Reply via email to