forked from xuos/xiuos
				
			add JerryScript test file and update README.md
This commit is contained in:
		
							parent
							
								
									544b0bcba4
								
							
						
					
					
						commit
						74b31a5420
					
				| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
# jerryscript编译步骤,本文档依赖 Ubuntu 20.04 操作系统.
 | 
					# jerryscript编译步骤,本文档依赖 Ubuntu 20.04 操作系统.
 | 
				
			||||||
## 1、jerryscript源码下载
 | 
					## 1、jerryscript源码下载
 | 
				
			||||||
 | 
					
 | 
				
			||||||
JerryScript 源码以子模块的形式保存在xiuos/APP_Framework/lib/JerryScript/jerryscript下,进行编译前需要下载,在xiuos根目录下执行:
 | 
					JerryScript 源码,已经以子模块的形式保存在xiuos/APP_Framework/lib/JerryScript/jerryscript下,第一次进行编译前需要将该源码下载下来,在xiuos根目录下执行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git submodule
 | 
					git submodule
 | 
				
			||||||
| 
						 | 
					@ -9,7 +9,7 @@ git submodule init
 | 
				
			||||||
git submodule update APP_Framework/lib/JerryScript/jerryscript
 | 
					git submodule update APP_Framework/lib/JerryScript/jerryscript
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 2、jerryscript编译依赖安装
 | 
					## 2、jerryscript编译依赖工具链安装
 | 
				
			||||||
 | 
					
 | 
				
			||||||
第一次编译需要安装依赖,在APP_Framework/lib/JerryScript路径下,依次执行:
 | 
					第一次编译需要安装依赖,在APP_Framework/lib/JerryScript路径下,依次执行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,7 +25,7 @@ sudo apt install \
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 3、jerryscript源码编译
 | 
					## 3、jerryscript源码编译
 | 
				
			||||||
 | 
					
 | 
				
			||||||
当前在XIZI操作系统下,支持HC32F4A0单片机和STM32F4单片机两个系列的开发板,在APP_Framework/lib/JerryScript路径下,以edu-arm32开发板(HC32F4A0单片机)为例,执行:
 | 
					当前在XiZi操作系统下,支持HC32F4A0单片机和STM32F4单片机两个系列的开发板,在APP_Framework/lib/JerryScript路径下,以edu-arm32开发板(HC32F4A0单片机)为例,进入到APP_Framework/lib/JerryScript下执行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
jerryscript/tools/build.py \
 | 
					jerryscript/tools/build.py \
 | 
				
			||||||
| 
						 | 
					@ -39,11 +39,11 @@ jerryscript/tools/build.py \
 | 
				
			||||||
    --toolchain=${PWD}/jerryscript/cmake/toolchain_mcu_hc32f4a0.cmake
 | 
					    --toolchain=${PWD}/jerryscript/cmake/toolchain_mcu_hc32f4a0.cmake
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
如果是STM32F4的单片机,将.cmake指定为toolchain_mcu_stm32f4.cmake即可。
 | 
					如果是STM32F4的单片机,将.cmake指定为toolchain_mcu_stm32f4.cmake即可,这一步完成后在APP_Framework/lib/JerryScript/jerryscript/build目录下会编译出几个.a文件,这些文件是接下来的bin包构建过程中需要的。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## 4、edu-arm32开发板bin包构建
 | 
					## 4、开发板bin包构建
 | 
				
			||||||
 | 
					
 | 
				
			||||||
在xiuos/Ubiquitous/XiZi_IIoT目录下,执行
 | 
					以edu-arm32开发板为例进行构建,进入到xiuos/Ubiquitous/XiZi_IIoT目录下,执行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```makefile
 | 
					```makefile
 | 
				
			||||||
make BOARD=edu-arm32 menuconfig
 | 
					make BOARD=edu-arm32 menuconfig
 | 
				
			||||||
| 
						 | 
					@ -51,22 +51,26 @@ make BOARD=edu-arm32 menuconfig
 | 
				
			||||||
 | 
					
 | 
				
			||||||
然后在menuconfig界面进入APP_Framework → app lib → lib using JerryScript ,完成勾选;
 | 
					然后在menuconfig界面进入APP_Framework → app lib → lib using JerryScript ,完成勾选;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
