Hikey is a development board with HiSilicon Kirin 620 eight-core ARM Cortex-A53 64-bit SoC. The original firmware is based on Tianocore EDK II, and I'd like to port coreboot to this board.

Challenges:

  • Learn about ARMv8 ISA, ARM TrustZone and ARM Trusted firmware
  • Find out the key initialization code in the UEFI firmware
  • Find the way to use the non-free blobs

Goal:

  • Flash the firmware to the board and use of the serial console to debug
  • Boot coreboot firmware
  • Try to boot an operating system

Looking for hackers with the skills:

coreboot uefi arm arm64

This project is part of:

Hack Week 14

Activity

  • almost 8 years ago: tonghuix liked this project.
  • over 8 years ago: mbrugger liked this project.
  • over 8 years ago: vimacs started this project.
  • over 8 years ago: vimacs added keyword "uefi" to this project.
  • over 8 years ago: vimacs added keyword "arm" to this project.
  • over 8 years ago: vimacs added keyword "arm64" to this project.
  • over 8 years ago: vimacs added keyword "coreboot" to this project.
  • over 8 years ago: a_faerber liked this project.
  • over 8 years ago: vimacs originated this project.

  • Comments

    • algraf
      over 8 years ago by algraf | Reply

      There are no non-free blobs on the HiKey IIRC. You can build ATF, EDK2, U-boot, etc all from source code.

      • vimacs
        over 8 years ago by vimacs | Reply

        I've found these blobs: - Watch Dog Driver - Flash Driver - SnpPV600 - MCU

        • a_faerber
          over 8 years ago by a_faerber | Reply

          Surely upstream U-Boot does not contain such blobs. Is there a reason you specifically want coreboot?

          • vimacs
            over 8 years ago by vimacs | Reply

            I just saw that u-boot supports this board, but it still needs the mcuimage.bin blob. The u-boot code base may be easier to understand than edk2, and the job can be easier.

            I think what coreboot can do better than other firmware projects is that it can use many customized payloads, a mature and simplified code base, features like cbmem for debugging and logging, etc.

    Similar Projects

    Investigate non-booting Forlinx OKMX8MX-C board (aarch64) by a_faerber

    Description

    In the context of a SUSE customer inquiry last year, a Forlinx OKMX8MX-C arm64 board had been relayed to me from China that a customer was not successful booting SUSE Linux Micro on. Typically this happens when the vendor's bootloader (e.g., U-Boot) is not configured properly (e.g., U-Boot's distro boot) to be compliant with Arm SystemReady Devicetree (formerly IR) band. Unfortunately I could not immediately get it to emit any output, to even diagnose why it wasn't working. There was no public documentation on the vendor's website to even confirm I was checking the right UARTs.

    Earlier this year (2024) I happened to meet the ODM/OEM, Forlinx, at Embedded World 2024 in Nuremberg and again the Monday before Hackweek 24 at Electronica 2024 in Munich. The big puzzle was that the PCB print "OKMX8MX-C" does not match any current Forlinx product, there being OKMX8MM-C and OKMX8MP-C products with the Mini and Plus variants of NXP i.MX 8M family instead. One suggestion from Forlinx staff was to double-check the DIP switches on the board for boot mode selection.

    Goals

    Double-check the board name and investigate further what may be wrong with this board.

    Resources

    none

    Progress

    • The board name is indeed as spelled above, not matching any product on forlinx.net.
    • The DIP switches were set to boot from microSD.
    • Changing the DIP switches to eMMC boot did result in UART1 RS-232 output! (although at times garbled with the cable supplied and USB adapter used)
    • As feared, it did not automatically load our GRUB from USB.
    • Booting our GRUB manually from USB (via eMMC U-Boot commands fatload+bootefi) was unsuccessful, with partially Chinese error messages.
    • This confirmed the initial suspicion, already shared with Forlinx at Embedded World 2024, that the Forlinx System-on-Module's boot firmware was not Arm SystemReady Devicetree compliant and that a firmware update would be necessary to remedy that.
    • The microSD card turned out not to contain a bootable image but to only include Chinese-language board documentation (dated 20220507) and BSP files. They used a diverging name of OKMX8MQ-C.


    Create openSUSE images for Arm/RISC-V boards by avicenzi

    Project Description

    Create openSUSE images (or test generic EFI images) for Arm and/or RISC-V boards that are not yet supported.

    Goal for this Hackweek

    Create bootable images of Tumbleweed for SBCs that currently have no images available or are untested.

    Consider generic EFI images where possible, as some boards can hold a bootloader.

    Document in the openSUSE Wiki how to flash and use the image for a given board.

    Boards that I have around and there are no images:

    • Rock 3B
    • Nano PC T3 Plus
    • Lichee RV D1
    • StartFive VisionFive (has some image needs testing)

    Hack Week 22

    Hack Week 21

    Resources