[PATCH v4 00/13] Support OF_UPSTREAM for StarFive JH7110

Anand Moon linux.amoon at gmail.com
Sun Nov 17 14:04:24 CET 2024


Hi E Sattow,

I realize now that my question was outside the scope of the patches series.
Thank you for providing more details.

On Thu, 14 Nov 2024 at 23:07, E Shattow <lucent at gmail.com> wrote:
>
> Hi Anand,
>
> On Wed, Nov 13, 2024 at 8:42 PM Anand Moon <linux.amoon at gmail.com> wrote:
> >
> > Hi Hal,
> >
> > On Mon, 11 Nov 2024 at 07:53, Hal Feng <hal.feng at starfivetech.com> wrote:
> > >
> > > This patchset add OF_UPSTREAM support for StarFive JH7110 based boards.
> > > All the JH7110 based boards can use the DT from upstreaming linux kernel.
> > > The v1.3b board device tree is set as the default device tree. Support
> > > CONFIG_MULTI_DTB_FIT and the SPL selects the correct U-Boot dtb using the
> > > EEPROM information.
> > >
> >
> > I am encountering an issue with my Milk-V CM. I am unable to use the
> > SD card with the CM4 IO board.
> > The onboard SPI switch does not support a boot configuration switch,
> > so the default boot is set to eMMC.
>
> Mars CM and Mars CM Lite are not able to boot from eMMC and SD Card.
> There is transistor logic on Mars CM and Mars CM Lite which only
> allows UART or SPI NOR Flash depending on the state of nRPIBOOT.
>
> Perhaps you are thinking of SPI NOR Flash boot of JH7110 which is
> jumping execution to SPI NOR Flash offset 0 where, presumed it is
> where you have U-Boot SPL?
>
> From then U-Boot SPL may load U-Boot Main payload depending on the
> state of configuration switch, so then UART for UART setting, or SPI
> NOR Flash at 0x100000 offset for SPI NOR Flash setting.
>
> U-Boot Main may then execute as normal including SD Card or eMMC. This
> is distinct from the concept of JH7110 zeroth boot loader in mask ROM
> loading from SD Card or eMMC.
>
> >
> > Please suggest a method to flash an image onto the eMMC on the CM board.
>
> This will not work with the OF_UPSTREAM patch set of topic (yet)
> because simply Mars CM and Mars CM Lite devicetree do not exist
> upstream.
>
> You may use U-Boot stable release v2024.10 as a recovery tool to flash
> U-Boot v2024.10 into SPI NOR Flash which, exclusive of this
> OF_UPSTREAM patch series, has some runtime fix-up adjusting the Milk-V
> Mars devicetree for Mars CM or Mars CM Lite depending on EEPROM
> content.
>
> For that to work you will also need to verify and perhaps adjust the
> EEPROM content of your Mars CM for accuracy per the advisory from
> Milk-V; from what information you have shared you may have a 4GB RAM
> model with 16GB eMMC and if that is accurate then no change to the
> EEPROM content is needed.
>
> When you have for example U-Boot v2024.10 installed to SPI NOR Flash
> and it does have the fix-up at runtime to allow functional eMMC, then
> you may use any of the methods available to that version of U-Boot:
>
> 1. You can load data from TFTP to DRAM address for write operation
> onto the eMMC directly but you will have to invent some scripting to
> do the required math between byte counts and block unit offsets.
> 2. You can load an OS from TFTP to DRAM and boot; for example the
> Debian debian-installer netinst Linux kernel and initial ramdisk.
> 3. There is not any working JH7110 on-CPU USB driver in U-Boot
> v2024.10 so the use of USB (as a reasonable person would attempt) is
> not possible. Patches exist for this and is something that will be
> possible in future but not yet. You will note that if your Mars CM is
> installed to a carrier board that has additionally a VL805 USB
> controller on the PCI bus then USB may actually work because the
> VisionFive2 has this same PCI+VL805 for USB. It is not typical though
> for CM4 carrier boards... but I recall reading that they do exist so
> worth a mention here.
>
Yes, I need to set up TFTP boot to resolve my issue.
Let me give this a try.
> >
> > I have tried the instructions to update the firmware using
> > [1] https://milkv.io/docs/mars/compute-module/boot
>
> Milk-V USB flash tool at the link loads a closed-source SPL binary via
> JH7110 UART configuration that postures as a USB endpoint (using the
> JH7110 on-CPU USB function) and the companion software that talks to
> it is "compiled" closed-source python. Make your own conclusion...
> mine is that U-Boot+TFTP is good enough and preferentially it is open
> source.
>
> See:
>
> https://docs.u-boot.org/en/v2024.10/board/starfive/milk-v_mars_cm.html
>
> https://github.com/geerlingguy/sbc-reviews/issues/22#issuecomment-1908676618
Cool, thanks for sharing this link. This blog shares almost all the cases
needed to resolve my issue so I will try it.
>
> https://milkv.io/docs/mars/compute-module/update-eeprom
>
> >
> > Thank you so much for your help.
> >
> > Thanks
> > -Anand
> >
> > --------EEPROM INFO--------
> > Vendor : MILK-V
> > Product full SN: MARC-V10-2340-D004E016-00000812
> > data version: 0x2
> > PCB revision: 0xc1
> > BOM revision: A
> > Ethernet MAC0 address: 6c:cf:39:00:85:6b
> > Ethernet MAC1 address: 6c:cf:39:00:85:6c
> > --------EEPROM INFO--------
> >
> > starfive_7110_pcie pcie at 940000000: Starfive PCIe bus probed.
> > starfive_7110_pcie pcie at 9c0000000: Starfive PCIe bus probed.
> > In:    serial at 10000000
> > Out:   serial at 10000000
> > Err:   serial at 10000000
> > Net:   Could not fetch index
> > Could not fetch index
> > eqos_probe_resources() failed: -22
> > Could not fetch index
> > eqos_probe_resources() failed: -22
> > eth1: ethernet at 16040000
> > starting USB...
> > Bus xhci_pci: Register 5000420 NbrPorts 5
> > Starting the controller
> > USB XHCI 1.00
> > scanning bus xhci_pci for devices... Resetting EP 0...
> > 3 USB Device(s) found
> >        scanning usb for storage devices... 1 Storage Device(s) found
> > Working FDT set to ff725a10
> > Hit any key to stop autoboot:  0
> > StarFive # mmc info
> > Device: mmc at 16010000
> > Manufacturer ID: 15
> > OEM: 0
> > Name: AJTD4R
> > Bus Speed: 45333334
> > Mode: MMC High Speed (52MHz)
> > Rd Block Len: 512
> > MMC version 5.1
> > High Capacity: Yes
> > Capacity: 14.6 GiB
> > Bus Width: 8-bit
> > Erase Group Size: 512 KiB
> > HC WP Group Size: 8 MiB
> > User Capacity: 14.6 GiB WRREL
> > Boot Capacity: 4 MiB ENH
> > RPMB Capacity: 4 MiB ENH
> > Boot area 0 is not write protected
> > Boot area 1 is not write protected
> > StarFive # mmc rescan
> > StarFive # mmc rescan
> > StarFive #
> > StarFive # mmc part
> > ## Unknown partition table type 0
>
> I will say on-topic that although it is a regression in functionality
> for U-Boot from the v2024.10 stable release to apply OF_UPSTREAM
> series, the absence of Mars CM and Mars CM Lite should not be blockers
> for OF_UPSTREAM patch set. It is time to submit these upstream (to
> Linux kernel) which is not our problem here, and besides this there
> are more JH7110 board support devicetree being accepted upstream which
> are not represented here now. The missing functionality will be
> restored after this is done.
>
Alright, I will now flash v2024.10 to address the issue
> All users who want to have working Mars CM and Mars CM Lite should
> stay with U-Boot stable version v2024.10, and to focus on contributing
> with Linux upstream for these boards.
>
Go that.
> -E

Thanks
-Anand


More information about the U-Boot mailing list