You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on May 7, 2025. It is now read-only.
@@ -3,26 +3,24 @@ MultiZone® Security TEE for RISC-V processors
3
3
4
4
**MultiZone® Security** is the quick and safe way to add security and separation to RISC-V processors. MultiZone software can retrofit existing designs. If you don’t have TrustZone-like hardware, or if you require finer granularity than one secure world, you can take advantage of high security separation without the need for hardware and software redesign, eliminating the complexity associated with managing a hybrid hardware/software security scheme. RISC-V standard ISA doesn't define TrustZone-like primitives to provide hardware separation. To shield critical functionality from untrusted third-party components, MultiZone provides hardware-enforced, software-defined separation of multiple equally secure worlds. Unlike antiquated hypervisor-like solutions, MultiZone is self-contained, presents an extremely small attack surface, and it is policy driven, meaning that no coding is required – and in fact even allowed.
5
5
6
-
MultiZone works with any 32-bit or 64-bit RISC-V standard processors with Physical Memory Protection unit and U mode.
6
+
MultiZone works with any 32-bit or 64-bit RISC-V processors with standard Physical Memory Protection unit (PMP) and “U” mode.
7
7
8
-
This version of the GNU-based SDK supports the following hardware:
9
-
-[Digilent Arty A7 Development Board (Xilinx Artix-7 FPGA)](https://www.xilinx.com/products/boards-and-kits/arty.html)
10
-
-[SiFive HiFive1 Rev B (Freedom E310 SoC)](https://www.sifive.com/boards/hifive1-rev-b)
8
+
This release of the MultiZone SDK supports the following development boards:
9
+
-[Digilent Arty A7 Development Board (Xilinx Artix-7 FPGA)](https://digilent.com/shop/arty-a7-artix-7-fpga-development-board/)
- Hex Five's X300 bitstream works with version 35T
24
-
- SiFive's bitstreams up to v19.02 work with version 35T
25
-
- SiFive's bitstreams after v19.02 work with version 100T
23
+
Note: The Digilent Arty A7 FPGA is available in two versions: 35T and 100T. The Hex Five X300 bitstream works with the smaller 35T. The SiFive bitstreams require the larger 100T.
26
24
27
25
For instructions on how to upload the bitstream to the ARTY board and how to connect the [Olimex debug head ARM-USB-TINY-H](https://www.olimex.com/Products/ARM/JTAG/ARM-USB-TINY-H/) see [Arty FPGA Dev Kit Getting Started Guide](https://sifive.cdn.prismic.io/sifive%2Fed96de35-065f-474c-a432-9f6a364af9c8_sifive-e310-arty-gettingstarted-v1.0.6.pdf)
28
26
@@ -38,7 +36,6 @@ sudo apt update
38
36
sudo apt install make default-jre gtkterm libhidapi-dev libftdi1-2
39
37
```
40
38
Ubuntu 18.04 LTS additional dependency
41
-
42
39
```
43
40
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu/ focal main universe"
44
41
sudo apt update
@@ -48,20 +45,20 @@ Note: GtkTerm is optional and required only to connect to the reference applicat
48
45
49
46
**GNU RISC-V Toolchain**
50
47
51
-
Hex Five reference build: RISC-V GNU Toolchain Linux 64-bit June 13, 2020
48
+
Hex Five reference build: RISC-V GNU Toolchain Linux 64-bit August 07, 2021
Note: the SiFive HiFive1 board doesn't support OpenOCD and requires the Segger propietary package JLink_Linux_V694_x86_64.deb downloadable at [https://www.segger.com/downloads/jlink/](https://www.segger.com/downloads/jlink/).
67
64
@@ -74,36 +71,40 @@ sudo vi /etc/udev/rules.d/99-openocd.rules
This repository includes an optional Eclipse CDT project for developers familiar with this IDE. No additional plugins are required to build and upload MultiZone to the target. The [OpenOCD debugging plug-in](https://eclipse-embed-cdt.github.io/debug/openocd) is optional and recommended.
161
+
162
+
**Eclipse project Setup**
163
+
164
+
File > Open Projects from File System > Import source: ~/multizone-sdk
165
+
166
+
Project > Properties > C/C++ Build > Environment: set RISCV and OPENOCD variables according to your installation
No additional software dependencies are required to run MultiZone-based applications. To ease the integration of the MultiZone TEE with legacy applications based on the popular FreeRTOS operating system, the MultiZone SDK includes an optional zone3.1 running FreeRTOS 10.4.0. Its functionality is identical to the one of the original zone3 that controls the robot, but it is implemented as a typical FreeRTOS applications with four tasks and one interrupt handler.
Edit multizone-sdk/Makefile and change the two references to "zone3" into "zone3.1" :
185
+
186
+
```
187
+
...
188
+
189
+
.PHONY: all
190
+
all: clean
191
+
$(MAKE) -C zone1
192
+
$(MAKE) -C zone2
193
+
$(MAKE) -C zone3
194
+
$(MAKE) -C zone3.1
195
+
$(MAKE) -C zone4
196
+
$(MAKE) -C bsp/$(BOARD)/boot
197
+
198
+
java -jar multizone.jar \
199
+
--arch $(BOARD) \
200
+
--config bsp/$(BOARD)/multizone.cfg \
201
+
--boot bsp/$(BOARD)/boot/boot.hex \
202
+
zone1/zone1.hex \
203
+
zone2/zone2.hex \
204
+
zone3.1/zone3.hex \
205
+
zone4/zone4.hex
206
+
207
+
...
208
+
```
209
+
Build and load to flash with the commands “make” and “make load”.
210
+
211
+
Note: to activate MultiZone deep-sleep suspend, set configUSE_TICKLESS_IDLE 1 and configUSE_IDLE_HOOK 0 in ext/FreeRTOSConfig.h. This enables Hex Five’s optimized implementation of the FreeRTOS vPortSuppressTicksAndSleep() that takes full advantage of the RISC-V instruction wfi.
212
+
213
+
214
+
### MultiZone TEE Technical Specs ###
156
215
||
157
216
|---|
158
-
| Up to 8 hardware threads (zones) hardware-enforced, software-defined |
159
-
| Up to 8 memory mapped resources per zone – i.e. flash, ram, rom, i/o, etc. |
0 commit comments