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 4This 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 9Curie BSP only support Ubuntu GNU/Linux as host OS envirenment. 10 11Necessary 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 18You 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``` 22mkdir ~/bin 23wget http://commondatastorage.googleapis.com/git-repo-downloads/repo -O ~/bin/repo 24chmod a+x ~/bin/repo 25``` 26 27##### 2. In ``~/.bashrc`` add: 28``` 29PATH=$PATH:~/bin 30``` 31 32##### 3. Create your directory for CurieBSP (eg. Curie_BSP): 33``` 34mkdir Curie_BSP && cd $_ 35``` 36 37##### 4. Initialize your repo: 38``` 39repo init -u https://github.com/CurieBSP/manifest 40``` 41 42##### 5. Download the sources files: 43``` 44repo sync -j 5 -d 45``` 46 47##### 6. Get toolchain (compilation/debug): 48Download [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 50You can use the command:``export TOOLCHAIN_DIR='path to files of the toolchain'`` 51 52Or 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: 55Download [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 57You 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 65Run the Python script ``setup.py`` in ``jerryscript/targets/curie_bsp/`` with the full path or relative path of the ``Curie_BSP``: 66``` 67python 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. 71In the directory ``Curie_BSP`` 72``` 73make -C wearable_device_sw/projects/curie_bsp_jerry/ one_time_setup 74``` 75 76##### 3. In the directory ``Curie_BSP`` 77``` 78mkdir out && cd $_ 79make -f ../wearable_device_sw/projects/curie_bsp_jerry/Makefile setup 80make image 81``` 82 83##### 4. Connect JTAG Debugger and TTL Serial Cable to Arduino 101 as below: 84 85 86##### 5. Flash the firmware 87``` 88make flash FLASH_CONFIG=jtag_full 89``` 90 91 92#### 4. Serial terminal 93Assume the serial port is ``ttyUSB0`` in ``/dev`` directory, we can type command ``screen ttyUSB0 115200`` to open a serial terminal. 94 95After the board boot successfully, you should see something like this: 96``` 97Quark SE ID 16 Rev 0 A0 98ARC Core state: 0000400 99BOOT 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``` 107To 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 110It 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 112You can see the result through the screen: 113``` 114js e print ('Hello World!');js e 1 ACK 115Hello World! 116undefined 117js 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!')`. 121