Skip to content

SyterKit is a baremetal framework, As bootloader, MPU framework, Running on SRAM

License

Notifications You must be signed in to change notification settings

YuzukiHD/SyterKit

Repository files navigation

SyterKit

SyterKit LOGO_Thin

SyterKit is a bare-metal framework designed for Allwinner platform. SyterKit utilizes CMake as its build system and supports various applications and peripheral drivers. Additionally, SyterKit also has bootloader functionality

Support list

Board Manufacturer Platform Spec Details Config EOL Version
Yuzukilizard YuzukiHD V851s Cortex A7 board/yuzukilizard yuzukilizard.cmake 0.3.0
TinyVision YuzukiHD V851se Cortex A7 board/tinyvision tinyvision.cmake
100ask-t113s3 100ask T113-S3 Dual-Core Cortex A7 board/100ask-t113s3 100ask-t113s3.cmake
100ask-t113i 100ask T113-I Dual-Core Cortex A7 + C906 RISC-V board/100ask-t113i 100ask-t113i.cmake
100ask-d1-h 100ask D1-H C906 RISC-V board/100ask-d1-h 100ask-d1-h.cmake
dongshanpi-aict 100ask V853 Cortex A7 board/dongshanpi-aict dongshanpi-aict.cmake 0.3.0
project-yosemite YuzukiHD V853 Cortex A7 board/project-yosemite project-yosemite.cmake 0.3.0
100ask ROS 100ask R818 Quad-Core Cortex A53 board/100ask-ros 100ask-ros.cmake
longanpi-3h sipeed H618 Quad-Core Cortex A53 board/longanpi-3h longanpi-3h.cmake
longanpi-4b sipeed T527 Octa-Core Cortex A55 board/longanpi-4b longanpi-4b.cmake 0.3.0
LT527X myir-tech T527 Octa-Core Cortex A55 board/lt527x lt527x.cmake 0.3.0
Avaota A1 YuzukiHD T527/A527 Octa-Core Cortex A55 board/avaota-a1 avaota-a1.cmake
Yuzukihomekit YuzukiHD T113-M4020DC0 Dual-Core Cortex A7 + C906 RISC-V + HIFI4 DSP board/yuzukihomekit yuzukihomekit.cmake 0.3.0

Getting Started

SyterKit Architecture

SyterKit_Arch

Building SyterKit From Scratch

Building SyterKit is a straightforward process that only requires setting up the environment for compilation on a Linux operating system. The software packages required by SyterKit include:

  • gcc-arm-none-eabi
  • CMake

For commonly used Ubuntu systems, they can be installed using the following command:

sudo apt-get update
sudo apt-get install gcc-arm-none-eabi cmake build-essential -y

Then create a folder to store the compiled output files and navigate to it:

mkdir build
cd build

Finally, run the following commands to compile SyterKit:

cmake -DCMAKE_BOARD_FILE={Board_config_file.cmake} ..
make

For example, if you want to compile SyterKit for the TinyVision platform, you need the following command:

cmake -DCMAKE_BOARD_FILE=tinyvision.cmake ..
make

The compiled executable files will be located in build/board/{board_name}/{app_name}.

The SyterKit project will compile two versions: firmware ending with .elf is for USB booting and requires bootloading by PC-side software, while firmware ending with .bin is for flashing and can be written into storage devices such as TF cards and SPI NAND.

  • For SD Card, You need to flash the xxx_card.bin
  • For SPI NAND/SPI NOR, You need to flash the xxx_spi.bin

Creating TF Card Boot Firmware

After build the firmware, you can flash it into the TF card. For the V851s platform, you can write it to either an 8K offset or a 128K offset. Generally, if the TF card uses MBR format, write it with an 8K offset. If it uses GPT format, write it with a 128K offset. Assuming /dev/sdb is the target TF card, you can use the following command to write it with an 8K offset:

sudo dd if=syter_boot_bin_card.bin of=/dev/sdb bs=1024 seek=8

If it is a GPT partition table, you need to write it with a 128K offset:

sudo dd if=syter_boot_bin_card.bin of=/dev/sdb bs=1024 seek=128

Creating the Firmware for SPI NAND

For SPI NAND, we need to create the firmware for SPI NAND by writing SyterKit to the corresponding positions:

dd if=syter_boot_bin_spi.bin of=spi.img bs=2k
dd if=syter_boot_bin_spi.bin of=spi.img bs=2k seek=32
dd if=syter_boot_bin_spi.bin of=spi.img bs=2k seek=64

You can also include the Linux kernel and device tree in the firmware:

dd if=sunxi.dtb of=spi.img bs=2k seek=128     # DTB on page 128
dd if=zImage of=spi.img bs=2k seek=256        # Kernel on page 256

Use the xfel tool to flash the created firmware into SPI NAND:

xfel spinand write 0x0 spi.img

Creating the Firmware for SPI NOR

For SPI NOR, we need to create the firmware for SPI NOR by writing SyterKit to the corresponding positions:

dd if=syter_boot_bin_spi.bin of=spi.img bs=2k
dd if=syter_boot_bin_spi.bin of=spi.img bs=2k seek=32
dd if=syter_boot_bin_spi.bin of=spi.img bs=2k seek=64

You can also include the Linux kernel and device tree in the firmware:

dd if=sunxi.dtb of=spi.img bs=2k seek=128     # DTB on page 128
dd if=zImage of=spi.img bs=2k seek=256        # Kernel on page 256

Use the xfel tool to flash the created firmware into SPI NOR:

xfel spinor write 0x0 spi.img