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
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!');