[RFC 5/5] doc: describe Milk-V Mars board
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Fri Mar 8 23:49:13 CET 2024
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.schuchardt at canonical.com
> <mailto:heinrich.schuchardt at canonical.com>> wrote:
>
> On 3/8/24 00:20, E Shattow wrote:
> >
> > On Sun, Mar 3, 2024 at 5:02 AM Heinrich Schuchardt
> > <heinrich.schuchardt at canonical.com
> <mailto:heinrich.schuchardt at canonical.com>
> > <mailto:heinrich.schuchardt at canonical.com
> <mailto:heinrich.schuchardt at 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
>
More information about the U-Boot
mailing list