aboutsummaryrefslogtreecommitdiff
path: root/targets
diff options
context:
space:
mode:
authorPaul Sokolovsky <paul.sokolovsky@linaro.org>2021-08-26 15:55:30 +0300
committerGitHub <noreply@github.com>2021-08-26 14:55:30 +0200
commitbe910b9867e71259a09e1670cda0c8bddfd7fd2d (patch)
tree12de31a71d59f60d788fb406a3b424e8ce35120f /targets
parent3bcd48f72d4af01d1304b754ef19fe1a02c96049 (diff)
targets: zephyr: Update for Zephyr 2.x (#4731)
targets: zephyr: Update for Zephyr 2.2 Zephyr 2.2 removed some deprecated compatibility headers, use the new location. targets: zephyr: Update for Zephyr 2.3 Rename CONFIG_FLOAT -> CONFIG_FPU based on the change done in Zephyr 2.3. JerryScript-DCO-1.0-Signed-off-by: Paul Sokolovsky paul.sokolovsky@linaro.org targets: zephyr: Update CI and docs for Zephyr 2.6 And to the latest Zephyr SDK 0.13.0. arduino_101 board is no longer supported by Zephyr 2.x, so replace it with qemu_x86 (i.e. QEMU emulation target) in CI and with frdm_k64f in docs. JerryScript-DCO-1.0-Signed-off-by: Paul Sokolovsky paul.sokolovsky@linaro.org
Diffstat (limited to 'targets')
-rw-r--r--targets/zephyr/Makefile.travis10
-rw-r--r--targets/zephyr/README.md98
-rw-r--r--targets/zephyr/prj.conf2
-rw-r--r--targets/zephyr/src/getline-zephyr.c2
-rw-r--r--targets/zephyr/src/main-zephyr.c2
5 files changed, 45 insertions, 69 deletions
diff --git a/targets/zephyr/Makefile.travis b/targets/zephyr/Makefile.travis
index 9e03e594..0b22bbef 100644
--- a/targets/zephyr/Makefile.travis
+++ b/targets/zephyr/Makefile.travis
@@ -27,12 +27,12 @@ install-apt-get-deps:
# Install Zephyr SDK.
install-zephyr-sdk:
- wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.10.0/zephyr-sdk-0.10.0-setup.run -O ../zephyr-sdk-0.10.0-setup.run
- sh ../zephyr-sdk-0.10.0-setup.run -- -y -d $(CURDIR)/../zephyr-sdk-0.10.0
+ wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.13.0/zephyr-sdk-0.13.0-linux-x86_64-setup.run -O ../zephyr-sdk-0.13.0-linux-x86_64-setup.run
+ sh ../zephyr-sdk-0.13.0-linux-x86_64-setup.run -- -y -d $(CURDIR)/../zephyr-sdk-0.13.0
# Fetch Zephyr Project repository and install python dependencies.
install-zephyr:
- git clone https://github.com/zephyrproject-rtos/zephyr.git ../zephyr -b v1.14-branch
+ git clone https://github.com/zephyrproject-rtos/zephyr.git ../zephyr -b v2.5-branch
pip3 install -U pip
pip3 install -U setuptools
pip3 install -r ../zephyr/scripts/requirements.txt
@@ -53,6 +53,6 @@ install: install-apt-get-deps install-noapt
SHELL=bash
script:
export ZEPHYR_TOOLCHAIN_VARIANT=zephyr && \
- export ZEPHYR_SDK_INSTALL_DIR=$(CURDIR)/../zephyr-sdk-0.10.0 && \
+ export ZEPHYR_SDK_INSTALL_DIR=$(CURDIR)/../zephyr-sdk-0.13.0 && \
source ../zephyr/zephyr-env.sh && \
- $(MAKE) -f ./targets/zephyr/Makefile.zephyr BOARD=arduino_101
+ $(MAKE) -f ./targets/zephyr/Makefile.zephyr BOARD=qemu_x86
diff --git a/targets/zephyr/README.md b/targets/zephyr/README.md
index 97b0072e..049ed1f0 100644
--- a/targets/zephyr/README.md
+++ b/targets/zephyr/README.md
@@ -1,9 +1,7 @@
### About
-This folder contains files to integrate JerryScript with Zephyr RTOS to
-run on a number of supported boards (like
-[Arduino 101 / Genuino 101](https://www.arduino.cc/en/Main/ArduinoBoard101),
-[Zephyr Arduino 101](https://www.zephyrproject.org/doc/board/arduino_101.html)).
+This folder contains files to integrate JerryScript with Zephyr RTOS
+(https://zephyrproject.org/).
### How to build
@@ -25,8 +23,11 @@ harmony
2. Target boards/emulations
-Following Zephyr boards were tested: qemu_x86, qemu_cortex_m3, arduino_101,
-frdm_k64f.
+Following Zephyr boards are known to work: qemu_x86, qemu_cortex_m3,
+frdm_k64f. But generally, any board supported by Zephyr should work,
+as long as it has enough Flash and RAM (boards which don't have
+enough of those, will simply have link-time errors of ROM/RAM
+overflow).
#### 2. Prepare Zephyr
@@ -48,7 +49,7 @@ export ZEPHYR_GCC_VARIANT=zephyr
export ZEPHYR_SDK_INSTALL_DIR=<sdk installation directory>
```
-#### 3. Build JerryScript for Zephyr
+#### 3. Build JerryScript for Zephyr QEMU
The easiest way is to build and run on a QEMU emulator:
@@ -64,88 +65,63 @@ For ARM (Cortex-M) architecture:
make -f ./targets/zephyr/Makefile.zephyr BOARD=qemu_cortex_m3 run
```
-#### 4. Build for Arduino 101
+#### 4. Build for a real board
-```
-# assume you are in harmony folder
-cd jerryscript
-make -f ./targets/zephyr/Makefile.zephyr BOARD=arduino_101
-```
-
-This will generate the following libraries:
-```
-./build/arduino_101/librelease-cp_minimal.jerry-core.a
-./build/arduino_101/librelease-cp_minimal.jerry-math.lib.a
-./build/arduino_101/librelease.external-cp_minimal-entry.a
-```
+Below, we build for NXP FRDM-K64F board (`frdm_k64f` Zephyr board
+identifier). Building for other boards is similar. You are expected
+to read [Supported Boards](https://docs.zephyrproject.org/latest/boards/index.html)
+section in the Zephyr documentation for more information about
+Zephyr's support for a particilar board, means to flash binaries,
+etc.
-The final Zephyr image will be located here:
```
-./build/arduino_101/zephyr/zephyr.strip
+# assuming you are in top-level folder
+cd jerryscript
+make -f ./targets/zephyr/Makefile.zephyr BOARD=frdm_k64f
```
-#### 5. Flashing
-
-Details on how to flash the image can be found here:
-[Flashing image](https://www.zephyrproject.org/doc/board/arduino_101.html)
-(or similar page for other supported boards).
-
-To be able to use this demo in hardware you will need the serial console
-which will be generating output to Pins 0 & 1.
-
-You will need a 3.3v TTL to RS232, please follow the zephyr documentation on it.
-
-Some examples of building the software
+At the end of the build, you will be given a path to and stats about
+the ELF binary:
```
-make -f ./targets/zephyr/Makefile.zephyr BOARD=<board> clean
+...
+Finished
+ text data bss dec hex filename
+ 117942 868 24006 142816 22de0 build/frdm_k64f/zephyr/zephyr/zephyr.elf
```
-- Not using a Jtag and having a factory stock Arduino 101.
-You can follow the Zephyr instructions to flash using the dfu-util command
-or use this helper:
+Flashing the binary depends on a particular board used (see links above).
+For the FRDM-K64F used as the example, you should copy the *raw* binary
+file corresponding to the ELF file above (at
+`build/frdm_k64f/zephyr/zephyr/zephyr.bin`) to the USB drive appearing
+after connecting the board to a computer:
```
-make -f ./targets/zephyr/Makefile.zephyr BOARD=arduino_101 dfu-x86
+cp build/frdm_k64f/zephyr/zephyr/zephyr.bin /media/pfalcon/DAPLINK/
```
-Make sure you have the factory bootloader in your device to use this method or it will not flash.
-
-- Using JTAG
-
-There is a helper function to flash using the JTAG and Flywatter2
-
-![alt tag](docs/arduino_101.jpg?raw=true "Example")
+To interact with JerryScript, connect to a board via serial connection
+and press Reset button (you first should wait while LEDs on the board
+stop blinking). For `frdm_k64f`:
```
-make -f ./targets/zephyr/Makefile.zephyr BOARD=arduino_101 flash
+picocom -b115200 /dev/ttyACM0
```
-<warning> Careful if you flash the BOARD arduino_101, you will lose the bootloader
-and you will have to follow the zephyr documentation to get it back from
-the backup we all know you did at the setup. </warning>
-
-#### 6. Serial terminal
-
-Test command line in a serial terminal.
-
-
You should see something similar to this:
```
-JerryScript build: Aug 12 2016 17:12:55
-JerryScript API 1.0
-Zephyr version 1.4.0
+JerryScript build: Aug 11 2021 16:03:07
+JerryScript API 3.0.0
+Zephyr version 2.6.99
js>
```
-
Run the example javascript command test function
```
js> var test=0; for (t=100; t<1000; t++) test+=t; print ('Hi JS World! '+test);
Hi JS World! 494550
```
-
Try a more complex function:
```
js> function hello(t) {t=t*10;return t}; print("result"+hello(10.5));
diff --git a/targets/zephyr/prj.conf b/targets/zephyr/prj.conf
index 628689dd..ceb40205 100644
--- a/targets/zephyr/prj.conf
+++ b/targets/zephyr/prj.conf
@@ -1,6 +1,6 @@
CONFIG_BUILD_OUTPUT_BIN=y
CONFIG_STDOUT_CONSOLE=y
CONFIG_NEWLIB_LIBC=y
-CONFIG_FLOAT=y
+CONFIG_FPU=y
CONFIG_MAIN_STACK_SIZE=2048
CONFIG_CONSOLE_HANDLER=y
diff --git a/targets/zephyr/src/getline-zephyr.c b/targets/zephyr/src/getline-zephyr.c
index b64489b8..0073d467 100644
--- a/targets/zephyr/src/getline-zephyr.c
+++ b/targets/zephyr/src/getline-zephyr.c
@@ -14,7 +14,7 @@
*/
#include <zephyr.h>
-#include <uart.h>
+#include <drivers/uart.h>
#include <drivers/console/console.h>
#include <drivers/console/uart_console.h>
#include "getline-zephyr.h"
diff --git a/targets/zephyr/src/main-zephyr.c b/targets/zephyr/src/main-zephyr.c
index e250f9d3..c0d02cff 100644
--- a/targets/zephyr/src/main-zephyr.c
+++ b/targets/zephyr/src/main-zephyr.c
@@ -18,7 +18,7 @@
#include <stdlib.h>
#include <zephyr.h>
-#include <misc/printk.h>
+#include <sys/printk.h>
#include "getline-zephyr.h"
#include "jerryscript.h"