为了支持文件解析,需要存储js文件,勾选edu-arm32 feature → Using SD CARD device,使用sd卡进行.js文件的保存。
 | 
					为了支持javascript文件解析,需要存储.js文件,勾选edu-arm32 feature → Using SD CARD device,使用sd卡进行.js文件的保存;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
保存并,退出menuconfig
 | 
					保存并退出menuconfig,然后执行编译:
 | 
				
			||||||
 | 
					 | 
				
			||||||
执行
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```makefile
 | 
					```makefile
 | 
				
			||||||
make BOARD=BOARD=edu-arm32
 | 
					make BOARD=BOARD=edu-arm32
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
完成编译,edu-arm32开发板的烧录方式参考xiuos/Ubiquitous/XiZi_IIoT/board/edu-arm32/目录下的README.md。
 | 
					完成编译后,进行bin包的烧录,edu-arm32开发板的烧录方式参考xiuos/Ubiquitous/XiZi_IIoT/board/edu-arm32/目录下的README.md。
 | 
				
			||||||
 | 
					
 | 
				
			||||||
完成烧录后,插入存有js文件的内存卡,内存卡正确完成挂载后,执行:
 | 
					APP_Framework/lib/JerryScript/testfile目录下存放了几个.js文件,可以将这些文件拷贝到内存卡中,也可以自行创建一些.js文件,完成烧录后,插入存有.js文件的内存卡,正确完成挂载后执行:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```shell
 | 
					```shell
 | 
				
			||||||
jerrytest xxx.js
 | 
					jerrytest hello.js
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
即可看到执行js文件解析,如果jerrytest没有带文件参数,则执行一条js的语句退出。
 | 
					也可以同时执行多个.js文件:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```shell
 | 
				
			||||||
 | 
					jerrytest hello.js test.js mathfunction.js
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					即可看到执行.js文件执行结果,如果jerrytest命令没有带文件参数,则执行一条默认的js语句。
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,4 +7,3 @@ console.log("helo js engine!!");
 | 
				
			||||||
console.log("helo world!!" + str2);
 | 
					console.log("helo world!!" + str2);
 | 
				
			||||||
console.log("num=" + num);
 | 
					console.log("num=" + num);
 | 
				
			||||||
console.log("[hello world] end");
 | 
					console.log("[hello world] end");
 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * File: mathUtils.js
 | 
				
			||||||
 | 
					 * Function: Math utilities
 | 
				
			||||||
 | 
					 * Description: Contains various math utility functions.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Calculates the square of a number
 | 
				
			||||||
 | 
					function square(number) {
 | 
				
			||||||
 | 
					  var square = number * number;
 | 
				
			||||||
 | 
					  console.log("The square of", number, "is", square);
 | 
				
			||||||
 | 
					  return square;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Calculates the cube of a number
 | 
				
			||||||
 | 
					function cube(number) {
 | 
				
			||||||
 | 
					  var cube = number * number * number;
 | 
				
			||||||
 | 
					  console.log("The cube of", number, "is", cube);
 | 
				
			||||||
 | 
					  return cube;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Calculates the average of an array of numbers
 | 
				
			||||||
 | 
					function average(numbers) {
 | 
				
			||||||
 | 
					  var sum = numbers.reduce(function (acc, curr) {
 | 
				
			||||||
 | 
					    return acc + curr;
 | 
				
			||||||
 | 
					  }, 0);
 | 
				
			||||||
 | 
					  var avg = sum / numbers.length;
 | 
				
			||||||
 | 
					  console.log("The average of the following numbers:",numbers,"is", avg);
 | 
				
			||||||
 | 
					  return avg;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var num = 7;
 | 
				
			||||||
 | 
					var arr = [17, 12, 33, 24, 45, 36, 18, 85, 97, 48];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var res1 = square(num);
 | 
				
			||||||
 | 
					var res2 = cube(num);
 | 
				
			||||||
 | 
					var res3 = average(arr);
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					var numbers = [1, 2, 3, 4, 5];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function sumArray(arr) {
 | 
				
			||||||
 | 
					  var sum = arr.reduce(function (a, b) {
 | 
				
			||||||
 | 
					    return a + b;
 | 
				
			||||||
 | 
					  }, 0);
 | 
				
			||||||
 | 
					  console.log("Sum of array", arr, "is", sum);
 | 
				
			||||||
 | 
					  return sum;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var arraySum = sumArray(numbers);
 | 
				
			||||||
		Loading…
	
		Reference in New Issue