target: tizenrt-artik053: Update porting

- rename artik05x to artik053
- fix to add library for jerryscript
- add rom patch for artik053
- enable jerry cmd in tizenrt
- change to absolute file path when loading file with jerry cmd
- update README.md and config file

JerryScript-DCO-1.0-Signed-off-by: Hosung Kim hs852.kim@samsung.com
This commit is contained in:
Hosung Kim
2017-08-18 16:32:44 +09:00
committed by yichoi
parent 3b1d578050
commit 5de69b4ede
11 changed files with 143 additions and 85 deletions
@@ -13,8 +13,8 @@
# limitations under the License.
JERRYHEAP ?= 16
BUILD_DIR ?= build/tizenrt-artik05x
LIBTARGET_DIR ?= $(abspath $(PWD)/../tizenrt/build/output/libraries)
BUILD_DIR ?= build/tizenrt-artik053
LIBTARGET_DIR ?= $(abspath $(PWD)/../TizenRT/build/output/libraries)
EXT_CFLAGS += -mcpu=cortex-r4 -mfpu=vfpv3
EXT_CFLAGS += -fno-builtin -fno-strict-aliasing
@@ -22,7 +22,7 @@ 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
EXT_CFLAGS += -I. -isystem ../TizenRT/os/include
.PHONY: libjerry clean
@@ -1,6 +1,6 @@
### About
This folder contains files to build and run JerryScript on [TizenRT](https://github.com/Samsung/TizenRT) with Artik05x board.
This folder contains files to build and run JerryScript on [TizenRT](https://github.com/Samsung/TizenRT) with Artik053 board.
### How to build
@@ -24,69 +24,63 @@ $ export PATH=<Your Toolchain PATH>:$PATH
$ mkdir jerry-tizenrt
$ cd jerry-tizenrt
$ git clone https://github.com/jerryscript-project/jerryscript.git
$ git clone https://github.com/Samsung/TizenRT.git tizenrt
$ git clone https://github.com/Samsung/TizenRT.git
```
The following directory structure is created after these commands
```
jerry-tizenrt
├── jerryscript
└── 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/artik053/
```
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-ext$(LIBEXT)
+TINYARALIBS += $(LIBRARIES_DIR)$(DELIM)libjerry-libm$(LIBEXT)
+endif
+
# Export all libraries
$ cp -r jerryscript/targets/tizenrt-artik053/apps/jerryscript/ TizenRT/apps/system/
$ cp -r jerryscript/targets/tizenrt-artik053/configs/jerryscript/ TizenRT/build/configs/artik053/
$ cp jerryscript/targets/tizenrt-artik053/romfs.patch TizenRT/
```
#### 3. Configure TizenRT
```
$ cd tizenrt/os/tools
$ cd TizenRT/os/tools
$ ./configure.sh artik053/jerryscript
```
#### 4. Build JerryScript for TizenRT
#### 4. Configure TizenRT
```
$ cd ../../
$ patch -p0 < romfs.patch
$ cd build/output/
$ mkdir res
# You can add files in res folder
# The res folder is later flashing into the target's /rom folder
# CAUTION: You must not exceed 400kb
```
#### 5. Build JerryScript for TizenRT
```
# assuming you are in jerry-tizenrt folder
$ cd jerryscript
$ make -f targets/tizenrt-artik05x/Makefile.tizenrt
$ make -f targets/tizenrt-artik053/Makefile.tizenrt
```
#### 5. Build TizenRT binary
#### 6. Build TizenRT binary
```
# assuming you are in jerry-tizenrt folder
$ cd tizenrt/os
$ cd TizenRT/os
$ make
$ genromfs -f ../build/output/bin/rom.img -d ../build/output/res/ -V "NuttXBootVol"
```
Binaries are available in tizenrt/build/output/bin
Binaries are available in TizenRT/build/output/bin
#### 6. Flash binary
#### 7. Flash binary
```
make download ALL
@@ -95,7 +89,7 @@ make download ALL
For more information, see [How to program a binary](https://github.com/Samsung/TizenRT/blob/master/build/configs/artik053/README.md).
#### 7. Run JerryScript
#### 8. Run JerryScript
You can use `minicom` for terminal program, or any other you may like, but set
baud rate to `115200`.
@@ -105,3 +99,16 @@ baud rate to `115200`.
```
sudo minicom --device=/dev/ttyUSB0 --baud=115200
```
Run `jerry` with javascript file(s)
```
TASH>>jerry hello.js
Hello JerryScript!
```
Without argument it prints:
```
TASH>>jerry
No input files, running a hello world demo:
Hello World from JerryScript
```
@@ -75,7 +75,7 @@ CONFIG_JERRYSCRIPT_HEAPSIZE ?= 64000
CONFIG_JERRY_DEBUGGER_PORT ?= 5001
APPNAME = jerry
# path to the project dir, "tizenrt-artik05x" by default
# path to the project dir, "tizenrt-artik053" by default
ROOT_DIR = ../../../..
PRIORITY = $(CONFIG_JERRYSCRIPT_PRIORITY)
STACKSIZE = $(CONFIG_JERRYSCRIPT_STACKSIZE)
@@ -16,6 +16,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <tinyara/fs/fs_utils.h>
#include "jerryscript.h"
#include "jerryscript-ext/handler.h"
@@ -70,7 +71,7 @@ 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");
FILE *file = fopen (get_fullpath(file_name), "r");
if (file == NULL)
{
jerry_port_log (JERRY_LOG_LEVEL_ERROR, "Error: cannot open file: %s\n", file_name);
@@ -312,17 +313,14 @@ register_js_function (const char *name_p, /**< name of the function */
*/
static jerry_log_level_t jerry_log_level = JERRY_LOG_LEVEL_ERROR;
/**
* Main program.
*
* @return 0 if success, error code otherwise
* JerryScript command main
*/
#ifdef CONFIG_BUILD_KERNEL
int main (int argc, FAR char *argv[])
#else
int jerry_main (int argc, char *argv[])
#endif
static int
jerry_cmd_main (int argc, char *argv[])
{
if (argc > JERRY_MAX_COMMAND_LINE_ARGS)
{
jerry_port_log (JERRY_LOG_LEVEL_ERROR,
@@ -455,7 +453,7 @@ int jerry_main (int argc, char *argv[])
jerry_cleanup ();
return ret_code;
} /* main */
} /* jerry_cmd_main */
/**
* Aborts the program.
@@ -518,10 +516,17 @@ jerryx_port_handler_print_char (char c) /**< the character to print */
printf ("%c", c);
} /* jerryx_port_handler_print_char */
int
jerry_register_cmd (void) {
const tash_cmdlist_t tash_cmds[]
= { { "jerry", jerry_main, TASH_EXECMD_SYNC }, { 0, 0, 0 } };
tash_cmdlist_install(tash_cmds);
/**
* 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
{
tash_cmd_install("jerry", jerry_cmd_main, TASH_EXECMD_SYNC);
return 0;
}
} /* main */
@@ -79,6 +79,8 @@ EXTRA_LIBPATHS = -L "${shell dirname "$(LIBSUPXX)"}"
EXTRA_LIBS = -lsupc++
endif
EXTRA_LIBS += -ljerry-core -ljerry-libm -ljerry-ext
ifeq ($(WINTOOL),y)
# Windows-native toolchains
DIRLINK = $(TOPDIR)/tools/copydir.sh
@@ -60,16 +60,13 @@ CONFIG_DEBUG_VERBOSE=y
# CONFIG_DEBUG_MM is not set
# CONFIG_DEBUG_SCHED is not set
#
# SLSI WLAN Debug Options
#
#
# OS Function Debug Options
#
# CONFIG_ARCH_HAVE_HEAPCHECK is not set
CONFIG_DEBUG_MM_HEAPINFO=y
# CONFIG_DEBUG_IRQ is not set
# CONFIG_DEBUG_IRQ_INFO is not set
#
# Driver Debug Options
@@ -105,6 +102,7 @@ CONFIG_ARCH="arm"
#
# ARM Options
#
# CONFIG_ARCH_CHIP_LM is not set
CONFIG_ARCH_CHIP_S5J=y
# CONFIG_ARCH_CORTEXM3 is not set
# CONFIG_ARCH_CORTEXM4 is not set
@@ -283,9 +281,9 @@ CONFIG_ARTIK053_FLASH_CAPACITY=8388608
CONFIG_ARTIK053_FLASH_PAGE_SIZE=4096
CONFIG_ARTIK053_FLASH_PART=y
CONFIG_ARTIK053_FLASH_MINOR=0
CONFIG_ARTIK053_FLASH_PART_LIST="16,48,192,32,512,2400,1536,1536,1400,8,512,"
CONFIG_ARTIK053_FLASH_PART_TYPE="none,ftl,none,none,none,none,none,ftl,smartfs,config,none,"
CONFIG_ARTIK053_FLASH_PART_NAME="bl1,sssro,bl2,sssfw,wlanfw,os,factory,ota,user,nvram,sssrw,"
CONFIG_ARTIK053_FLASH_PART_LIST="16,48,192,32,512,2400,1536,1536,1000,400,8,512,"
CONFIG_ARTIK053_FLASH_PART_TYPE="none,ftl,none,none,none,none,none,ftl,smartfs,romfs,config,none,"
CONFIG_ARTIK053_FLASH_PART_NAME="bl1,sssro,bl2,sssfw,wlanfw,os,factory,ota,user,rom,nvram,sssrw,"
CONFIG_ARTIK053_AUTOMOUNT=y
CONFIG_ARTIK053_AUTOMOUNT_USERFS=y
CONFIG_ARTIK053_AUTOMOUNT_USERFS_DEVNAME="/dev/smart0p8"
@@ -402,7 +400,6 @@ CONFIG_SCHED_HPWORKSTACKSIZE=2048
#
CONFIG_IDLETHREAD_STACKSIZE=1024
CONFIG_USERMAIN_STACKSIZE=2048
CONFIG_PREAPP_STACKSIZE=2048
# CONFIG_MPU_STACKGAURD is not set
CONFIG_PTHREAD_STACK_MIN=256
CONFIG_PTHREAD_STACK_DEFAULT=2048
@@ -442,7 +439,6 @@ CONFIG_SPI=y
# CONFIG_SPI_CMDDATA is not set
# CONFIG_SPI_BITBANG is not set
CONFIG_GPIO=y
# CONFIG_I2S is not set
# CONFIG_BCH is not set
CONFIG_RTC=y
CONFIG_RTC_DATETIME=y
@@ -566,7 +562,6 @@ CONFIG_UART4_PARITY=0
CONFIG_UART4_2STOP=0
# CONFIG_UART4_IFLOWCONTROL is not set
# CONFIG_UART4_OFLOWCONTROL is not set
# CONFIG_USBDEV is not set
# CONFIG_FOTA_DRIVER is not set
@@ -585,6 +580,7 @@ CONFIG_UART4_2STOP=0
# Wireless Device Options
#
# CONFIG_DRIVERS_WIRELESS is not set
# CONFIG_I2S is not set
#
# Networking Support
@@ -601,7 +597,6 @@ CONFIG_UART4_2STOP=0
# 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
@@ -631,7 +626,7 @@ CONFIG_FS_PROCFS=y
# 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
CONFIG_FS_ROMFS=y
#
# Block Driver Configurations
@@ -740,7 +735,6 @@ CONFIG_ARCH_LOWPUTC=y
# CONFIG_LIBC_LOCALTIME is not set
# CONFIG_TIME_EXTENDED 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
@@ -748,6 +742,7 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
#
# Non-standard Library Support
#
# CONFIG_AUDIO is not set
#
# Basic CXX Support
@@ -758,18 +753,25 @@ CONFIG_LIB_SENDFILE_BUFSIZE=512
#
# External Functions
#
# CONFIG_LWM2M_WAKAAMA is not set
#
# IOTIVITY Config Parameters
#
# CONFIG_ENABLE_IOTIVITY is not set
# CONFIG_LIBTUV is not set
# CONFIG_AWS_SDK is not set
#
# Application Configuration
#
# CONFIG_ENTRY_MANUAL is not set
CONFIG_ENTRY_MANUAL=y
#
# Application entry point list
#
CONFIG_ENTRY_HELLO=y
# CONFIG_ENTRY_HELLO is not set
# CONFIG_ENTRY_IOTJS is not set
CONFIG_USER_ENTRYPOINT="jerry_main"
CONFIG_BUILTIN_APPS=y
@@ -777,11 +779,13 @@ CONFIG_BUILTIN_APPS=y
# Examples
#
# CONFIG_EXAMPLES_ARTIK_DEMO is not set
# CONFIG_EXAMPLES_AWS is not set
# CONFIG_EXAMPLES_EEPROM_TEST 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_IOTBUS_TEST is not set
# CONFIG_EXAMPLES_KERNEL_SAMPLE is not set
# CONFIG_EXAMPLES_LIBTUV is not set
# CONFIG_EXAMPLES_MTDPART is not set
@@ -793,7 +797,6 @@ CONFIG_BUILTIN_APPS=y
# CONFIG_EXAMPLES_SMART_TEST is not set
# CONFIG_EXAMPLES_SYSIO_TEST is not set
# CONFIG_EXAMPLES_TESTCASE is not set
# CONFIG_EXAMPLES_WAKAAMA_CLIENT is not set
# CONFIG_EXAMPLES_WIFI_TEST is not set
# CONFIG_EXAMPLES_WORKQUEUE is not set
@@ -805,6 +808,7 @@ CONFIG_BUILTIN_APPS=y
# CONFIG_NETUTILS_FTPC is not set
# CONFIG_NETUTILS_FTPD is not set
# CONFIG_NETUTILS_JSON is not set
# CONFIG_NETUTILS_LIBCOAP is not set
# CONFIG_NETUTILS_MDNS is not set
# CONFIG_NETUTILS_MQTT is not set
# CONFIG_NETUTILS_NETLIB is not set
@@ -821,12 +825,12 @@ CONFIG_BUILTIN_APPS=y
# CONFIG_PLATFORM_CONFIGDATA is not set
#
# Enable Shell
# Shell
#
CONFIG_TASH=y
CONFIG_TASH_MAX_COMMANDS=32
# CONFIG_DEBUG_TASH is not set
# CONFIG_TASH_TELNET_INTERFACE is not set
# CONFIG_TASH_COMMAND_INTERFACE is not set
CONFIG_TASH_CMDTASK_STACKSIZE=4096
CONFIG_TASH_CMDTASK_PRIORITY=100
@@ -839,10 +843,19 @@ CONFIG_SYSTEM_CLE_DEBUGLEVEL=0
# CONFIG_SYSTEM_FOTA_HAL is not set
# CONFIG_SYSTEM_I2CTOOL is not set
# CONFIG_SYSTEM_INIFILE is not set
CONFIG_SYSTEM_PREAPP_INIT=y
CONFIG_SYSTEM_PREAPP_STACKSIZE=2048
# CONFIG_SYSTEM_INSTALL is not set
CONFIG_JERRYSCRIPT=y
CONFIG_JERRYSCRIPT_PRIORITY=100
CONFIG_JERRYSCRIPT_STACKSIZE=16384
CONFIG_JERRYSCRIPT_HEAPSIZE=107520
# CONFIG_JERRYSCRIPT_ERROR_MESSAGES is not set
# CONFIG_JERRYSCRIPT_MEM_STATS is not set
# CONFIG_JERRYSCRIPT_SHOW_OPCODES is not set
# CONFIG_JERRYSCRIPT_DEBUGGER is not set
# CONFIG_SYSTEM_POWEROFF is not set
CONFIG_SYSTEM_RAMTEST=y
# CONFIG_SYSTEM_RAMTRON is not set
CONFIG_SYSTEM_READLINE=y
CONFIG_READLINE_ECHO=y
CONFIG_SYSTEM_INFORMATION=y
@@ -855,6 +868,7 @@ CONFIG_ENABLE_ENV_SET=y
CONFIG_ENABLE_ENV_UNSET=y
CONFIG_ENABLE_FREE=y
CONFIG_ENABLE_HEAPINFO=y
# CONFIG_ENABLE_IRQINFO is not set
CONFIG_ENABLE_KILL=y
CONFIG_ENABLE_KILLALL=y
CONFIG_ENABLE_PS=y
@@ -867,18 +881,7 @@ CONFIG_SYSTEM_VI_COLS=64
CONFIG_SYSTEM_VI_ROWS=16
CONFIG_SYSTEM_VI_DEBUGLEVEL=0
#
# 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
#
# wpa_supplicant
#
# CONFIG_WPA_SUPPLICANT is not set
# CONFIG_WPA_SUPPLICANT is not set
+41
View File
@@ -0,0 +1,41 @@
diff --git apps/system/init/init.c apps/system/init/init.c
index 5d5e360..430e2f5 100644
--- apps/system/init/init.c
+++ apps/system/init/init.c
@@ -130,6 +130,10 @@ int preapp_start(int argc, char *argv[])
}
#endif
+#ifdef CONFIG_FS_ROMFS
+ mount("/dev/smart4rom9", "/rom", "romfs", 0, NULL);
+#endif
+
#if defined(CONFIG_LIB_USRWORK) || defined(CONFIG_TASH)
error_out:
return pid;
diff --git build/configs/artik053/artik053_download.sh build/configs/artik053/artik053_download.sh
index 711d131..7f8eee0 100755
--- build/configs/artik053/artik053_download.sh
+++ build/configs/artik053/artik053_download.sh
@@ -72,6 +72,7 @@ main()
flash_write sssfw ../../bin/sssfw.bin; \
flash_write wlanfw ../../bin/wlanfw.bin; \
flash_write os ../../../../output/bin/tinyara_head.bin; \
+ flash_write rom ../../../../output/bin/rom.img; \
exit'
popd
;;
diff --git build/configs/artik053/tools/openocd/partition_map.cfg build/configs/artik053/tools/openocd/partition_map.cfg
index 10455a4..8f66487 100644
--- build/configs/artik053/tools/openocd/partition_map.cfg
+++ build/configs/artik053/tools/openocd/partition_map.cfg
@@ -11,7 +11,8 @@ set partition_list {
os { "OS" 0x040C8000 0x00258000 0 }
factory { "Factory Reset" 0x04320000 0x00180000 0 }
ota { "OTA download" 0x044A0000 0x00180000 0 }
- user { "USER R/W" 0x04620000 0x0015E000 0 }
+ user { "USER R/W" 0x04620000 0x000FA000 0 }
+ rom { "ROM FS" 0x0471A000 0x00064000 0 }
nvram { "WiFi NVRAM" 0x0477E000 0x00002000 1 }
sssrw { "SSS R/W Key" 0x04780000 0x00080000 1 }
}