U-Boot for Beelink GS-King-X (S922X)
The Shenzen AZW (Beelink) GS-King-X is based on the Amlogic W400 reference board with an S922X-H chip and the following specifications:
4GB LPDDR4 RAM
64GB eMMC storage
10/100/1000 Base-T Ethernet
AP6356S Wireless (802.11 a/b/g/n/ac, BT 4.1)
HDMI 2.1 video
S/PDIF optical output
2x ESS9018 audio DACs
4x Ricor RT6862 audio amps
Analogue headphone output
1x USB 2.0 OTG port
3x USB 3.0 ports
IR receiver
1x micro SD card slot (internal)
USB SATA controller with 2x 3.5" drive bays
1x Power on/off button
Beelink do not provide public schematics, but have been willing to share them with known distro developers to assist with development.
U-Boot Compilation
$exportCROSS_COMPILE=aarch64-none-elf- $makebeelink-gsking-x_defconfig $make
U-Boot Signing with Pre-Built FIP repo
$gitclonehttps://github.com/LibreELEC/amlogic-boot-fip--depth=1 $cdamlogic-boot-fip $mkdirmy-output-dir $./build-fip.shbeelink-s922x/path/to/u-boot/u-boot.binmy-output-dir
U-Boot Manual Signing
Beelink released an Amlogic "SDK" dump in their forums but the U-Boot sources included result in 2GB RAM detected. The following FIPs were generated with newer sources and detect 4GB RAM: https://github.com/LibreELEC/amlogic-boot-fip/tree/master/beelink-s922x
$wgethttps://github.com/LibreELEC/amlogic-boot-fip/archive/master.zip $unzipmaster.zip $exportFIPDIR=$PWD/amlogic-boot-fip/beelink-s922x
Go back to the mainline U-Boot source tree then:
$mkdirfip $cp$FIPDIR/*fip/ $cpu-boot.binfip/bl33.bin $shfip/blx_fix.sh\ fip/bl30.bin\ fip/zero_tmp\ fip/bl30_zero.bin\ fip/bl301.bin\ fip/bl301_zero.bin\ fip/bl30_new.bin\ bl30 $shfip/blx_fix.sh\ fip/bl2.bin\ fip/zero_tmp\ fip/bl2_zero.bin\ fip/acs.bin\ fip/bl21_zero.bin\ fip/bl2_new.bin\ bl2 $fip/aml_encrypt_g12b--bl30sig--inputfip/bl30_new.bin\ --outputfip/bl30_new.bin.g12a.enc\ --levelv3 $fip/aml_encrypt_g12b--bl3sig--inputfip/bl30_new.bin.g12a.enc\ --outputfip/bl30_new.bin.enc\ --levelv3--typebl30 $fip/aml_encrypt_g12b--bl3sig--inputfip/bl31.img\ --outputfip/bl31.img.enc\ --levelv3--typebl31 $fip/aml_encrypt_g12b--bl3sig--inputfip/bl33.bin--compresslz4\ --outputfip/bl33.bin.enc\ --levelv3--typebl33 $fip/aml_encrypt_g12b--bl2sig--inputfip/bl2_new.bin\ --outputfip/bl2.n.bin.sig $fip/aml_encrypt_g12b--bootmk\ --outputfip/u-boot.bin\ --bl2fip/bl2.n.bin.sig\ --bl30fip/bl30_new.bin.enc\ --bl31fip/bl31.img.enc\ --bl33fip/bl33.bin.enc\ --ddrfw1fip/ddr4_1d.fw\ --ddrfw2fip/ddr4_2d.fw\ --ddrfw3fip/ddr3_1d.fw\ --ddrfw4fip/piei.fw\ --ddrfw5fip/lpddr4_1d.fw\ --ddrfw6fip/lpddr4_2d.fw\ --ddrfw7fip/diag_lpddr4.fw\ --ddrfw8fip/aml_ddr.fw\ --levelv3
Then write U-Boot to SD or eMMC with:
$DEV=/dev/boot_device $ddif=fip/u-boot.bin.sd.binof=$DEVconv=fsync,notruncbs=512skip=1seek=1 $ddif=fip/u-boot.bin.sd.binof=$DEVconv=fsync,notruncbs=1count=440