From 116a635581f292cb4882ea1a086f842904f85c3c Mon Sep 17 00:00:00 2001 From: Kristofer Jonsson Date: Thu, 20 Aug 2020 17:25:23 +0200 Subject: Initial commit Change-Id: I14b6becc908a0ac215769c32ee9c43db192ae6c8 --- README.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 README.md (limited to 'README.md') 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= +$ 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 = <ðosu_reserved>; + dma-ranges = <0 0x60000000 0 0x80000000 0 0x20000000>; + mboxes= <ðosu_mailbox 0>, <ðosu_mailbox 0>; + mbox-names = "tx", "rx"; + }; +}; +``` -- cgit v1.2.1