From df5f43ff179f8f062188d8d24783764912a1419b Mon Sep 17 00:00:00 2001 From: Sanggyu Lee Date: Mon, 24 Apr 2017 19:01:55 +0900 Subject: [PATCH] target: tizenrt-artik05x: Initial porting Initial porting to tizenrt-artik05x. Tizen RT is a lightweight RTOS-based platform to support low-end IoT devices. The project is under developing in github TizenRt repo. Artik05x is an IoT SoC solution that will be released soon. This PR contains the minimum porting that can print Hello world from jerryscript and a document for building and running. I used jerry_port.c and jerry_main.c in nuttx port and default port for porting base code. Also I used Make.defs and Makefile in working example in tizenrt for adding jerryscript configuration. JerryScript-DCO-1.0-Signed-off-by: Sanggyu Lee sg5.lee@samsung.com --- targets/tizenrt-artik05x/Makefile.tizenrt | 55 ++ targets/tizenrt-artik05x/README.md | 102 ++ .../tizenrt-artik05x/apps/jerryscript/Kconfig | 56 ++ .../apps/jerryscript/Make.defs | 17 + .../apps/jerryscript/Makefile | 177 ++++ .../apps/jerryscript/jerry_main.c | 325 ++++++ .../configs/jerryscript/Make.defs | 165 ++++ .../configs/jerryscript/defconfig | 932 ++++++++++++++++++ 8 files changed, 1829 insertions(+) create mode 100644 targets/tizenrt-artik05x/Makefile.tizenrt create mode 100644 targets/tizenrt-artik05x/README.md create mode 100644 targets/tizenrt-artik05x/apps/jerryscript/Kconfig create mode 100644 targets/tizenrt-artik05x/apps/jerryscript/Make.defs create mode 100644 targets/tizenrt-artik05x/apps/jerryscript/Makefile create mode 100644 targets/tizenrt-artik05x/apps/jerryscript/jerry_main.c create mode 100644 targets/tizenrt-artik05x/configs/jerryscript/Make.defs create mode 100644 targets/tizenrt-artik05x/configs/jerryscript/defconfig diff --git a/targets/tizenrt-artik05x/Makefile.tizenrt b/targets/tizenrt-artik05x/Makefile.tizenrt new file mode 100644 index 0000000000..7958a90112 --- /dev/null +++ b/targets/tizenrt-artik05x/Makefile.tizenrt @@ -0,0 +1,55 @@ +# 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. + +CURDIR = `pwd` +JERRYHEAP ?= 16 +BUILD_DIR ?= build/tizenrt-artik05x/ +LIBTARGET_DIR ?= ../tizenrt/build/output/libraries + +EXT_CFLAGS += -mcpu=cortex-r4 -mfpu=vfpv3 +EXT_CFLAGS += -fno-builtin -fno-strict-aliasing +EXT_CFLAGS += -fomit-frame-pointer +EXT_CFLAGS += -fno-strength-reduce +EXT_CFLAGS += -Wall -Werror -Wshadow +EXT_CFLAGS += -Wno-error=conversion +EXT_CFLAGS += -I. -isystem ../tizenrt/os/include + +.PHONY: libjerry clean + +all: libjerry + +libjerry: + mkdir -p $(BUILD_DIR) + mkdir -p $(LIBTARGET_DIR) + cmake -B$(BUILD_DIR) -H./ \ + -DENABLE_LTO=OFF \ + -DFEATURE_VALGRIND=OFF \ + -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain_external.cmake \ + -DJERRY_LIBC=OFF \ + -DJERRY_CMDLINE=OFF \ + -DENABLE_ALL_IN_ONE=OFF \ + -DEXTERNAL_CMAKE_SYSTEM_PROCESSOR=armv7l \ + -DEXTERNAL_CMAKE_C_COMPILER=arm-none-eabi-gcc \ + -DEXTERNAL_CMAKE_C_COMPILER_ID=GNU \ + -DEXTERNAL_COMPILE_FLAGS="$(EXT_CFLAGS)" \ + -DMEM_HEAP_SIZE_KB=$(JERRYHEAP) \ + -DCMAKE_BUILD_TYPE=Release + + make -C$(BUILD_DIR) jerry-core + make -C$(BUILD_DIR) jerry-libm + cp $(BUILD_DIR)/lib/libjerry-core.a $(LIBTARGET_DIR) + cp $(BUILD_DIR)/lib/libjerry-libm.a $(LIBTARGET_DIR) + +clean: + rm -rf $(BUILD_DIR) diff --git a/targets/tizenrt-artik05x/README.md b/targets/tizenrt-artik05x/README.md new file mode 100644 index 0000000000..39f4e2fbcb --- /dev/null +++ b/targets/tizenrt-artik05x/README.md @@ -0,0 +1,102 @@ +### About + +This folder contains files to build and run JerryScript on [TizenRT](https://github.com/Samsung/TizenRT) with Artik05x board. + +### How to build + +#### 1. Set up build environment + +* Install toolchain + +Get the build in binaries and libraries, [gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar](https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update). + + +Untar the gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar and export the path like + +``` +$ tar xvf gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar +$ export PATH=:$PATH +``` + +* Get the jerryscript and TizenRT sources + +``` +$ mkdir jerry-tizenrt +$ cd jerry-tizenrt +$ git clone https://github.com/jerryscript-project/jerryscript.git +$ git clone https://github.com/Samsung/TizenRT.git tizenrt +``` + +The following directory structure is created after these commands + +``` +jerry-tizenrt +├── jerryscript +└── tizenrt +``` + +#### 2. Add jerryscript configuration for TizenRT + +``` +$ cp -r jerryscript/targets/tizenrt-artik05x/apps/jerryscript/ tizenrt/apps/system/ +$ cp -r jerryscript/targets/tizenrt-artik05x/configs/jerryscript/ tizenrt/build/configs/sidk_s5jt200/ +``` + +Apply following diff in jerry-tizenrt/tizenrt/os/FlatLibs.mk. +(The line number may differ since tizenrt is under developing.) + +```diff +--- a/os/FlatLibs.mk ++++ b/os/FlatLibs.mk +@@ -142,6 +142,12 @@ endif +# Add library for Framework +TINYARALIBS += $(LIBRARIES_DIR)$(DELIM)libframework$(LIBEXT) + ++# Add library for Jerryscript ++ifeq ($(CONFIG_JERRYSCRIPT),y) ++TINYARALIBS += $(LIBRARIES_DIR)$(DELIM)libjerry-core$(LIBEXT) ++TINYARALIBS += $(LIBRARIES_DIR)$(DELIM)libjerry-libm$(LIBEXT) ++endif ++ +# Export all libraries +``` + +#### 3. Configure TizenRT + +``` +$ cd tizenrt/os/tools +$ ./configure.sh sidk_s5jt200/jerryscript +``` + +#### 4. Build JerryScript for TizenRT + +``` +# assuming you are in jerry-tizenrt folder +$ cd jerryscript +$ make -f targets/tizenrt-artik05x/Makefile.tizenrt +``` + +#### 5. Build TizenRT binary + +``` +# assuming you are in jerry-tizenrt folder +$ cd tizenrt/os +$ make +``` +Binaries are available in tizenrt/build/output/bin + +#### 6. Flash binary + +The official guide will be announced on [TizenRT page](https://github.com/Samsung/TizenRT). + + +#### 7. Run JerryScript + +You can use `minicom` for terminal program, or any other you may like, but set +baud rate to `115200`. + +(Note: Device path may differ like /dev/ttyUSB1.) + +``` +sudo minicom --device=/dev/ttyUSB0 --baud=115200 +``` diff --git a/targets/tizenrt-artik05x/apps/jerryscript/Kconfig b/targets/tizenrt-artik05x/apps/jerryscript/Kconfig new file mode 100644 index 0000000000..6f8ff369a5 --- /dev/null +++ b/targets/tizenrt-artik05x/apps/jerryscript/Kconfig @@ -0,0 +1,56 @@ +# +# For a description of the syntax of this configuration file, +# see the file kconfig-language.txt in the NuttX tools repository. +# + +config JERRYSCRIPT + bool "Jerryscript" + default n + ---help--- + Enable Jerryscript ECMAScript 5.1 interpreter + +if JERRYSCRIPT + +config JERRYSCRIPT_PROGNAME + string "Program name" + default "jerry" + depends on BUILD_KERNEL + ---help--- + This is the name of the program that will be + use when the NSH ELF program is installed. + +config JERRYSCRIPT_PRIORITY + int "Jerryscript task priority" + default 100 + +config JERRYSCRIPT_STACKSIZE + int "Jerryscript stack size" + default 16384 + +config JERRYSCRIPT_HEAPSIZE + int "Jerryscript heap size" + default 107520 + +config JERRYSCRIPT_ERROR_MESSAGES + bool "Enable error messages for builtin error objects" + default n + +config JERRYSCRIPT_MEM_STATS + bool "Enable memory statistics" + default n + +config JERRYSCRIPT_SHOW_OPCODES + bool "Enable parser byte-code dumps" + default n + +config JERRYSCRIPT_DEBUGGER + bool "Jerryscript debugger" + default n + +if JERRYSCRIPT_DEBUGGER +config JERRYSCRIPT_DEBUGGER_PORT + int "Jerryscript debugger port" + default 5001 +endif + +endif diff --git a/targets/tizenrt-artik05x/apps/jerryscript/Make.defs b/targets/tizenrt-artik05x/apps/jerryscript/Make.defs new file mode 100644 index 0000000000..940e7301b8 --- /dev/null +++ b/targets/tizenrt-artik05x/apps/jerryscript/Make.defs @@ -0,0 +1,17 @@ +# 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. + +ifeq ($(CONFIG_JERRYSCRIPT),y) +CONFIGURED_APPS += system/jerryscript +endif diff --git a/targets/tizenrt-artik05x/apps/jerryscript/Makefile b/targets/tizenrt-artik05x/apps/jerryscript/Makefile new file mode 100644 index 0000000000..4131f4a1ac --- /dev/null +++ b/targets/tizenrt-artik05x/apps/jerryscript/Makefile @@ -0,0 +1,177 @@ +# 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. + +########################################################################### +# +# Copyright 2016 Samsung Electronics All Rights Reserved. +# +# 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. +# + +############################################################################ +# +# Copyright (C) 2008, 2010-2013 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +-include $(TOPDIR)/.config +-include $(TOPDIR)/Make.defs +include $(APPDIR)/Make.defs + +# Jerryscript built-in application info + +CONFIG_JERRYSCRIPT_PRIORITY ?= SCHED_PRIORITY_DEFAULT +CONFIG_JERRYSCRIPT_STACKSIZE ?= 32768 +CONFIG_JERRYSCRIPT_HEAPSIZE ?= 64000 +CONFIG_JERRY_DEBUGGER_PORT ?= 5001 + +APPNAME = jerry +# path to the project dir, "tizenrt-artik05x" by default +ROOT_DIR = ../../../.. +PRIORITY = $(CONFIG_JERRYSCRIPT_PRIORITY) +STACKSIZE = $(CONFIG_JERRYSCRIPT_STACKSIZE) +CFLAGS += -std=c99 -DJERRY_NDEBUG -DJERRY_JS_PARSER '-DCONFIG_MEM_HEAP_AREA_SIZE=$(CONFIG_JERRYSCRIPT_HEAPSIZE)' +CFLAGS += -I$(ROOT_DIR)/ $(shell find $(ROOT_DIR)/jerryscript/jerry-core -type d | sed -r -e 's/^/-I/g') + +ifeq ($(CONFIG_JERRYSCRIPT_MEM_STATS),y) + CFLAGS += -DJMEM_STATS +endif + +ifeq ($(CONFIG_JERRYSCRIPT_SHOW_OPCODES),y) + CFLAGS += -DPARSER_DUMP_BYTE_CODE +endif + +ifeq ($(CONFIG_JERRYSCRIPT_DEBUGGER),y) + CFLAGS += -DJERRY_DEBUGGER '-DJERRY_DEBUGGER_PORT=$(CONFIG_JERRY_DEBUGGER_PORT)' +endif + + +EXTRA_LIBS += libjerry-core.a libjerry-libm.a +LINKLIBS=$(EXTRA_LIBS) + + +ASRCS = +CSRCS = jerry_port.c +MAINSRC = jerry_main.c + +AOBJS = $(ASRCS:.S=$(OBJEXT)) +COBJS = $(CSRCS:.c=$(OBJEXT)) +MAINOBJ = $(MAINSRC:.c=$(OBJEXT)) + +SRCS = $(ASRCS) $(CSRCS) $(MAINSRC) +OBJS = $(AOBJS) $(COBJS) + +ifneq ($(CONFIG_BUILD_KERNEL),y) + OBJS += $(MAINOBJ) +endif + +ifeq ($(CONFIG_WINDOWS_NATIVE),y) + BIN = ..\..\libapps$(LIBEXT) +else +ifeq ($(WINTOOL),y) + BIN = ..\\..\\libapps$(LIBEXT) +else + BIN = ../../libapps$(LIBEXT) +endif +endif + +ifeq ($(WINTOOL),y) + INSTALL_DIR = "${shell cygpath -w $(BIN_DIR)}" +else + INSTALL_DIR = $(BIN_DIR) +endif + +CONFIG_JERRYSCRIPT_PROGNAME ?= jerry$(EXEEXT) +PROGNAME = $(CONFIG_JERRYSCRIPT_PROGNAME) + +ROOTDEPPATH = --dep-path . + +# Common build + +VPATH = + +all: .built +.PHONY: context depend clean distclean + +$(AOBJS): %$(OBJEXT): %.S + $(call ASSEMBLE, $<, $@) + +$(COBJS) $(MAINOBJ): %$(OBJEXT): %.c + $(call COMPILE, $<, $@) + +.built: $(OBJS) + $(call ARCHIVE, $(BIN), $(OBJS)) + $(Q) touch .built + +install: + +context: + +# Create dependencies + +.depend: Makefile $(SRCS) + $(Q) $(MKDEP) $(ROOTDEPPATH) "$(CC)" -- $(CFLAGS) -- $(SRCS) >Make.dep + $(Q) touch $@ + +depend: .depend + +clean: + $(call DELFILE, .built) + $(call CLEAN) + +distclean: clean + $(call DELFILE, Make.dep) + $(call DELFILE, .depend) + +-include Make.dep +.PHONY: preconfig +preconfig: diff --git a/targets/tizenrt-artik05x/apps/jerryscript/jerry_main.c b/targets/tizenrt-artik05x/apps/jerryscript/jerry_main.c new file mode 100644 index 0000000000..ceca9b136d --- /dev/null +++ b/targets/tizenrt-artik05x/apps/jerryscript/jerry_main.c @@ -0,0 +1,325 @@ +/* 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 "jerryscript.h" +#include "jerryscript-port.h" +#include "jmem.h" + +#include // To register tash command + +/** + * Maximum command line arguments number. + */ +#define JERRY_MAX_COMMAND_LINE_ARGS (16) + +/** + * Standalone Jerry exit codes. + */ +#define JERRY_STANDALONE_EXIT_CODE_OK (0) +#define JERRY_STANDALONE_EXIT_CODE_FAIL (1) + +/** + * Print usage and available options + */ +static void +print_help (char *name) +{ + printf ("Usage: %s [OPTION]... [FILE]...\n" + "\n" + "Options:\n" + " --log-level [0-3]\n" + " --mem-stats\n" + " --mem-stats-separate\n" + " --show-opcodes\n" + " --start-debug-server\n" + "\n", + name); +} /* print_help */ + +/** + * Read source code into buffer. + * + * Returned value must be freed with jmem_heap_free_block if it's not NULL. + * @return NULL, if read or allocation has failed + * pointer to the allocated memory block, otherwise + */ +static const uint8_t * +read_file (const char *file_name, /**< source code */ + size_t *out_size_p) /**< [out] number of bytes successfully read from source */ +{ + FILE *file = fopen (file_name, "r"); + if (file == NULL) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: cannot open file: %s\n", file_name); + return NULL; + } + + int fseek_status = fseek (file, 0, SEEK_END); + if (fseek_status != 0) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Failed to seek (error: %d)\n", fseek_status); + fclose (file); + return NULL; + } + + long script_len = ftell (file); + if (script_len < 0) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Failed to get the file size(error %ld)\n", script_len); + fclose (file); + return NULL; + } + + rewind (file); + + uint8_t *buffer = jmem_heap_alloc_block_null_on_error (script_len); + + if (buffer == NULL) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Out of memory error\n"); + fclose (file); + return NULL; + } + + size_t bytes_read = fread (buffer, 1u, script_len, file); + + if (!bytes_read || bytes_read != script_len) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: failed to read file: %s\n", file_name); + jmem_heap_free_block ((void*) buffer, script_len); + + fclose (file); + return NULL; + } + + fclose (file); + + *out_size_p = bytes_read; + return (const uint8_t *) buffer; +} /* read_file */ + +/** + * Provide the 'assert' implementation for the engine. + * + * @return true - if only one argument was passed and the argument is a boolean true. + */ +static jerry_value_t +assert_handler (const jerry_value_t func_obj_val __attribute__((unused)), /**< function object */ + const jerry_value_t this_p __attribute__((unused)), /**< this arg */ + const jerry_value_t args_p[], /**< function arguments */ + const jerry_length_t args_cnt) /**< number of function arguments */ +{ + if (args_cnt == 1 + && jerry_value_is_boolean (args_p[0]) + && jerry_get_boolean_value (args_p[0])) + { + return jerry_create_boolean (true); + } + else + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Script Error: assertion failed\n"); + exit (JERRY_STANDALONE_EXIT_CODE_FAIL); + } +} /* assert_handler */ + +/** + * Provide the 'gc' implementation for the engine. + * + * @return undefined. + */ +static jerry_value_t +gc_handler (const jerry_value_t func_obj_val __attribute__((unused)), /**< function object */ + const jerry_value_t this_p __attribute__((unused)), /**< this arg */ + const jerry_value_t args_p[] __attribute__((unused)), /**< function arguments */ + const jerry_length_t args_cnt __attribute__((unused))) /**< number of function arguments */ +{ + jerry_gc (); + return jerry_create_undefined (); +} /* gc_handler */ + +/** + * Print error value + */ +static void +print_unhandled_exception (jerry_value_t error_value) /**< error value */ +{ + printf ("print_unhandled_exception\n"); + (void)(error_value); +} /* print_unhandled_exception */ + +/** + * Register a JavaScript function in the global object. + */ +static void +register_js_function (const char *name_p, /**< name of the function */ + jerry_external_handler_t handler_p) /**< function callback */ +{ + jerry_value_t global_obj_val = jerry_get_global_object (); + + jerry_value_t function_val = jerry_create_external_function (handler_p); + jerry_value_t function_name_val = jerry_create_string ((const jerry_char_t *) name_p); + jerry_value_t result_val = jerry_set_property (global_obj_val, function_name_val, function_val); + + jerry_release_value (function_name_val); + jerry_release_value (function_val); + jerry_release_value (global_obj_val); + + if (jerry_value_has_error_flag (result_val)) + { + jerry_port_log (JERRY_LOG_LEVEL_WARNING, "Warning: failed to register '%s' method.", name_p); + print_unhandled_exception (result_val); + } + + jerry_release_value (result_val); +} /* register_js_function */ + + + +/** + * Main program. + * + * @return 0 if success, error code otherwise + */ +#ifdef CONFIG_BUILD_KERNEL +int main (int argc, FAR char *argv[]) +#else +int jerry_main (int argc, char *argv[]) +#endif +{ + if (argc > JERRY_MAX_COMMAND_LINE_ARGS) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, + "Too many command line arguments. Current maximum is %d\n", + JERRY_MAX_COMMAND_LINE_ARGS); + + return JERRY_STANDALONE_EXIT_CODE_FAIL; + } + + const char *file_names[JERRY_MAX_COMMAND_LINE_ARGS]; + int i; + int files_counter = 0; + + jerry_init_flag_t flags = JERRY_INIT_EMPTY; + + for (i = 1; i < argc; i++) + { + if (!strcmp ("-h", argv[i]) || !strcmp ("--help", argv[i])) + { + print_help (argv[0]); + return JERRY_STANDALONE_EXIT_CODE_OK; + } + else if (!strcmp ("--mem-stats", argv[i])) + { + flags |= JERRY_INIT_MEM_STATS; + } + else if (!strcmp ("--mem-stats-separate", argv[i])) + { + flags |= JERRY_INIT_MEM_STATS_SEPARATE; + } + else if (!strcmp ("--show-opcodes", argv[i])) + { + flags |= JERRY_INIT_SHOW_OPCODES | JERRY_INIT_SHOW_REGEXP_OPCODES; + } + else if (!strcmp ("--start-debug-server", argv[i])) + { + flags |= JERRY_INIT_DEBUGGER; + } + else + { + file_names[files_counter++] = argv[i]; + } + } + + if (files_counter == 0) + { + printf ("No input files, running a hello world demo:\n"); + char *source_p = "var a = 3.5; print('Hell world ' + (a + 1.5) + ' times from JerryScript')"; + + jerry_run_simple ((jerry_char_t *) source_p, strlen (source_p), flags); + return JERRY_STANDALONE_EXIT_CODE_OK; + } + + jerry_init (flags); + register_js_function ("assert", assert_handler); + register_js_function ("gc", gc_handler); + jerry_value_t ret_value = jerry_create_undefined (); + + for (i = 0; i < files_counter; i++) + { + size_t source_size; + const jerry_char_t *source_p = read_file (file_names[i], &source_size); + + if (source_p == NULL) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Source file load error\n"); + return JERRY_STANDALONE_EXIT_CODE_FAIL; + } + + ret_value = jerry_parse_named_resource ((jerry_char_t *) file_names[i], + strlen (file_names[i]), + source_p, + source_size, + false); + + jmem_heap_free_block ((void*) source_p, source_size); + + if (!jerry_value_has_error_flag (ret_value)) + { + jerry_value_t func_val = ret_value; + ret_value = jerry_run (func_val); + jerry_release_value (func_val); + } + else + { + printf("jerry_parse error\n"); + break; + } + + if (jerry_value_has_error_flag (ret_value)) + { + printf("jerry_run error\n"); + break; + } + + jerry_release_value (ret_value); + ret_value = jerry_create_undefined (); + } + + int ret_code = JERRY_STANDALONE_EXIT_CODE_OK; + + if (jerry_value_has_error_flag (ret_value)) + { + jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Unhandled exception: Script Error!\n"); + ret_code = JERRY_STANDALONE_EXIT_CODE_FAIL; + } + + jerry_release_value (ret_value); + jerry_cleanup (); + + return ret_code; +} /* main */ + +int jerry_register_cmd() { + const tash_cmdlist_t tash_cmds[] + = { { "jerry", jerry_main, TASH_EXECMD_SYNC }, { 0, 0, 0 } }; + tash_cmdlist_install(tash_cmds); + return 0; +} + diff --git a/targets/tizenrt-artik05x/configs/jerryscript/Make.defs b/targets/tizenrt-artik05x/configs/jerryscript/Make.defs new file mode 100644 index 0000000000..32537bcfd3 --- /dev/null +++ b/targets/tizenrt-artik05x/configs/jerryscript/Make.defs @@ -0,0 +1,165 @@ +############################################################################ +# configs/stm32_tiny/nsh/Make.defs +# +# Copyright (C) 2011, 2012-2013 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# 3. Neither the name NuttX nor the names of its contributors may be +# used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +# OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. +# +############################################################################ + +include ${TOPDIR}/.config +include ${TOPDIR}/tools/Config.mk +include ${TOPDIR}/arch/arm/src/armv7-r/Toolchain.defs + +ifeq ($(CONFIG_BOOT_RUNFROMFLASH),y) +ifeq ($(CONFIG_BOARD_FOTA_SUPPORT),y) +LDSCRIPT_OTA1 = ld_s5jt200_flash_ota1.script +endif +LDSCRIPT = ld_s5jt200_flash.script +else +LDSCRIPT = ld_s5jt200.script +endif +ifeq ($(CONFIG_UCLIBCXX_HAVE_LIBSUPCXX),y) +LIBSUPXX = ${shell $(CC) --print-file-name=libsupc++.a} +EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}" +EXTRA_LIBS = -lsupc++ +endif + +ifeq ($(WINTOOL),y) + # Windows-native toolchains + DIRLINK = $(TOPDIR)/tools/copydir.sh + DIRUNLINK = $(TOPDIR)/tools/unlink.sh + MKDEP = $(TOPDIR)/tools/mkwindeps.sh + ARCHINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" + ARCHXXINCLUDES = -I. -isystem "${shell cygpath -w $(TOPDIR)/include}" -isystem "${shell cygpath -w $(TOPDIR)/include/cxx}" -isystem "${shell cygpath -w $(TOPDIR)/include/uClibc++}" + ARCHSCRIPT = -T "${shell cygpath -w $(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT)}" +else + # Linux/Cygwin-native toolchain + MKDEP = $(TOPDIR)/tools/mkdeps$(HOSTEXEEXT) + ARCHINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/../framework/include + ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx -isystem $(TOPDIR)/include/uClibc++ + ARCHSCRIPT = -T$(TOPDIR)/../build/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT) +ifeq ($(CONFIG_BOARD_FOTA_SUPPORT),y) + ARCHSCRIPT_FOTA = -T$(TOPDIR)/../build/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT_OTA1) +endif + +endif + +CC = $(CROSSDEV)gcc +CXX = $(CROSSDEV)g++ +CPP = $(CROSSDEV)gcc -E +LD = $(CROSSDEV)ld +AR = $(CROSSDEV)ar rcs +NM = $(CROSSDEV)nm +OBJCOPY = $(CROSSDEV)objcopy +OBJDUMP = $(CROSSDEV)objdump + +ARCHCCVERSION = ${shell $(CC) -v 2>&1 | sed -n '/^gcc version/p' | sed -e 's/^gcc version \([0-9\.]\)/\1/g' -e 's/[-\ ].*//g' -e '1q'} +ARCHCCMAJOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f1} +ARCHCCMINOR = ${shell echo $(ARCHCCVERSION) | cut -d'.' -f2} + +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + ARCHOPTIMIZATION = -g +endif + +ifneq ($(CONFIG_DEBUG_NOOPT),y) + ARCHOPTIMIZATION += $(MAXOPTIMIZATION) -fno-strict-aliasing -fno-strength-reduce -fomit-frame-pointer +endif + +ifeq ($(CONFIG_FRAME_POINTER),y) + ARCHOPTIMIZATION += -fno-omit-frame-pointer -mapcs -mno-sched-prolog +endif + +ifeq ($(CONFIG_ARM_UNWIND),y) + ARCHOPTIMIZATION += -fasynchronous-unwind-tables +endif + + +ARCHCFLAGS = -fno-builtin -mcpu=cortex-r4 -mfpu=vfpv3 +ARCHCXXFLAGS = -fno-builtin -fexceptions -mcpu=cortex-r4 -mfpu=vfpv3 +ifeq ($(QUICKBUILD),y) +ARCHWARNINGS = -Wall -Werror -Wstrict-prototypes -Wshadow -Wundef -Wno-implicit-function-declaration -Wno-unused-function -Wno-unused-but-set-variable +ARCHWARNINGSXX = -Wall -Werror -Wshadow -Wundef +else +#ARCHWARNINGS = -Wall -Werror -Wstrict-prototypes -Wshadow -Wundef -Wno-implicit-function-declaration -Wno-unused-function -Wno-unused-but-set-variable +#ARCHWARNINGSXX = -Wall -Werror -Wshadow -Wundef +ARCHWARNINGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -Wno-implicit-function-declaration -Wno-unused-function -Wno-unused-but-set-variable +ARCHWARNINGSXX = -Wall -Wshadow -Wundef +# only version 4.9 supports color diagnostics +ifeq "$(ARCHMAJOR)" "4" +ifeq "$(ARCHMINOR)" "9" + ARCHWARNINGS += -fdiagnostics-color=auto + ARCHWARNINGSCC += -fdiagnostics-color=auto +endif +endif + +endif +ARCHDEFINES = +ARCHPICFLAGS = -fpic -msingle-pic-base -mpic-register=r10 + +CFLAGS = $(ARCHCFLAGS) $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe +CPICFLAGS = $(ARCHPICFLAGS) $(CFLAGS) +CXXFLAGS = $(ARCHCXXFLAGS) $(ARCHWARNINGSXX) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(ARCHXXINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) -pipe +CXXPICFLAGS = $(ARCHPICFLAGS) $(CXXFLAGS) +CPPFLAGS = $(ARCHINCLUDES) $(ARCHDEFINES) $(EXTRADEFINES) +AFLAGS = $(CFLAGS) -D__ASSEMBLY__ +MAXOPTIMIZATION = -O2 + + +NXFLATLDFLAGS1 = -r -d -warn-common +NXFLATLDFLAGS2 = $(NXFLATLDFLAGS1) -T$(TOPDIR)/binfmt/libnxflat/gnu-nxflat-pcrel.ld -no-check-sections +LDNXFLATFLAGS = -e main -s 2048 + +ASMEXT = .S +OBJEXT = .o +LIBEXT = .a +EXEEXT = + +ifneq ($(CROSSDEV),arm-nuttx-elf-) + LDFLAGS += -nostartfiles -nodefaultlibs +endif +ifeq ($(CONFIG_DEBUG_SYMBOLS),y) + LDFLAGS += -g +endif + + +HOSTCC = gcc +HOSTINCLUDES = -I. +HOSTCFLAGS = -Wall -Wstrict-prototypes -Wshadow -Wundef -g -pipe +HOSTLDFLAGS = + +#################### SIDK_S5JT200 DOWNLOAD LOGIC ################################### +# function : DOWNLOAD +# prototype : DOWNLOAD +# arguments : [ALL | RESOURCE ] +# example : DOWNLOAD ALL; DOWNLOAD RESOURCE; +define DOWNLOAD + @$(TOPDIR)/../build/configs/$(CONFIG_ARCH_BOARD)/$(CONFIG_ARCH_BOARD)_download.sh $(1) +endef +#################### END ####################################################### diff --git a/targets/tizenrt-artik05x/configs/jerryscript/defconfig b/targets/tizenrt-artik05x/configs/jerryscript/defconfig new file mode 100644 index 0000000000..0d1b53fea0 --- /dev/null +++ b/targets/tizenrt-artik05x/configs/jerryscript/defconfig @@ -0,0 +1,932 @@ +# +# Automatically generated file; DO NOT EDIT. +# TinyAra Configuration +# + +# +# Build Setup +# +# CONFIG_EXPERIMENTAL is not set +# CONFIG_DEFAULT_SMALL is not set +CONFIG_HOST_LINUX=y +# CONFIG_HOST_OSX is not set +# CONFIG_HOST_WINDOWS is not set +# CONFIG_HOST_OTHER is not set +# CONFIG_WINDOWS_NATIVE is not set + +# +# Build Configuration +# +CONFIG_APPS_DIR="../apps" +CONFIG_FRAMEWORK_DIR="../framework" +CONFIG_TOOLS_DIR="../tools" +CONFIG_BUILD_FLAT=y +# CONFIG_BUILD_PROTECTED is not set +# CONFIG_BUILD_2PASS is not set + +# +# Binary Output Formats +# +# CONFIG_INTELHEX_BINARY is not set +# CONFIG_MOTOROLA_SREC is not set +CONFIG_RAW_BINARY=y +CONFIG_SAMSUNG_NS2=y +# CONFIG_UBOOT_UIMAGE is not set +# CONFIG_DOWNLOAD_IMAGE is not set +# CONFIG_SMARTFS_IMAGE is not set + +# +# Customize Header Files +# +# CONFIG_ARCH_STDINT_H is not set +# CONFIG_ARCH_STDBOOL_H is not set +# CONFIG_ARCH_MATH_H is not set +# CONFIG_ARCH_FLOAT_H is not set +# CONFIG_ARCH_STDARG_H is not set + +# +# Debug Options +# +CONFIG_DEBUG=y +CONFIG_DEBUG_ERROR=y +# CONFIG_DEBUG_WARN is not set +CONFIG_DEBUG_VERBOSE=y + +# +# Subsystem Debug Options +# +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_LIB is not set +# CONFIG_DEBUG_MM is not set +# CONFIG_DEBUG_SCHED is not set + +# +# OS Function Debug Options +# +# CONFIG_ARCH_HAVE_HEAPCHECK is not set +CONFIG_DEBUG_MM_HEAPINFO=y +# CONFIG_DEBUG_IRQ is not set + +# +# Driver Debug Options +# +# CONFIG_DEBUG_PWM is not set +# CONFIG_DEBUG_RTC is not set +# CONFIG_DEBUG_SPI is not set +# CONFIG_DEBUG_WATCHDOG is not set + +# +# Stack Debug Options +# +CONFIG_ARCH_HAVE_STACKCHECK=y +CONFIG_STACK_COLORATION=y + +# +# Build Debug Options +# +CONFIG_DEBUG_SYMBOLS=y +# CONFIG_FRAME_POINTER is not set +CONFIG_ARCH_HAVE_CUSTOMOPT=y +# CONFIG_DEBUG_NOOPT is not set +# CONFIG_DEBUG_CUSTOMOPT is not set +CONFIG_DEBUG_FULLOPT=y + +# +# System Type +# +CONFIG_ARCH_ARM=y +CONFIG_ARCH="arm" + +# +# ARM Options +# +CONFIG_ARCH_CHIP_S5J=y +# CONFIG_ARCH_CORTEXM3 is not set +# CONFIG_ARCH_CORTEXM4 is not set +CONFIG_ARCH_CORTEXR4=y +CONFIG_ARCH_FAMILY="armv7-r" +CONFIG_ARCH_CHIP="s5j" +CONFIG_ARCH_HAVE_FPU=y +# CONFIG_ARCH_FPU is not set +CONFIG_ARMV7M_MPU=y +CONFIG_ARMV7M_MPU_NREGIONS=12 + +# +# ARMv7-R Configuration Options +# +CONFIG_ARMV7R_HAVE_GICv2=y +CONFIG_ARMV7R_MEMINIT=y +CONFIG_ARMV7R_ICACHE=y +CONFIG_ARMV7R_DCACHE=y +# CONFIG_ARMV7R_DCACHE_WRITETHROUGH is not set +# CONFIG_ARMV7R_HAVE_L2CC is not set +# CONFIG_ARMV7R_HAVE_L2CC_PL310 is not set +# CONFIG_ARMV7R_TOOLCHAIN_BUILDROOT is not set +# CONFIG_ARMV7R_TOOLCHAIN_CODESOURCERYL is not set +CONFIG_ARMV7R_TOOLCHAIN_GNU_EABIL=y +# CONFIG_ARMV7R_TOOLCHAIN_GNU_OABI is not set +# CONFIG_ARMV7R_HAVE_DECODEFIQ is not set +# CONFIG_BOOT_RESULT is not set + +# +# Samsung S5J Chip Configuration Options +# +CONFIG_ARCH_CHIP_S5JT200=y +CONFIG_S5J_S5JT200=y + +# +# S5J DEBUG UART Configuration +# +# CONFIG_S5J_UART_CLOCK_FROM_WPLL is not set +CONFIG_SERIAL_TERMIOS=y +CONFIG_ARCH_HAVE_SERIAL_TERMIOS=y +CONFIG_S5J_HAVE_UARTDBG=y +CONFIG_S5J_HAVE_UART0=y +CONFIG_S5J_HAVE_UART1=y +CONFIG_S5J_HAVE_UART2=y +CONFIG_S5J_HAVE_UART3=y +CONFIG_UARTDBG_RXBUFSIZE=256 +CONFIG_UARTDBG_TXBUFSIZE=256 +CONFIG_UARTDBG_BAUD=115200 +CONFIG_UARTDBG_BITS=8 +CONFIG_UARTDBG_PARITY=0 +CONFIG_UARTDBG_2STOP=0 +CONFIG_S5J_UARTDBG=y +CONFIG_S5J_UART0=y +CONFIG_S5J_UART1=y +CONFIG_S5J_UART2=y +CONFIG_S5J_UART3=y +CONFIG_UARTDBG_SERIAL_CONSOLE=y +# CONFIG_S5J_PWM is not set +# CONFIG_S5J_SSS is not set + +# +# S5J SPI(Serial Peripheral Interface Bus) +# +# CONFIG_S5J_SPI is not set + +# +# S5J WDT(Watch Dog Timer) +# +# CONFIG_S5J_WATCHDOG is not set + +# +# S5J TICK COUNTER +# +# CONFIG_S5J_TICK_COUNTER is not set + +# +# S5J ADC +# +# CONFIG_S5J_ADC is not set + +# +# S5J I2C +# +CONFIG_S5J_I2C=y +# CONFIG_S5J_MAILBOX is not set +CONFIG_S5J_GPIO=y +# CONFIG_S5J_CHIPID is not set +# CONFIG_S5J_EFUSE is not set +# CONFIG_S5J_SDIO_SLAVE is not set +# CONFIG_S5J_LEDCTRLBLK is not set +CONFIG_S5J_SFLASH=y + +# +# Serial FLASH region +# +CONFIG_S5J_FLASH_BASE=0x04000000 +CONFIG_S5J_FLASH_MIRROR_BASE=0x60000000 +CONFIG_S5J_FLASH_SIZE=0x800000 +CONFIG_S5J_FLASH_SECTOR_SIZE=4096 +CONFIG_S5J_BOOTLOADER_REGION_SIZE=0x400000 + +# +# S5J binary version +# +CONFIG_S5J_BL2_VERSION_ADDR=0x04003FF4 +CONFIG_S5J_LEDFW_VERSION_ADDR=0x042FBFF4 +CONFIG_S5J_SSSFW_VERSION_ADDR=0x04303FF4 +CONFIG_S5J_WLANFW_VERSION_ADDR=0x043BDFF4 +# CONFIG_S5J_DEBUG_BREAK is not set +CONFIG_S5J_PM=y + +# +# S5J PMU Config +# +CONFIG_S5J_PWR=y +# CONFIG_S5J_PWR_DSTOP is not set +# CONFIG_S5J_PWR_SLEEP is not set +# CONFIG_S5J_DMA is not set + +# +# Architecture Options +# +# CONFIG_ARCH_NOINTC is not set +# CONFIG_ARCH_VECNOTIRQ is not set +# CONFIG_ARCH_DMA is not set +# CONFIG_ARCH_HAVE_IRQPRIO is not set +# CONFIG_ARCH_L2CACHE is not set +# CONFIG_ARCH_HAVE_COHERENT_DCACHE is not set +# CONFIG_ARCH_HAVE_ADDRENV is not set +# CONFIG_ARCH_NEED_ADDRENV_MAPPING is not set +CONFIG_ARCH_HAVE_VFORK=y +# CONFIG_ARCH_HAVE_MMU is not set +CONFIG_ARCH_HAVE_MPU=y +# CONFIG_ARCH_NAND_HWECC is not set +# CONFIG_ARCH_HAVE_EXTCLK is not set +CONFIG_ARCH_USE_MPU=y +# CONFIG_ARCH_STACKDUMP is not set +# CONFIG_ENDIAN_BIG is not set +# CONFIG_ARCH_IDLE_CUSTOM is not set +# CONFIG_ARCH_HAVE_RAMFUNCS is not set +# CONFIG_ARCH_HAVE_RAMVECTORS is not set + +# +# Board Settings +# +CONFIG_BOARD_LOOPSPERMSEC=29100 +# CONFIG_ARCH_CALIBRATION is not set + +# +# Interrupt options +# +CONFIG_ARCH_HAVE_INTERRUPTSTACK=y +CONFIG_ARCH_INTERRUPTSTACK=0 +# CONFIG_ARCH_HAVE_HIPRI_INTERRUPT is not set + +# +# Boot options +# +# CONFIG_BOOT_RUNFROMEXTSRAM is not set +CONFIG_BOOT_RUNFROMFLASH=y +# CONFIG_BOOT_RUNFROMISRAM is not set +# CONFIG_BOOT_RUNFROMSDRAM is not set +# CONFIG_BOOT_COPYTORAM is not set + +# +# Boot Memory Configuration +# +CONFIG_RAM_START=0x02020000 +CONFIG_RAM_SIZE=1310720 +# CONFIG_ARCH_HAVE_SDRAM is not set + +# +# Board Selection +# +CONFIG_ARCH_BOARD_SIDK_S5JT200=y +CONFIG_ARCH_BOARD="sidk_s5jt200" + +# +# Common Board Options +# +CONFIG_ARCH_HAVE_BUTTONS=y +CONFIG_ARCH_BUTTONS=y +CONFIG_ARCH_HAVE_IRQBUTTONS=y +# CONFIG_ARCH_IRQBUTTONS is not set +# CONFIG_BOARD_CRASHDUMP is not set +# CONFIG_BOARD_COREDUMP_FLASH is not set +# CONFIG_BOARD_FOTA_SUPPORT is not set +# CONFIG_BOARD_RAMDUMP_FLASH is not set +# CONFIG_BOARD_RAMDUMP_UART is not set + +# +# Board-Specific Options +# +CONFIG_SIDK_S5JT200_PWM_CHNUM=6 +CONFIG_SIDK_S5JT200_FLASH_CAPACITY=8388608 +CONFIG_SIDK_S5JT200_FLASH_PAGE_SIZE=4096 +CONFIG_SIDK_S5JT200_FLASH_MINOR=0 +CONFIG_SIDK_S5JT200_FLASH_PART=y +CONFIG_SIDK_S5JT200_FLASH_PART_LIST="16,48,192,32,512,2400,32,512,2400,8,8,240,1024,256,512" +CONFIG_SIDK_S5JT200_FLASH_PART_TYPE="none,ftl,none,none,none,none,none,none,none,none,config,none,none,smartfs,smartfs," +CONFIG_SIDK_S5JT200_FLASH_PART_NAME="bl1,sssro,bl2,sss1,wifi1,app1,sss2,wifi2,app2,bootarg,nvram,cm0,micomfw,user,sssrw," +CONFIG_SIDK_S5JT200_AUTOMOUNT=y +CONFIG_SIDK_S5JT200_AUTOMOUNT_USERFS=y +CONFIG_SIDK_S5JT200_AUTOMOUNT_USERFS_DEVNAME="/dev/smart0p13" +CONFIG_SIDK_S5JT200_AUTOMOUNT_USERFS_MOUNTPOINT="/mnt" +CONFIG_SIDK_S5JT200_AUTOMOUNT_SSSRW=y +CONFIG_SIDK_S5JT200_AUTOMOUNT_SSSRW_DEVNAME="/dev/smart0p14" +CONFIG_SIDK_S5JT200_AUTOMOUNT_SSSRW_MOUNTPOINT="/sss" + +# +# RTOS Features +# +CONFIG_DISABLE_OS_API=y +# CONFIG_DISABLE_POSIX_TIMERS is not set +# CONFIG_DISABLE_PTHREAD is not set +# CONFIG_DISABLE_SIGNALS is not set +# CONFIG_DISABLE_MQUEUE is not set +# CONFIG_DISABLE_ENVIRON is not set + +# +# Clocks and Timers +# +CONFIG_ARCH_HAVE_TICKLESS=y +# CONFIG_SCHED_TICKLESS is not set +CONFIG_USEC_PER_TICK=10000 +CONFIG_SYSTEM_TIME64=y +CONFIG_CLOCK_MONOTONIC=y +# CONFIG_JULIAN_TIME is not set +CONFIG_MAX_WDOGPARMS=4 +CONFIG_PREALLOC_WDOGS=32 +CONFIG_WDOG_INTRESERVE=4 +CONFIG_PREALLOC_TIMERS=8 + +# +# Tasks and Scheduling +# +CONFIG_INIT_ENTRYPOINT=y +CONFIG_RR_INTERVAL=100 +CONFIG_TASK_NAME_SIZE=31 +CONFIG_MAX_TASKS=16 +CONFIG_SCHED_HAVE_PARENT=y +# CONFIG_SCHED_CHILD_STATUS is not set +CONFIG_SCHED_WAITPID=y + +# +# Pthread Options +# +CONFIG_PTHREAD_MUTEX_TYPES=y +# CONFIG_PTHREAD_MUTEX_ROBUST is not set +CONFIG_PTHREAD_MUTEX_UNSAFE=y +# CONFIG_PTHREAD_MUTEX_BOTH is not set +# CONFIG_PTHREAD_MUTEX_DEFAULT_ROBUST is not set +# CONFIG_PTHREAD_MUTEX_DEFAULT_UNSAFE is not set +CONFIG_NPTHREAD_KEYS=4 + +# +# Performance Monitoring +# +# CONFIG_SCHED_CPULOAD is not set +# CONFIG_SCHED_INSTRUMENTATION is not set + +# +# Latency optimization +# +# CONFIG_SCHED_YIELD_OPTIMIZATION is not set + +# +# Files and I/O +# +CONFIG_DEV_CONSOLE=y +# CONFIG_FDCLONE_DISABLE is not set +# CONFIG_FDCLONE_STDIO is not set +# CONFIG_SDCLONE_DISABLE is not set +CONFIG_NFILE_DESCRIPTORS=64 +CONFIG_NFILE_STREAMS=16 +CONFIG_NAME_MAX=32 +# CONFIG_PRIORITY_INHERITANCE is not set + +# +# RTOS hooks +# +CONFIG_BOARD_INITIALIZE=y +# CONFIG_BOARD_INITTHREAD is not set +# CONFIG_SCHED_STARTHOOK is not set +CONFIG_SCHED_ATEXIT=y +CONFIG_SCHED_ONEXIT=y +CONFIG_SCHED_ONEXIT_MAX=1 + +# +# Signal Numbers +# +CONFIG_SIG_SIGUSR1=1 +CONFIG_SIG_SIGUSR2=2 +CONFIG_SIG_SIGALARM=3 +CONFIG_SIG_SIGCHLD=4 +CONFIG_SIG_SIGCONDTIMEDOUT=16 +CONFIG_SIG_SIGWORK=17 + +# +# POSIX Message Queue Options +# +CONFIG_PREALLOC_MQ_MSGS=4 +CONFIG_MQ_MAXMSGSIZE=600 + +# +# Work Queue Support +# +CONFIG_SCHED_WORKQUEUE=y +CONFIG_SCHED_WORKQUEUE_SORTING=y +CONFIG_SCHED_HPWORK=y +CONFIG_SCHED_HPWORKPRIORITY=224 +CONFIG_SCHED_HPWORKPERIOD=50000 +CONFIG_SCHED_HPWORKSTACKSIZE=2048 +# CONFIG_SCHED_LPWORK is not set + +# +# Stack size information +# +CONFIG_IDLETHREAD_STACKSIZE=1024 +CONFIG_USERMAIN_STACKSIZE=2048 +CONFIG_PREAPP_STACKSIZE=2048 +CONFIG_PTHREAD_STACK_MIN=256 +CONFIG_PTHREAD_STACK_DEFAULT=2048 + +# +# System Call +# +# CONFIG_LIB_SYSCALL is not set + +# +# Device Drivers +# +# CONFIG_DISABLE_POLL is not set +CONFIG_DEV_NULL=y +# CONFIG_DEV_ZERO is not set + +# +# Buffering +# +# CONFIG_DRVR_WRITEBUFFER is not set +# CONFIG_DRVR_READAHEAD is not set +# CONFIG_RAMDISK is not set +# CONFIG_CAN is not set +# CONFIG_ARCH_HAVE_PWM_PULSECOUNT is not set +CONFIG_PWM=y +# CONFIG_ARCH_HAVE_I2CRESET is not set +CONFIG_I2C=y +CONFIG_I2C_SLAVE=y +CONFIG_I2C_TRANSFER=y +# CONFIG_I2C_WRITEREAD is not set +CONFIG_I2C_POLLED=y +# CONFIG_I2C_TRACE is not set +CONFIG_I2C_USERIO=y +CONFIG_SPI=y +# CONFIG_SPI_OWNBUS is not set +# CONFIG_SPI_EXCHANGE is not set +# CONFIG_SPI_CMDDATA is not set +# CONFIG_SPI_BITBANG is not set +CONFIG_GPIO=y +# CONFIG_GPIO_EXPORT is not set +# CONFIG_I2S is not set +CONFIG_RTC=y +CONFIG_RTC_DATETIME=y +# CONFIG_RTC_ALARM is not set +CONFIG_RTC_DRIVER=y +# CONFIG_RTC_IOCTL is not set +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_DEVPATH="/dev/watchdog0" +# CONFIG_TIMER is not set +CONFIG_ANALOG=y +CONFIG_ADC=y +CONFIG_ADC_FIFOSIZE=8 +# CONFIG_DAC is not set +# CONFIG_LCD is not set +# CONFIG_PIPES is not set +CONFIG_POWER=y +# CONFIG_BATTERY_CHARGER is not set +# CONFIG_BATTERY_GAUGE is not set +# CONFIG_SERCOMM_CONSOLE is not set +CONFIG_SERIAL=y +# CONFIG_DEV_LOWCONSOLE is not set +# CONFIG_16550_UART is not set +# CONFIG_ARCH_HAVE_UART is not set +CONFIG_ARCH_HAVE_UART0=y +CONFIG_ARCH_HAVE_UART1=y +CONFIG_ARCH_HAVE_UART2=y +CONFIG_ARCH_HAVE_UART3=y +# CONFIG_ARCH_HAVE_UART4 is not set +# CONFIG_ARCH_HAVE_UART5 is not set +# CONFIG_ARCH_HAVE_UART6 is not set +# CONFIG_ARCH_HAVE_UART7 is not set +# CONFIG_ARCH_HAVE_UART8 is not set +# CONFIG_ARCH_HAVE_SCI0 is not set +# CONFIG_ARCH_HAVE_SCI1 is not set +# CONFIG_ARCH_HAVE_USART0 is not set +# CONFIG_ARCH_HAVE_USART1 is not set +# CONFIG_ARCH_HAVE_USART2 is not set +# CONFIG_ARCH_HAVE_USART3 is not set +# CONFIG_ARCH_HAVE_USART4 is not set +# CONFIG_ARCH_HAVE_USART5 is not set +# CONFIG_ARCH_HAVE_USART6 is not set +# CONFIG_ARCH_HAVE_USART7 is not set +# CONFIG_ARCH_HAVE_USART8 is not set +# CONFIG_ARCH_HAVE_OTHER_UART is not set + +# +# USART Configuration +# +CONFIG_MCU_SERIAL=y +CONFIG_STANDARD_SERIAL=y +CONFIG_SERIAL_NPOLLWAITERS=2 +# CONFIG_SERIAL_IFLOWCONTROL is not set +# CONFIG_SERIAL_OFLOWCONTROL is not set +# CONFIG_SERIAL_TIOCSERGSTRUCT is not set +# CONFIG_UART0_SERIAL_CONSOLE is not set +# CONFIG_UART1_SERIAL_CONSOLE is not set +# CONFIG_UART2_SERIAL_CONSOLE is not set +# CONFIG_UART3_SERIAL_CONSOLE is not set +CONFIG_OTHER_SERIAL_CONSOLE=y +# CONFIG_NO_SERIAL_CONSOLE is not set + +# +# UART0 Configuration +# +CONFIG_UART0_RXBUFSIZE=64 +CONFIG_UART0_TXBUFSIZE=64 +CONFIG_UART0_BAUD=115200 +CONFIG_UART0_BITS=8 +CONFIG_UART0_PARITY=0 +CONFIG_UART0_2STOP=0 +# CONFIG_UART0_IFLOWCONTROL is not set +# CONFIG_UART0_OFLOWCONTROL is not set + +# +# UART1 Configuration +# +CONFIG_UART1_RXBUFSIZE=64 +CONFIG_UART1_TXBUFSIZE=64 +CONFIG_UART1_BAUD=115200 +CONFIG_UART1_BITS=8 +CONFIG_UART1_PARITY=0 +CONFIG_UART1_2STOP=0 +# CONFIG_UART1_IFLOWCONTROL is not set +# CONFIG_UART1_OFLOWCONTROL is not set + +# +# UART2 Configuration +# +CONFIG_UART2_RXBUFSIZE=64 +CONFIG_UART2_TXBUFSIZE=64 +CONFIG_UART2_BAUD=115200 +CONFIG_UART2_BITS=8 +CONFIG_UART2_PARITY=0 +CONFIG_UART2_2STOP=0 +# CONFIG_UART2_IFLOWCONTROL is not set +# CONFIG_UART2_OFLOWCONTROL is not set + +# +# UART3 Configuration +# +CONFIG_UART3_RXBUFSIZE=256 +CONFIG_UART3_TXBUFSIZE=256 +CONFIG_UART3_BAUD=115200 +CONFIG_UART3_BITS=8 +CONFIG_UART3_PARITY=0 +CONFIG_UART3_2STOP=0 +# CONFIG_UART3_IFLOWCONTROL is not set +# CONFIG_UART3_OFLOWCONTROL is not set +# CONFIG_USBDEV is not set +# CONFIG_FOTA_DRIVER is not set + +# +# System Logging Device Options +# + +# +# System Logging +# +# CONFIG_RAMLOG is not set +# CONFIG_SYSLOG_CONSOLE is not set + +# +# Networking Support +# +# CONFIG_ARCH_HAVE_NET is not set +# CONFIG_ARCH_HAVE_PHY is not set +# CONFIG_NET is not set + +# +# File Systems +# + +# +# File system configuration +# +# CONFIG_DISABLE_MOUNTPOINT is not set +# CONFIG_FS_AUTOMOUNTER is not set +# CONFIG_DISABLE_PSEUDOFS_OPERATIONS is not set +CONFIG_FS_READABLE=y +CONFIG_FS_WRITABLE=y +# CONFIG_FS_NAMED_SEMAPHORES is not set +CONFIG_FS_MQUEUE_MPATH="/var/mqueue" +CONFIG_FS_SMARTFS=y + +# +# SMARTFS options +# +CONFIG_SMARTFS_ERASEDSTATE=0xff +CONFIG_SMARTFS_MAXNAMLEN=32 +# CONFIG_SMARTFS_MULTI_ROOT_DIRS is not set +CONFIG_SMARTFS_ALIGNED_ACCESS=y +# CONFIG_SMARTFS_BAD_SECTOR is not set +# CONFIG_SMARTFS_DYNAMIC_HEADER is not set +# CONFIG_SMARTFS_JOURNALING is not set +# CONFIG_SMARTFS_SECTOR_RECOVERY is not set +CONFIG_FS_PROCFS=y + +# +# Exclude individual procfs entries +# +# CONFIG_FS_PROCFS_EXCLUDE_PROCESS is not set +# CONFIG_FS_PROCFS_EXCLUDE_UPTIME is not set +# CONFIG_FS_PROCFS_EXCLUDE_VERSION is not set +# CONFIG_FS_PROCFS_EXCLUDE_MOUNTS is not set +# CONFIG_FS_PROCFS_EXCLUDE_MTD is not set +# CONFIG_FS_PROCFS_EXCLUDE_PARTITIONS is not set +# CONFIG_FS_PROCFS_EXCLUDE_SMARTFS is not set +# CONFIG_FS_ROMFS is not set + +# +# Block Driver Configurations +# + +# +# MTD Configuration +# +CONFIG_MTD=y +CONFIG_MTD_PARTITION=y +CONFIG_MTD_PARTITION_NAMES=y +CONFIG_MTD_PROGMEM=y +CONFIG_MTD_CONFIG=y +CONFIG_MTD_FTL=y +# CONFIG_MTD_BYTE_WRITE is not set + +# +# MTD Configurations +# +# CONFIG_MTD_CONFIG_RAM_CONSOLIDATE is not set +CONFIG_MTD_CONFIG_ERASEDVALUE=0xff +# CONFIG_MTD_BYTE_WRITE is not set + +# +# MTD Device Drivers +# +# CONFIG_MTD_M25P is not set +# CONFIG_RAMMTD is not set +CONFIG_MTD_SMART=y + +# +# SMART Device options +# +CONFIG_MTD_SMART_SECTOR_SIZE=4096 +# CONFIG_MTD_SMART_WEAR_LEVEL is not set +# CONFIG_MTD_SMART_ENABLE_CRC is not set +# CONFIG_MTD_SMART_SECTOR_ERASE_DEBUG is not set +# CONFIG_MTD_SMART_ALLOC_DEBUG is not set + +# +# System Logging +# +# CONFIG_SYSLOG is not set +# CONFIG_SYSLOG_TIMESTAMP is not set + +# +# Arastorage +# + +# +# AraStorage database configuration +# +# CONFIG_ARASTORAGE is not set + +# +# Memory Management +# +# CONFIG_DISABLE_REALLOC_NEIGHBOR_EXTENTION is not set +# CONFIG_MM_SMALL is not set +CONFIG_MM_REGIONS=1 +# CONFIG_ARCH_HAVE_HEAP2 is not set +# CONFIG_GRAN is not set + +# +# Power Management +# +# CONFIG_PM is not set + +# +# Logger Module +# +# CONFIG_LOGM is not set + +# +# Library Routines +# + +# +# Standard C Library Options +# +CONFIG_STDIO_BUFFER_SIZE=64 +CONFIG_STDIO_LINEBUFFER=y +CONFIG_NUNGET_CHARS=2 +CONFIG_LIB_HOMEDIR="/" +CONFIG_LIBM=y +# CONFIG_NOPRINTF_FIELDWIDTH is not set +CONFIG_LIBC_FLOATINGPOINT=y +# CONFIG_LIBC_IOCTL_VARIADIC is not set +CONFIG_LIB_RAND_ORDER=1 +# CONFIG_EOL_IS_CR is not set +# CONFIG_EOL_IS_LF is not set +# CONFIG_EOL_IS_BOTH_CRLF is not set +CONFIG_EOL_IS_EITHER_CRLF=y +CONFIG_POSIX_SPAWN_PROXY_STACKSIZE=1024 +CONFIG_TASK_SPAWN_DEFAULT_STACKSIZE=2048 +CONFIG_LIBC_STRERROR=y +# CONFIG_LIBC_STRERROR_SHORT is not set +# CONFIG_LIBC_PERROR_STDOUT is not set +CONFIG_LIBC_TMPDIR="/tmp" +CONFIG_LIBC_MAX_TMPFILE=32 +CONFIG_ARCH_LOWPUTC=y +# CONFIG_LIBC_LOCALTIME is not set +CONFIG_LIB_SENDFILE_BUFSIZE=512 +# CONFIG_ARCH_ROMGETC is not set +# CONFIG_ARCH_OPTIMIZED_FUNCTIONS is not set +# CONFIG_LIBC_NETDB is not set +# CONFIG_NETDB_HOSTFILE is not set + +# +# Non-standard Library Support +# + +# +# Basic CXX Support +# +# CONFIG_C99_BOOL8 is not set +# CONFIG_HAVE_CXX is not set + +# +# External Functions +# +# CONFIG_WICED is not set +# CONFIG_ENABLE_IOTIVITY is not set + +# +# Application Configuration +# + +# +# Examples +# +# CONFIG_ENTRY_MANUAL is not set +CONFIG_ENTRY_HELLO=y +# CONFIG_ENTRY_HELLO_TASH is not set +CONFIG_USER_ENTRYPOINT="jerry_main" +# CONFIG_EXAMPLES_DTLS_CLIENT is not set +# CONFIG_EXAMPLES_DTLS_SERVER is not set +# CONFIG_EXAMPLES_FOTA_SAMPLE is not set +# CONFIG_EXAMPLES_HELLO is not set +# CONFIG_EXAMPLES_HELLO_TASH is not set +# CONFIG_EXAMPLES_HELLOXX is not set +# CONFIG_EXAMPLES_KERNEL_SAMPLE is not set +# CONFIG_EXAMPLES_NETTEST is not set +# CONFIG_EXAMPLES_PROC_TEST is not set +# CONFIG_EXAMPLES_SELECT_TEST is not set +# CONFIG_EXAMPLES_SYSIO_TEST is not set +# CONFIG_EXAMPLES_TELNETD is not set +# CONFIG_EXAMPLES_TESTCASE is not set +# CONFIG_EXAMPLES_TLS_CLIENT is not set +# CONFIG_EXAMPLES_TLS_SELFTEST is not set +# CONFIG_EXAMPLES_TLS_SERVER is not set +# CONFIG_EXAMPLES_WAKAAMA_CLIENT is not set +# CONFIG_EXAMPLES_WEBCLIENT is not set +# CONFIG_EXAMPLES_WORKQUEUE is not set +# CONFIG_EXAMPLES_ARTIK_DEMO is not set + +# +# Network Utilities +# +# CONFIG_NETUTILS_CODECS is not set +# CONFIG_NETUTILS_DHCPC is not set +# CONFIG_NETUTILS_FTPC is not set +# CONFIG_NETUTILS_FTPD is not set +# CONFIG_NETUTILS_JSON is not set +# CONFIG_NETUTILS_SMTP is not set +# CONFIG_NETUTILS_TELNETD is not set +# CONFIG_NETUTILS_TFTPC is not set +# CONFIG_NETUTILS_NETLIB is not set +# CONFIG_NETUTILS_WEBCLIENT is not set +# CONFIG_NETUTILS_WEBSERVER is not set +# CONFIG_NETUTILS_NTPCLIENT is not set +# CONFIG_NETUTILS_MDNS is not set + +# +# Platform-specific Support +# +# CONFIG_PLATFORM_CONFIGDATA is not set + +# +# Enable Shell +# +CONFIG_TASH=y +CONFIG_TASH_MAX_COMMANDS=32 +# CONFIG_DEBUG_TASH is not set +# CONFIG_TASH_TELNET_INTERFACE is not set +CONFIG_TASH_CMDTASK_STACKSIZE=4096 +CONFIG_TASH_CMDTASK_PRIORITY=100 + +# +# System Libraries +# + +# +# EMACS-like Command Line Editor +# +CONFIG_SYSTEM_CLE=y +CONFIG_SYSTEM_CLE_DEBUGLEVEL=0 + +# +# CU Minimal Terminal +# +# CONFIG_SYSTEM_CUTERM is not set + +# +# FLASH Erase-all Command +# + +# +# FOTA HAL Application Library +# +# CONFIG_SYSTEM_FOTA_HAL is not set + +# +# I2C tool +# +# CONFIG_SYSTEM_I2CTOOL is not set + +# +# JerryScript +# +CONFIG_JERRYSCRIPT=y +CONFIG_JERRYSCRIPT_PRIORITY=100 +CONFIG_JERRYSCRIPT_STACKSIZE=16384 +CONFIG_JERRYSCRIPT_HEAPSIZE=107520 +# CONFIG_JERRYSCRIPT_MEM_STATS is not set +# CONFIG_JERRYSCRIPT_SHOW_OPCODES is not set +# CONFIG_JERRYSCRIPT_DEBUGGER is not set + +# +# INI File Parser +# +# CONFIG_SYSTEM_INIFILE is not set + +# +# FLASH Program Installation +# +# CONFIG_SYSTEM_INSTALL is not set + +# +# PHY Tool +# + +# +# System netdb Interface +# + +# +# Power Off +# +# CONFIG_SYSTEM_POWEROFF is not set + +# +# P-Code Support +# + +# +# RAM test +# +CONFIG_SYSTEM_RAMTEST=y + +# +# RAMTRON +# +# CONFIG_SYSTEM_RAMTRON is not set + +# +# readline() +# +CONFIG_SYSTEM_READLINE=y +CONFIG_READLINE_ECHO=y + +# +# Sysinfo +# +CONFIG_SYSTEM_INFORMATION=y + +# +# Utils +# +CONFIG_KERNEL_CMDS=y +CONFIG_FS_CMDS=y +CONFIG_FSCMD_BUFFER_LEN=32 +CONFIG_ENABLE_DATE=y +CONFIG_ENABLE_ENV_GET=y +CONFIG_ENABLE_ENV_SET=y +CONFIG_ENABLE_ENV_UNSET=y +CONFIG_ENABLE_FREE=y +CONFIG_ENABLE_HEAPINFO=y +CONFIG_ENABLE_KILL=y +CONFIG_ENABLE_KILLALL=y +CONFIG_ENABLE_PS=y +CONFIG_ENABLE_STACKMONITOR=y +CONFIG_STACKMONITOR_PRIORITY=100 +CONFIG_STACKMONITOR_INTERVAL=5 + +# +# VI Work-Alike Editor +# +CONFIG_SYSTEM_VI=y +CONFIG_SYSTEM_VI_COLS=64 +CONFIG_SYSTEM_VI_ROWS=16 +CONFIG_SYSTEM_VI_DEBUGLEVEL=0