Files
jerryscript/targets/riot-stm32f4
Akos Kiss f29e6f9020 Fix undefined overflow behavior when converting double to integer (#3629)
Overflows in conversions from floating-point to integer are
undefined behavior in the C99 standard. (Clause 6.3.1.4: "If the
value of the integral part cannot be represented by the integer
type, the behavior is undefined.")

When UBSAN is enabled, this gets reported at `srand()` calls. (The
random seed is usually initialized using the date port API, which
represents dates as `double`s. But `srand` takes an `unsigned int`.
A simple cast from `double` to `unsigned` becomes undefined
behavior if the value is too large. And "now" is too large
nowadays. So, effectively, all executions start with an undefined
behavior.)

This patch fixes this by casting the floating-point value of the
date to an integer through a union.

JerryScript-DCO-1.0-Signed-off-by: Akos Kiss akiss@inf.u-szeged.hu
2020-03-27 11:03:28 +01:00
..

About

This folder contains files to run JerryScript on RIOT-OS with STM32F4-Discovery board.

How to build

1. Preface

1, Directory structure

Assume harmony as the path to the projects to build. The folder tree related would look like this.

harmony
  + jerryscript
  |  + targets
  |      + riot-stm32f4
  + RIOT

2, Target board

Assume STM32F4-Discovery with BB as the target board.

2. Prepare RIOT-OS

Follow this page to get the RIOT-OS source.

Follow the Inroduction wiki site and also check that you can flash the stm32f4-board.

3. Build JerryScript for RIOT-OS

# assume you are in harmony folder
cd jerryscript
make -f ./targets/riot-stm32f4/Makefile.riot

This will generate the following libraries:

/build/bin/release.riotstm32f4/librelease.jerry-core.a
/build/bin/release.riotstm32f4/librelease.jerry-libm.lib.a

This will copy one library files to targets/riot-stm32f4/bin folder:

libjerrycore.a

This will create a hex file in the targets/riot-stm32f4/bin folder:

riot_jerry.elf

4. Flashing

make -f ./targets/riot-stm32f4/Makefile.riot flash

For how to flash the image with other alternative way can be found here: Alternative way to flash

5. Cleaning

To clean the build result:

make -f ./targets/riot-stm32f4/Makefile.riot clean

5. Running JerryScript Hello World! example

You may have to press RESET on the board after the flash.

You can use minicom for terminal program, and if the prompt shows like this:

main(): This is RIOT! (Version: ****)
                                     You are running RIOT on a(n) stm32f4discovery board.
                                                                                         This board features a(n) stm32f4 MCU.

please set Add Carriage Ret option by CTRL-A > Z > U at the console, if you're using minicom.

Help will provide a list of commands:

> help

The test command will run the test example, which contains the following script code:

print ('Hello, World!');