Skip to content

Commit b4c1045

Browse files
committed
add target port: curie_bsp
JerryScript-DCO-1.0-Signed-off-by: Zidong Jiang [email protected]
1 parent 9d4f7c9 commit b4c1045

File tree

15 files changed

+906
-0
lines changed

15 files changed

+906
-0
lines changed

targets/curie_bsp/README.md

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
### About Curie BSP port
2+
[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).
3+
4+
This folder contains necessary files to integrate JerryScript with Intel® Curie BSP, so that JavaScript can run on Arduino 101 board (AKA Genuino 101).
5+
6+
### How to build
7+
#### 1. Preface
8+
9+
Curie BSP only support Ubuntu GNU/Linux as host OS envirenment.
10+
11+
Necessary hardwares
12+
* [FlySwatter2 JTAG debugger](https://www.tincantools.com/wiki/Flyswatter2)
13+
* [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)
14+
* [USB to TTL Serial Cable](https://www.adafruit.com/products/954)
15+
16+
#### 2. Prepare Curie BSP
17+
18+
You can refer to a detailed document [Curie BSP](https://github.com/CurieBSP/main/releases). But, we summary the main steps below:
19+
20+
##### 1. Get repo:
21+
```
22+
mkdir ~/bin
23+
wget http://commondatastorage.googleapis.com/git-repo-downloads/repo -O ~/bin/repo
24+
chmod a+x ~/bin/repo
25+
```
26+
27+
##### 2. In ``~/.bashrc`` add:
28+
```
29+
PATH=$PATH:~/bin
30+
```
31+
32+
##### 3. Create your directory for CurieBSP (eg. Curie_BSP):
33+
```
34+
mkdir Curie_BSP && cd $_
35+
```
36+
37+
##### 4. Initialize your repo:
38+
```
39+
repo init -u https://github.com/CurieBSP/manifest
40+
```
41+
42+
##### 5. Download the sources files:
43+
```
44+
repo sync -j 5 -d
45+
```
46+
47+
##### 6. Get toolchain (compilation/debug):
48+
Download [issm-toolchain-linux-2016-05-12.tar.gz](https://software.intel.com/en-us/articles/issm-toolchain-only-download), and uncompress it.
49+
**TOOLCHAIN_DIR** environment variable needs to match the toolchain destination folder
50+
You can use the command:``export TOOLCHAIN_DIR='path to files of the toolchain'``
51+
52+
Or you can just uncompress the toolchain tarball and copy the contents (`licensing readme.txt tools version.txt`) into `wearable_device_sw/external/toolchain`.
53+
54+
##### 7. Get BLE firmware:
55+
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
56+
57+
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.
58+
59+
##### 8. Get tools to flash the device:
60+
[https://01.org/android-ia/downloads/intel-platform-flash-tool-lite](https://01.org/android-ia/downloads/intel-platform-flash-tool-lite)
61+
62+
63+
#### 3. Build JerryScript and Curie BSP
64+
##### 1. Generate makefiles
65+
Run the Python script ``setup.py`` in ``jerryscript/targets/curie_bsp/`` with the full path or relative path of the ``Curie_BSP``:
66+
```
67+
python setup.py <path of Curie_BSP>
68+
```
69+
70+
##### 2. One time setup. It will check/download/install the necessary tools, and must be run only once.
71+
In the directory ``Curie_BSP``
72+
```
73+
make -C wearable_device_sw/projects/curie_bsp_jerry/ one_time_setup
74+
```
75+
76+
##### 3. In the directory ``Curie_BSP``
77+
```
78+
mkdir out && cd $_
79+
make -f ../wearable_device_sw/projects/curie_bsp_jerry/Makefile setup
80+
make image
81+
```
82+
83+
##### 4. Connect JTAG Debugger and TTL Serial Cable to Arduino 101 as below:
84+
![](./image/connect.png)
85+
86+
##### 5. Flash the firmware
87+
```
88+
make flash FLASH_CONFIG=jtag_full
89+
```
90+
91+
92+
#### 4. Serial terminal
93+
Assume the serial port is ``ttyUSB0`` in ``/dev`` directory, we can type command ``screen ttyUSB0 115200`` to open a serial terminal.
94+
95+
After the board boot successfully, you should see something like this:
96+
```
97+
Quark SE ID 16 Rev 0 A0
98+
ARC Core state: 0000400
99+
BOOT TARGET: 0
100+
6135|QRK| CFW| INFO| GPIO service init in progress..
101+
6307|ARC|MAIN| INFO| BSP init done
102+
6315|ARC| CFW| INFO| ADC service init in progress..
103+
6315|ARC| CFW| INFO| GPIO service init in progress...
104+
6315|ARC| CFW| INFO| GPIO service init in progress...
105+
6315|ARC|MAIN| INFO| CFW init done
106+
```
107+
To test the JavaScript command, you should add characters ``js e `` to the beginning of the JavaScript command, like this:
108+
``js e print ('Hello World!');``
109+
110+
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.
111+
112+
You can see the result through the screen:
113+
```
114+
js e print ('Hello World!');js e 1 ACK
115+
Hello World!
116+
undefined
117+
js e 1 OK
118+
```
119+
120+
`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 sucessfully. `Hello World!` is the printed content. `undefined` is the return value of the statement `print ('Hello World!')`.

targets/curie_bsp/image/connect.png

575 KB
Loading

targets/curie_bsp/include/alloca.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/* Copyright 2016 Intel Corporation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
16+
#ifndef ALLOCA_H
17+
#define ALLOCA_H
18+
19+
#define alloca(size) __builtin_alloca(size)
20+
21+
#endif /* !ALLOCA_H */

targets/curie_bsp/include/inttypes.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/* Copyright 2016 Intel Corporation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
#ifndef INTTYPES_H
16+
#define INTTYPES_H
17+
18+
#endif /* !INTTYPES_H */

targets/curie_bsp/include/setjmp.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/* Copyright 2016 Intel Corporation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
#ifndef SETJMP_H
16+
#define SETJMP_H
17+
18+
#include <stdint.h>
19+
20+
typedef uint64_t jmp_buf[14];
21+
22+
extern int setjmp (jmp_buf env);
23+
extern void longjmp (jmp_buf env, int val);
24+
25+
#endif /* !SETJMP_H */
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CONFIG_AUTO_SERVICE_INIT=y
2+
CONFIG_CFW_PROXY=y
3+
CONFIG_CFW_QUARK_SE_HELPERS=y
4+
CONFIG_LOG_SLAVE=y
5+
CONFIG_MEM_POOL_DEF_PATH="$(PROJECT_PATH)/arc"
6+
CONFIG_OS_ZEPHYR=y
7+
CONFIG_SERVICES_QUARK_SE_ADC_IMPL=y
8+
CONFIG_SERVICES_QUARK_SE_GPIO_IMPL=y
9+
CONFIG_SOC_GPIO_AON=y
10+
CONFIG_SOC_GPIO=y
11+
CONFIG_SS_ADC=y
12+
CONFIG_SS_GPIO=y
13+
CONFIG_TCMD_SLAVE=y
14+
CONFIG_TCMD=y
15+
CONFIG_ZEPHYR_BOARD="arduino_101_sss"
16+
CONFIG_CONSOLE_HANDLER_SHELL=y
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/* Copyright 2016 Intel Corporation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
/* infra */
16+
#include "infra/log.h"
17+
#include "infra/bsp.h"
18+
#include "infra/xloop.h"
19+
#include "cfw/cfw.h"
20+
21+
static xloop_t loop;
22+
23+
void main (void)
24+
{
25+
T_QUEUE queue = bsp_init ();
26+
27+
pr_info (LOG_MODULE_MAIN, "BSP init done");
28+
29+
cfw_init (queue);
30+
pr_info (LOG_MODULE_MAIN, "CFW init done");
31+
32+
xloop_init_from_queue (&loop, queue);
33+
34+
xloop_run (&loop);
35+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Definition of the memory pools used by balloc/bfree:
3+
* DECLARE_MEMORY_POOL( <index>, <size>, <count>, <align> )
4+
* <index> : must start at 0 and be of consecutive values *
5+
* <size> : size in bytes of each block from the pool
6+
* <count> : number of blocks in the pool
7+
*
8+
* * Pool definitions must be sorted according the block size
9+
* value: pool with <index> 0 must have the smallest <size>.
10+
*/
11+
12+
DECLARE_MEMORY_POOL(0,8,32)
13+
DECLARE_MEMORY_POOL(1,16,32)
14+
DECLARE_MEMORY_POOL(2,32,48)
15+
DECLARE_MEMORY_POOL(3,64,16)
16+
DECLARE_MEMORY_POOL(4,96,24)
17+
DECLARE_MEMORY_POOL(5,128,6)
18+
DECLARE_MEMORY_POOL(6,256,5)
19+
DECLARE_MEMORY_POOL(7,512,1)
20+
21+
#undef DECLARE_MEMORY_POOL
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
/* Copyright 2016 Intel Corporation
2+
*
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software
10+
* distributed under the License is distributed on an "AS IS" BASIS
11+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
* See the License for the specific language governing permissions and
13+
* limitations under the License.
14+
*/
15+
16+
/**
17+
* Allow project to override this partition scheme
18+
* The following variables are allowed to be defined:
19+
*
20+
* QUARK_START_PAGE the first page where the QUARK code is located
21+
* QUARK_NB_PAGE the number of pages reserved for the QUARK. The ARC gets the
22+
* remaining pages (out of 148).
23+
*/
24+
#ifndef PROJECT_MAPPING_H
25+
#define PROJECT_MAPPING_H
26+
27+
#define QUARK_NB_PAGE 125
28+
#include "machine/soc/intel/quark_se/quark_se_mapping.h"
29+
30+
#endif /* !PROJECT_MAPPING_H */
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
CONFIG_AUTO_SERVICE_INIT=y
2+
CONFIG_CFW_QUARK_SE_HELPERS=y
3+
CONFIG_CONSOLE_MANAGER=y
4+
CONFIG_DEBUG_PANIC_TCMD=y
5+
CONFIG_FACTORY_DATA_WRITE=y
6+
CONFIG_FACTORY_DATA=y
7+
CONFIG_INTEL_QRK_AON_PT=y
8+
CONFIG_INTEL_QRK_RTC=y
9+
CONFIG_INTEL_QRK_SPI=y
10+
CONFIG_INTEL_QRK_WDT=y
11+
CONFIG_LOG_CBUFFER_SIZE=2048
12+
CONFIG_LOG_CBUFFER=y
13+
CONFIG_MEMORY_POOLS_BALLOC_STATISTICS=y
14+
CONFIG_MEMORY_POOLS_BALLOC_TRACK_OWNER=y
15+
CONFIG_MEM_POOL_DEF_PATH="$(PROJECT_PATH)/quark"
16+
CONFIG_OS_ZEPHYR=y
17+
CONFIG_PANIC_ON_BUS_ERROR=y
18+
CONFIG_QUARK_SE_PROPERTIES_STORAGE=y
19+
CONFIG_QUARK=y
20+
CONFIG_SERVICES_QUARK_SE_ADC=y
21+
CONFIG_SERVICES_QUARK_SE_GPIO_IMPL=y
22+
CONFIG_SERVICES_QUARK_SE_GPIO=y
23+
CONFIG_SOC_FLASH=y
24+
CONFIG_SOC_GPIO_32=y
25+
CONFIG_SOC_GPIO=y
26+
CONFIG_SOC_ROM=y
27+
CONFIG_SPI_FLASH_W25Q16DV=y
28+
CONFIG_STORAGE_TASK=y
29+
CONFIG_TCMD_CONSOLE=y
30+
CONFIG_TCMD_MASTER=y
31+
CONFIG_TCMD=y
32+
CONFIG_UART_NS16550=y
33+
CONFIG_UART_PM_NS16550=y
34+
CONFIG_ZEPHYR_BOARD="arduino_101"
35+
CONFIG_CONSOLE_HANDLER_SHELL=y

0 commit comments

Comments
 (0)