diff --git a/targets/baremetal-sdk/curie-bsp/README.md b/targets/baremetal-sdk/curie-bsp/README.md deleted file mode 100644 index 051e5f0ab..000000000 --- a/targets/baremetal-sdk/curie-bsp/README.md +++ /dev/null @@ -1,120 +0,0 @@ -### About Curie BSP port -[IntelĀ® Curie BSP](https://github.com/CurieBSP/main/blob/master/README.rst) is the SDK that will help you developing software on Curie based boards, for example with the [Arduino 101 board (AKA Genuino 101)](https://www.arduino.cc/en/Main/ArduinoBoard101). - -This folder contains necessary files to integrate JerryScript with IntelĀ® Curie BSP, so that JavaScript can run on Arduino 101 board (AKA Genuino 101). - -### How to build -#### 1. Preface - -Curie BSP only support Ubuntu GNU/Linux as host OS environment. - -Necessary hardwares -* [FlySwatter2 JTAG debugger](https://www.tincantools.com/wiki/Flyswatter2) -* [ARM-JTAG-20-10](https://www.amazon.com/PACK-ARM-JTAG-20-10-Micro-JTAG-adapter/dp/B010ATK9OC/ref=sr_1_1?ie=UTF8&qid=1469635131&sr=8-1&keywords=ARM+Micro+JTAG+Connector) -* [USB to TTL Serial Cable](https://www.adafruit.com/products/954) - -#### 2. Prepare Curie BSP - -You can refer to a detailed document [Curie BSP](https://github.com/CurieBSP/main/releases). But, we summary the main steps below: - -##### 1. Get repo: -``` -mkdir ~/bin -wget http://commondatastorage.googleapis.com/git-repo-downloads/repo -O ~/bin/repo -chmod a+x ~/bin/repo -``` - -##### 2. In ``~/.bashrc`` add: -``` -PATH=$PATH:~/bin -``` - -##### 3. Create your directory for CurieBSP (eg. Curie_BSP): -``` -mkdir Curie_BSP && cd $_ -``` - -##### 4. Initialize your repo: -``` -repo init -u https://github.com/CurieBSP/manifest -``` - -##### 5. Download the sources files: -``` -repo sync -j 5 -d -``` - -##### 6. Get toolchain (compilation/debug): -Download [issm-toolchain-linux-2016-05-12.tar.gz](https://software.intel.com/en-us/articles/issm-toolchain-only-download), and uncompress it. -**TOOLCHAIN_DIR** environment variable needs to match the toolchain destination folder -You can use the command:``export TOOLCHAIN_DIR='path to files of the toolchain'`` - -Or you can just uncompress the toolchain tarball and copy the contents (`licensing readme.txt tools version.txt`) into `wearable_device_sw/external/toolchain`. - -##### 7. Get BLE firmware: -Download [curie-ble-v3.1.1.tar.gz]( https://registrationcenter.intel.com/en/forms/?productid=2783) and uncompress the retrieved package into ``wearable_device_sw/packages`` folder - -You will first register in the web page. Then you will receive an email where is a download link. Click the link in the mail, choose the `curie-ble-v3.1.1.tar.gz (118 KB)` and download. - -##### 8. Get tools to flash the device: -[https://01.org/android-ia/downloads/intel-platform-flash-tool-lite](https://01.org/android-ia/downloads/intel-platform-flash-tool-lite) - - -#### 3. Build JerryScript and Curie BSP -##### 1. Generate makefiles -Run the Python script ``setup.py`` in ``jerryscript/targets/baremetal-sdk/curie-bsp/`` with the full path or relative path of the ``Curie_BSP``: -``` -python setup.py -``` - -##### 2. One time setup. It will check/download/install the necessary tools, and must be run only once. -In the directory ``Curie_BSP`` -``` -make -C wearable_device_sw/projects/curie_bsp_jerry/ one_time_setup -``` - -##### 3. In the directory ``Curie_BSP`` -``` -mkdir out && cd $_ -make -f ../wearable_device_sw/projects/curie_bsp_jerry/Makefile setup -make image -``` - -##### 4. Connect JTAG Debugger and TTL Serial Cable to Arduino 101 as below: -![](./image/connect.png) - -##### 5. Flash the firmware -``` -make flash FLASH_CONFIG=jtag_full -``` - - -#### 4. Serial terminal -Assume the serial port is ``ttyUSB0`` in ``/dev`` directory, we can type command ``screen ttyUSB0 115200`` to open a serial terminal. - -After the board boot successfully, you should see something like this: -``` -Quark SE ID 16 Rev 0 A0 -ARC Core state: 0000400 -BOOT TARGET: 0 - 6135|QRK| CFW| INFO| GPIO service init in progress.. - 6307|ARC|MAIN| INFO| BSP init done - 6315|ARC| CFW| INFO| ADC service init in progress.. - 6315|ARC| CFW| INFO| GPIO service init in progress... - 6315|ARC| CFW| INFO| GPIO service init in progress... - 6315|ARC|MAIN| INFO| CFW init done -``` -To test the JavaScript command, you should add characters ``js e `` to the beginning of the JavaScript command, like this: -``js e print ('Hello World!');`` - -It is the uart command format of Curie BSP. `js` is cmd group, `e` is cmd name, which is short for eval, and `print ('Hello World!');` is the cmd parameters, which is the JavaScript code we want to run. - -You can see the result through the screen: -``` -js e print ('Hello World!');js e 1 ACK -Hello World! -undefined -js e 1 OK -``` - -`js e 1 ACK` and `js e 1 OK` are debug info of Curie BSP uart commands, which mean it receive and execute the command successfully. `Hello World!` is the printed content. `undefined` is the return value of the statement `print ('Hello World!')`. diff --git a/targets/baremetal-sdk/curie-bsp/image/connect.png b/targets/baremetal-sdk/curie-bsp/image/connect.png deleted file mode 100644 index da4849352..000000000 Binary files a/targets/baremetal-sdk/curie-bsp/image/connect.png and /dev/null differ diff --git a/targets/baremetal-sdk/curie-bsp/include/inttypes.h b/targets/baremetal-sdk/curie-bsp/include/inttypes.h deleted file mode 100644 index 9b0ba43ad..000000000 --- a/targets/baremetal-sdk/curie-bsp/include/inttypes.h +++ /dev/null @@ -1,18 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef INTTYPES_H -#define INTTYPES_H - -#endif /* !INTTYPES_H */ diff --git a/targets/baremetal-sdk/curie-bsp/include/setjmp.h b/targets/baremetal-sdk/curie-bsp/include/setjmp.h deleted file mode 100644 index aad7f934a..000000000 --- a/targets/baremetal-sdk/curie-bsp/include/setjmp.h +++ /dev/null @@ -1,25 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#ifndef SETJMP_H -#define SETJMP_H - -#include - -typedef uint64_t jmp_buf[14]; - -int setjmp (jmp_buf env); -void longjmp (jmp_buf env, int val); - -#endif /* !SETJMP_H */ diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/defconfig b/targets/baremetal-sdk/curie-bsp/jerry_app/arc/defconfig deleted file mode 100644 index 92e3eacae..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/defconfig +++ /dev/null @@ -1,16 +0,0 @@ -CONFIG_AUTO_SERVICE_INIT=y -CONFIG_CFW_PROXY=y -CONFIG_CFW_QUARK_SE_HELPERS=y -CONFIG_LOG_SLAVE=y -CONFIG_MEM_POOL_DEF_PATH="$(PROJECT_PATH)/arc" -CONFIG_OS_ZEPHYR=y -CONFIG_SERVICES_QUARK_SE_ADC_IMPL=y -CONFIG_SERVICES_QUARK_SE_GPIO_IMPL=y -CONFIG_SOC_GPIO_AON=y -CONFIG_SOC_GPIO=y -CONFIG_SS_ADC=y -CONFIG_SS_GPIO=y -CONFIG_TCMD_SLAVE=y -CONFIG_TCMD=y -CONFIG_ZEPHYR_BOARD="arduino_101_sss" -CONFIG_CONSOLE_HANDLER_SHELL=y diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/main.c b/targets/baremetal-sdk/curie-bsp/jerry_app/arc/main.c deleted file mode 100644 index 6042e44bb..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/main.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* infra */ -#include "infra/log.h" -#include "infra/bsp.h" -#include "infra/xloop.h" -#include "cfw/cfw.h" - -static xloop_t loop; - -void main (void) -{ - T_QUEUE queue = bsp_init (); - - pr_info (LOG_MODULE_MAIN, "BSP init done"); - - cfw_init (queue); - pr_info (LOG_MODULE_MAIN, "CFW init done"); - - xloop_init_from_queue (&loop, queue); - - xloop_run (&loop); -} diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/memory_pool_list.def b/targets/baremetal-sdk/curie-bsp/jerry_app/arc/memory_pool_list.def deleted file mode 100644 index e06b5931b..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/arc/memory_pool_list.def +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Definition of the memory pools used by balloc/bfree: - * DECLARE_MEMORY_POOL( , , , ) - * : must start at 0 and be of consecutive values * - * : size in bytes of each block from the pool - * : number of blocks in the pool - * - * * Pool definitions must be sorted according the block size - * value: pool with 0 must have the smallest . - */ - -DECLARE_MEMORY_POOL(0,8,32) -DECLARE_MEMORY_POOL(1,16,32) -DECLARE_MEMORY_POOL(2,32,48) -DECLARE_MEMORY_POOL(3,64,16) -DECLARE_MEMORY_POOL(4,96,24) -DECLARE_MEMORY_POOL(5,128,6) -DECLARE_MEMORY_POOL(6,256,5) -DECLARE_MEMORY_POOL(7,512,1) - -#undef DECLARE_MEMORY_POOL diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/include/project_mapping.h b/targets/baremetal-sdk/curie-bsp/jerry_app/include/project_mapping.h deleted file mode 100644 index 2182d88ba..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/include/project_mapping.h +++ /dev/null @@ -1,30 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * Allow project to override this partition scheme - * The following variables are allowed to be defined: - * - * QUARK_START_PAGE the first page where the QUARK code is located - * QUARK_NB_PAGE the number of pages reserved for the QUARK. The ARC gets the - * remaining pages (out of 148). - */ -#ifndef PROJECT_MAPPING_H -#define PROJECT_MAPPING_H - -#define QUARK_NB_PAGE 125 -#include "machine/soc/intel/quark_se/quark_se_mapping.h" - -#endif /* !PROJECT_MAPPING_H */ diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/defconfig b/targets/baremetal-sdk/curie-bsp/jerry_app/quark/defconfig deleted file mode 100644 index efc47757a..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/defconfig +++ /dev/null @@ -1,35 +0,0 @@ -CONFIG_AUTO_SERVICE_INIT=y -CONFIG_CFW_QUARK_SE_HELPERS=y -CONFIG_CONSOLE_MANAGER=y -CONFIG_DEBUG_PANIC_TCMD=y -CONFIG_FACTORY_DATA_WRITE=y -CONFIG_FACTORY_DATA=y -CONFIG_INTEL_QRK_AON_PT=y -CONFIG_INTEL_QRK_RTC=y -CONFIG_INTEL_QRK_SPI=y -CONFIG_INTEL_QRK_WDT=y -CONFIG_LOG_CBUFFER_SIZE=2048 -CONFIG_LOG_CBUFFER=y -CONFIG_MEMORY_POOLS_BALLOC_STATISTICS=y -CONFIG_MEMORY_POOLS_BALLOC_TRACK_OWNER=y -CONFIG_MEM_POOL_DEF_PATH="$(PROJECT_PATH)/quark" -CONFIG_OS_ZEPHYR=y -CONFIG_PANIC_ON_BUS_ERROR=y -CONFIG_QUARK_SE_PROPERTIES_STORAGE=y -CONFIG_QUARK=y -CONFIG_SERVICES_QUARK_SE_ADC=y -CONFIG_SERVICES_QUARK_SE_GPIO_IMPL=y -CONFIG_SERVICES_QUARK_SE_GPIO=y -CONFIG_SOC_FLASH=y -CONFIG_SOC_GPIO_32=y -CONFIG_SOC_GPIO=y -CONFIG_SOC_ROM=y -CONFIG_SPI_FLASH_W25Q16DV=y -CONFIG_STORAGE_TASK=y -CONFIG_TCMD_CONSOLE=y -CONFIG_TCMD_MASTER=y -CONFIG_TCMD=y -CONFIG_UART_NS16550=y -CONFIG_UART_PM_NS16550=y -CONFIG_ZEPHYR_BOARD="arduino_101" -CONFIG_CONSOLE_HANDLER_SHELL=y diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/main.c b/targets/baremetal-sdk/curie-bsp/jerry_app/quark/main.c deleted file mode 100644 index 293ddbb4d..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/main.c +++ /dev/null @@ -1,172 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "jerryscript-port.h" -#include "jerryscript.h" - -#include "cfw/cfw.h" -#include "infra/bsp.h" -#include "infra/log.h" -#include "infra/reboot.h" -#include "infra/system_events.h" -#include "infra/tcmd/handler.h" -#include "infra/time.h" -#include "infra/wdt_helper.h" -#include "microkernel/task.h" -#include "misc/printk.h" -#include "os/os.h" -#include "string.h" -#include "zephyr.h" - -static T_QUEUE queue; - -jerry_value_t print_function; - -void -jerry_resolve_error (jerry_value_t ret_value) -{ - if (jerry_value_is_exception (ret_value)) - { - ret_value = jerry_exception_value (ret_value, true); - jerry_value_t err_str_val = jerry_value_to_string (ret_value); - jerry_size_t err_str_size = jerry_string_size (err_str_val, JERRY_ENCODING_UTF8); - jerry_char_t *err_str_buf = (jerry_char_t *) balloc (err_str_size, NULL); - jerry_size_t sz = jerry_string_to_buffer (err_str_val, JERRY_ENCODING_UTF8, err_str_buf, err_str_size); - err_str_buf[sz] = 0; - printk ("Script Error: unhandled exception: %s\n", err_str_buf); - bfree (err_str_buf); - jerry_value_free (err_str_val); - } -} - -void -help () -{ - printk ("Usage:\n"); - printk ("js e 'JavaScript Command'\n"); - printk ("eg. js e print ('Hello World');\n"); -} - -void -eval_jerry_script (int argc, char *argv[], struct tcmd_handler_ctx *ctx) -{ - if (argc < 3) - { - TCMD_RSP_ERROR (ctx, NULL); - help (); - return; - } - else - { - OS_ERR_TYPE err; - size_t str_total_length = 0; - size_t *str_lens = (size_t *) balloc ((argc - 2) * sizeof (size_t), &err); - if (str_lens == NULL || err != E_OS_OK) - { - printk ("%s: allocate memory failed!", __func__); - TCMD_RSP_ERROR (ctx, NULL); - return; - } - for (int i = 2; i < argc; ++i) - { - str_lens[i - 2] = strlen (argv[i]); - str_total_length += str_lens[i - 2] + 1; - } - err = E_OS_OK; - char *buffer = (char *) balloc (str_total_length, &err); - if (buffer == NULL || err != E_OS_OK) - { - printk ("%s: allocate memory failed!", __func__); - TCMD_RSP_ERROR (ctx, NULL); - return; - } - - char *p = buffer; - for (int i = 2; i < argc; ++i) - { - for (int j = 0; j < str_lens[i - 2]; ++j) - { - *p = argv[i][j]; - ++p; - } - *p = ' '; - ++p; - } - *p = '\0'; - - jerry_value_t eval_ret = jerry_eval (buffer, str_total_length - 1, JERRY_PARSE_NO_OPTS); - - if (jerry_value_is_exception (eval_ret)) - { - jerry_resolve_error (eval_ret); - TCMD_RSP_ERROR (ctx, NULL); - } - else - { - jerry_value_t args[] = { eval_ret }; - jerry_value_t ret_val_print = jerry_call (print_function, jerry_undefined (), args, 1); - jerry_value_free (ret_val_print); - TCMD_RSP_FINAL (ctx, NULL); - } - jerry_value_free (eval_ret); - bfree (buffer); - bfree (str_lens); - } -} - -void -jerry_start () -{ - union - { - double d; - unsigned u; - } now = { .d = jerry_port_get_current_time () }; - srand (now.u); - jerry_init (JERRY_INIT_EMPTY); - jerry_value_t global_obj_val = jerry_current_realm (); - jerry_value_t print_func_name_val = jerry_string_sz ("print"); - print_function = jerry_object_get (global_obj_val, print_func_name_val); - jerry_value_free (print_func_name_val); - jerry_value_free (global_obj_val); -} - -/* Application main entry point */ -void -main_task (void *param) -{ - /* Init BSP (also init BSP on ARC core) */ - queue = bsp_init (); - /* start Quark watchdog */ - wdt_start (WDT_MAX_TIMEOUT_MS); - /* Init the CFW */ - cfw_init (queue); - jerry_start (); - /* Loop to process message queue */ - while (1) - { - OS_ERR_TYPE err = E_OS_OK; - /* Process message with a given timeout */ - queue_process_message_wait (queue, 5000, &err); - /* Acknowledge the system watchdog to prevent panic and reset */ - wdt_keepalive (); - } -} - -DECLARE_TEST_COMMAND (js, e, eval_jerry_script); diff --git a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/memory_pool_list.def b/targets/baremetal-sdk/curie-bsp/jerry_app/quark/memory_pool_list.def deleted file mode 100644 index 7f6a571a7..000000000 --- a/targets/baremetal-sdk/curie-bsp/jerry_app/quark/memory_pool_list.def +++ /dev/null @@ -1,36 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Definition of the memory pools used by balloc/bfree: - * DECLARE_MEMORY_POOL( , , , ) - * : must start at 0 and be of consecutive values * - * : size in bytes of each block from the pool - * : number of blocks in the pool - * - * * Pool definitions must be sorted according the block size - * value: pool with 0 must have the smallest . - */ - -DECLARE_MEMORY_POOL(0,8,32) -DECLARE_MEMORY_POOL(1,16,64) -DECLARE_MEMORY_POOL(2,32,64) -DECLARE_MEMORY_POOL(3,64,48) -DECLARE_MEMORY_POOL(4,128,8) -DECLARE_MEMORY_POOL(5,256,4) -DECLARE_MEMORY_POOL(6,512,3) -DECLARE_MEMORY_POOL(7,4096,1) - -#undef DECLARE_MEMORY_POOL diff --git a/targets/baremetal-sdk/curie-bsp/setup.py b/targets/baremetal-sdk/curie-bsp/setup.py deleted file mode 100755 index fe6109edb..000000000 --- a/targets/baremetal-sdk/curie-bsp/setup.py +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/env python - -# Copyright JS Foundation and other contributors, http://js.foundation -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -import fnmatch -import os - -def build_soft_links(project_path, jerry_path): - """ Creates soft links into the @project_path. """ - - if not os.path.exists(project_path): - os.makedirs(project_path) - - links = [ - { # arc - 'src': os.path.join('targets', 'baremetal-sdk', 'curie-bsp', 'jerry_app', 'arc'), - 'link_name': 'arc' - }, - { # include - 'src': os.path.join('targets', 'baremetal-sdk', 'curie-bsp', 'jerry_app', 'include'), - 'link_name': 'include' - }, - { # quark - 'src': os.path.join('targets', 'baremetal-sdk', 'curie-bsp', 'jerry_app', 'quark'), - 'link_name': 'quark' - }, - { # quark/jerryscript - 'src': jerry_path, - 'link_name': os.path.join('quark', 'jerryscript') - } - ] - - for link in links: - src = os.path.join(jerry_path, link['src']) - link_name = os.path.join(project_path, link['link_name']) - if not os.path.islink(link_name): - os.symlink(src, link_name) - print("Created symlink '{link_name}' -> '{src}'".format(src=src, link_name=link_name)) - - -def find_sources(root_dir, sub_dir): - """ - Find .c and .S files inside the @root_dir/@sub_dir directory. - Note: the returned paths will be relative to the @root_dir directory. - """ - src_dir = os.path.join(root_dir, sub_dir) - - matches = [] - for root, dirnames, filenames in os.walk(src_dir): - for filename in fnmatch.filter(filenames, '*.[c|S]'): - file_path = os.path.join(root, filename) - relative_path = os.path.relpath(file_path, root_dir) - matches.append(relative_path) - - return matches - - -def build_jerry_data(jerry_path): - """ - Build up a dictionary which contains the following items: - - sources: list of JerryScript sources which should be built. - - dirs: list of JerryScript dirs used. - - cflags: CFLAGS for the build. - """ - jerry_sources = [] - jerry_dirs = set() - for sub_dir in ['jerry-core', 'jerry-math', os.path.join('targets', 'baremetal-sdk', 'curie-bsp', 'source')]: - for file in find_sources(os.path.normpath(jerry_path), sub_dir): - path = os.path.join('jerryscript', file) - jerry_sources.append(path) - jerry_dirs.add(os.path.split(path)[0]) - - jerry_cflags = [ - '-DJERRY_GLOBAL_HEAP_SIZE=10', - '-DJERRY_NDEBUG', - '-DJERRY_DISABLE_HEAVY_DEBUG', - '-DJERRY_BUILTIN_NUMBER=0', - '-DJERRY_BUILTIN_STRING=0', - '-DJERRY_BUILTIN_BOOLEAN=0', - #'-DJERRY_BUILTIN_ERRORS=0', - '-DJERRY_BUILTIN_ARRAY=0', - '-DJERRY_BUILTIN_MATH=0', - '-DJERRY_BUILTIN_JSON=0', - '-DJERRY_BUILTIN_DATE=0', - '-DJERRY_BUILTIN_REGEXP=0', - '-DJERRY_BUILTIN_ANNEXB=0', - '-DJERRY_ESNEXT=0', - '-DJERRY_LCACHE=0', - '-DJERRY_PROPERTY_HASHMAP=0', - ] - - return { - 'sources': jerry_sources, - 'dirs': jerry_dirs, - 'cflags': jerry_cflags, - } - - -def write_file(path, content): - """ Writes @content into the file at specified by the @path. """ - norm_path = os.path.normpath(path) - with open(norm_path, "w+") as f: - f.write(content) - print("Wrote file '{0}'".format(norm_path)) - - -def build_obj_y(source_list): - """ - Build obj-y additions from the @source_list. - Note: the input sources should have their file extensions. - """ - return '\n'.join(['obj-y += {0}.o'.format(os.path.splitext(fname)[0]) for fname in source_list]) - - -def build_cflags_y(cflags_list): - """ - Build cflags-y additions from the @cflags_list. - Note: the input sources should have their file extensions. - """ - return '\n'.join(['cflags-y += {0}'.format(cflag) for cflag in cflags_list]) - - -def build_mkdir(dir_list): - """ Build mkdir calls for each dir in the @dir_list. """ - return '\n'.join(['\t$(AT)mkdir -p {0}'.format(os.path.join('$(OUT_SRC)', path)) for path in dir_list]) - - -def create_root_kbuild(project_path): - """ Creates @project_path/Kbuild.mk file. """ - - root_kbuild_path = os.path.join(project_path, 'Kbuild.mk') - root_kbuild_content = ''' -obj-$(CONFIG_QUARK_SE_ARC) += arc/ -obj-$(CONFIG_QUARK_SE_QUARK) += quark/ -''' - write_file(root_kbuild_path, root_kbuild_content) - - -def create_root_makefile(project_path): - """ Creates @project_path/Makefile file. """ - - root_makefile_path = os.path.join(project_path, 'Makefile') - root_makefile_content = ''' -THIS_DIR := $(shell dirname $(abspath $(lastword $(MAKEFILE_LIST)))) -T := $(abspath $(THIS_DIR)/../..) -PROJECT := {project_name} -BOARD := curie_101 -ifeq ($(filter curie_101, $(BOARD)),) -$(error The curie jerry sample application can only run on the curie_101 Board) -endif -BUILDVARIANT ?= debug -quark_DEFCONFIG = $(PROJECT_PATH)/quark/defconfig -arc_DEFCONFIG = $(PROJECT_PATH)/arc/defconfig - -# Optional: set the default version -VERSION_MAJOR := 1 -VERSION_MINOR := 0 -VERSION_PATCH := 0 -include $(T)/build/project.mk -'''.format(project_name=project_name) - - write_file(root_makefile_path, root_makefile_content) - - -def create_arc_kbuild(project_path): - """ Creates @project_path/arc/Kbuild.mk file. """ - - arc_path = os.path.join(project_path, 'arc') - arc_kbuild_path = os.path.join(arc_path, 'Kbuild.mk') - arc_sources = find_sources(arc_path, '.') - arc_kbuild_content = build_obj_y(arc_sources) - - write_file(arc_kbuild_path, arc_kbuild_content) - - -def create_quark_kbuild(project_path, jerry_path): - """ Creates @project_path/quark/Kbuild.mk file. """ - quark_kbuild_path = os.path.join(project_path, 'quark', 'Kbuild.mk') - - # Extract a few JerryScript related data - jerry_data = build_jerry_data(jerry_path) - jerry_objects = build_obj_y(jerry_data['sources']) - jerry_defines = jerry_data['cflags'] - jerry_build_dirs = build_mkdir(jerry_data['dirs']) - - quark_include_paths = [ - 'include', - 'jerryscript', - os.path.join('jerryscript', 'jerry-math', 'include'), - os.path.join('jerryscript', 'targets', 'baremetal-sdk', 'curie-bsp', 'include') - ] + list(jerry_data['dirs']) - - quark_includes = [ - '-Wno-error', - ] + ['-I%s' % os.path.join(project_path, 'quark', path) for path in quark_include_paths] - - quark_cflags = build_cflags_y(jerry_defines + quark_includes) - - quark_kbuild_content = ''' -{cflags} - -obj-y += main.o -{objects} - -build_dirs: -{dirs} - -$(OUT_SRC): build_dirs -'''.format(objects=jerry_objects, cflags=quark_cflags, dirs=jerry_build_dirs) - - write_file(quark_kbuild_path, quark_kbuild_content) - - -def main(curie_path, project_name, jerry_path): - project_path = os.path.join(curie_path, 'wearable_device_sw', 'projects', project_name) - - build_soft_links(project_path, jerry_path) - - create_root_kbuild(project_path) - create_root_makefile(project_path) - create_arc_kbuild(project_path) - create_quark_kbuild(project_path, jerry_path) - - -if __name__ == '__main__': - import sys - - if len(sys.argv) != 2: - print('Usage:') - print('{script_name} [full or relative path of Curie_BSP]'.format(script_name=sys.argv[0])) - sys.exit(1) - - project_name = 'curie_bsp_jerry' - - file_dir = os.path.dirname(os.path.abspath(__file__)) - jerry_path = os.path.join(file_dir, "..", "..", "..") - curie_path = os.path.join(os.getcwd(), sys.argv[1]) - - main(curie_path, project_name, jerry_path) diff --git a/targets/baremetal-sdk/curie-bsp/source/curie-bsp-port.c b/targets/baremetal-sdk/curie-bsp/source/curie-bsp-port.c deleted file mode 100644 index 1def05e2e..000000000 --- a/targets/baremetal-sdk/curie-bsp/source/curie-bsp-port.c +++ /dev/null @@ -1,72 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include "jerryscript-port.h" - -/** - * Provide log message implementation for the engine. - * Curie BSP implementation - */ -void -jerry_port_log (jerry_log_level_t level, /**< log level */ - const char *format, /**< format string */ - ...) /**< parameters */ -{ - if (level <= JERRY_LOG_LEVEL_ERROR) - { - char buf[256]; - int length = 0; - va_list args; - va_start (args, format); - length = vsnprintf (buf, 256, format, args); - buf[length] = '\0'; - printk ("%s", buf); - va_end (args); - } -} /* jerry_port_log */ - -/** - * Curie BSP implementation of jerry_port_fatal. - */ -void jerry_port_fatal (jerry_fatal_code_t code) -{ - jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Jerry Fatal Error!\n"); - while (true); -} /* jerry_port_fatal */ - -/** - * Curie BSP implementation of jerry_port_get_local_time_zone_adjustment. - */ -double jerry_port_get_local_time_zone_adjustment (double unix_ms, bool is_utc) -{ - //EMPTY implementation - return 0; -} /* jerry_port_get_local_time_zone_adjustment */ - -/** - * Curie BSP implementation of jerry_port_get_current_time. - */ -double jerry_port_get_current_time (void) -{ - uint32_t uptime_ms = get_uptime_ms (); - uint32_t epoch_time = uptime_to_epoch (uptime_ms); - - return ((double) epoch_time) * 1000.0; -} /* jerry_port_get_current_time */ diff --git a/targets/baremetal-sdk/curie-bsp/source/setjmp.S b/targets/baremetal-sdk/curie-bsp/source/setjmp.S deleted file mode 100644 index f1f87ecf8..000000000 --- a/targets/baremetal-sdk/curie-bsp/source/setjmp.S +++ /dev/null @@ -1,77 +0,0 @@ -/* Copyright JS Foundation and other contributors, http://js.foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -.macro func _name -.global \_name -.type \_name, %function -\_name: -.endm -.macro endfunc _name -.size \_name, .-\_name -.endm - -/** - * setjmp (jmp_buf env) - * - * See also: - * longjmp - * - * @return 0 - if returns from direct call, - * nonzero - if returns after longjmp. - */ -func setjmp - mov %eax,(%eax); - mov %ebx,0x4(%eax); - mov %ecx,0x8(%eax); - mov %edx,0xc(%eax); - mov %esi,0x10(%eax); - mov %edi,0x14(%eax); - mov %ebp,0x18(%eax); - mov %esp,0x1c(%eax); - push %edx; - mov 0x4(%esp),%edx; - mov %edx,0x20(%eax); - pop %edx; - xor %eax,%eax; - ret -endfunc setjmp - -/** - * longjmp (jmp_buf env, int val) - * - * Note: - * if val is not 0, then it would be returned from setjmp, - * otherwise - 0 would be returned. - * - * See also: - * setjmp - */ -func longjmp - test %edx, %edx; - jne . + 0x3; - inc %edx; - mov 0x4(%eax),%ebx; - mov 0x8(%eax),%ecx; - mov 0x10(%eax),%esi; - mov 0x14(%eax),%edi; - mov 0x18(%eax),%ebp; - mov 0x1c(%eax),%esp; - push %edx; - mov 0x20(%eax),%edx; - mov %edx,0x4(%esp); - mov 0xc(%eax),%edx; - pop %eax; - ret -endfunc longjmp