aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorKristofer Jonsson <kristofer.jonsson@arm.com>2020-08-20 17:25:23 +0200
committerKristofer Jonsson <kristofer.jonsson@arm.com>2020-08-27 13:58:01 +0200
commit116a635581f292cb4882ea1a086f842904f85c3c (patch)
tree96ed12cebd8dbf9f1dc7b8f116be7d528779a2bb /README.md
parentcd13a572fe223fe95cd58c5b55b659885fb7b4cd (diff)
downloadethos-u-linux-driver-stack-116a635581f292cb4882ea1a086f842904f85c3c.tar.gz
Initial commit20.08-rc220.08
Change-Id: I14b6becc908a0ac215769c32ee9c43db192ae6c8
Diffstat (limited to 'README.md')
-rw-r--r--README.md72
1 files changed, 72 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..efa9803
--- /dev/null
+++ b/README.md
@@ -0,0 +1,72 @@
+# Linux driver stack for Arm Ethos-U
+
+The Linux driver stack for Arm Ethos-U provides an example of how a rich
+operating system like Linux can dispatch inferences to an Arm Cortex-M
+subsystem, consisting of an Arm Cortex-M of choice and an Arm Ethos-U NPU.
+
+## Licenses
+
+The kernel drivers are provided under a GPL v2 license. All other software
+componantes are provided under an Apache 2.0 license.
+
+## Building
+
+The driver stack comes with a CMake based build system. Cross compile for an Arm
+CPU can for example be done with the provided toolchain file.
+
+```
+$ mkdir build
+$ cd build
+$ cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain/aarch64-linux-gnu.cmake -DKDIR=<Kernel directory>
+$ make
+```
+
+## DTB
+
+The kernel driver uses the mailbox APIs as a doorbell mechanism.
+
+```
+/ {
+ reserved-memory {
+ #address-cells = <2>;
+ #size-cells = <2>;
+ ranges;
+
+ ethosu_msg: ethosu_msg@80000000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0x80000000 0 0x00040000>;
+ no-map;
+ };
+
+ ethosu_reserved: ethosu_reserved@80040000 {
+ compatible = "shared-dma-pool";
+ reg = <0 0x80040000 0 0x00040000>;
+ no-map;
+ };
+ };
+
+ ethosu_mailbox: mhu@6ca00000 {
+ compatible = "arm,mhu", "arm,primecell";
+ reg = <0x0 0x6ca00000 0x0 0x1000>;
+ interrupts = <0 168 4>;
+ interrupt-names = "npu_rx";
+ #mbox-cells = <1>;
+ clocks = <&soc_refclk100mhz>;
+ clock-names = "apb_pclk";
+ };
+
+ ethosu {
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ compatible = "arm,ethosu";
+ reg = <0 0x80000000 0 0x00010000>,
+ <0 0x80010000 0 0x00010000>;
+ reg-names = "in_queue", "out_queue";
+ memory-region = <&ethosu_reserved>;
+ dma-ranges = <0 0x60000000 0 0x80000000 0 0x20000000>;
+ mboxes= <&ethosu_mailbox 0>, <&ethosu_mailbox 0>;
+ mbox-names = "tx", "rx";
+ };
+};
+```