KVX === The Kalray VLIW processor family (KVX) has the following features: - 32/64 bits execution mode - 6-issue VLIW architecture - 64 x 64bits general purpose registers - SIMD instructions - little-endian - deep learning co-processor Kalray kv3 core which is the third of the KVX family is embedded in Kalray MPPA3-80 SoC currently used on K200 boards. This SoC contains 5 clusters which are each made of: - 4MiB of on-chip memory - 1 dedicated safety/security core (kv3 core). - 16 PEs (Processing Elements) (kv3 cores). - 16 Co-processors (one per PE) - 2 x Crypto accelerators MPPA3-80 SoC contains the following features: - 5 x Clusters - 2 x 100G Ethernet controllers - 8 x PCIe GEN4 controllers (Root Complex and Endpoint capable) - 2 x USB 2.0 controllers - 1 x Octal SPI-NOR flash controller - 1 x eMMC controller - 3 x Quad SPI controllers - 6 x UART - 5 x I2C controllers (3 x SMBus capable) - 4 x CAN controller - 1 x OTP memory The Kalray VLIW architecture barebox port allows to boot it as a second stage bootloader (SSBL). It is loaded after the FSBL which initializes DDR and needed peripherals. FSBL always starts on the Security Core of Cluster 0. The FSBL can load elf files and pass them a device tree loaded from SPI NOR flash. As such, barebox should be flashed as an elf file into the SSBL partition. KVX boards ---------- .. toctree:: :glob: :maxdepth: 1 kvx/* Getting a toolchain ------------------- Pre-built toolchains are available from github ([#f1]_). In order to build one from scratch, build scripts are available on github too ([#f2]_). Once built or downloaded, a ``kvx-elf-`` toolchain will be available and should be added to your ``PATH``. Building barebox ---------------- Currently, kvx port is provided with a defconfig named ``generic_defconfig``. To build it, first generate the config and then run the build: .. code-block:: sh make ARCH=kvx O=$PWD/build defconfig make ARCH=kvx O=$PWD/build all This will generate a ``barebox`` elf file. By default barebox for kvx is compiled to be run at address 0x110000000. Booting barebox --------------- ``barebox`` elf file can be loaded using ``kvx-jtag-runner`` to execute the image via JTAG on an existing board. Depending on your board and barebox version, you should see the following message appearing on the serial console. .. code-block:: console barebox 2020.03.0-00126-ga74988bf5 #3 Wed Apr 15 11:31:28 CEST 2020 Board: KONIC 200 (K200) malloc space: 0x110050fe0 -> 0x200000000 (size 3.7 GiB) Hit any to stop autoboot: 3 barebox:/ .. rubric:: References .. [#f1] `Toolchain releases `_ .. [#f2] `Build scripts `_