blob: 0a1a6f7dda5d2ab9cc1ef098d8d9fc8be6c49b9c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
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 initialize DDR and needed
peripherals. FSBL always start 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 toolchain 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 <https://github.com/kalray/build-scripts/releases>`_
.. [#f2] `Build scripts <https://github.com/kalray/build-scripts/>`_
|