Skip to content

Commit

Permalink
Merge pull request #98 from project-mahiwa/feat/coremark
Browse files Browse the repository at this point in the history
feat coremarkの動作機能を追加
  • Loading branch information
usuyuki authored Dec 18, 2023
2 parents 45104ea + 4fa75e1 commit eca8c4b
Show file tree
Hide file tree
Showing 8 changed files with 77 additions and 7 deletions.
11 changes: 10 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"cSpell.words": [
"COREMARK",
"cppcheck",
"mahiwa",
"pico",
Expand All @@ -14,6 +15,14 @@
"numeric": "cpp",
"cmath": "cpp",
"cinttypes": "cpp",
"cstdlib": "cpp"
"cstdlib": "cpp",
"exception": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"limits": "cpp",
"streambuf": "cpp",
"tuple": "cpp",
"type_traits": "cpp"
}
}
12 changes: 12 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,15 @@ r-c3:

debug-atom:
pio debug -e m5stack-atom

coremark:
cp /opt/usuyuki/mahiwa_space/wasm-coremark/coremark-minimal.wasm /opt/usuyuki/.cache/mahiwa/user.wasm
wasm2wat /opt/usuyuki/.cache/mahiwa/user.wasm -o /opt/usuyuki/.cache/mahiwa/user.wat
(cd /opt/usuyuki/.cache/mahiwa && xxd -i user.wasm > user.h)
cp /opt/usuyuki/.cache/mahiwa/user.h /opt/usuyuki/mahiwa_space/mahiwa-backend/src/wasm/user.h

coremarkh:
cp /home/usuyuki/mahiwa_space/wasm-coremark/coremark-minimal.wasm /home/usuyuki/.cache/mahiwa/user.wasm
wasm2wat /home/usuyuki/.cache/mahiwa/user.wasm -o /home/usuyuki/.cache/mahiwa/user.wat
(cd /home/usuyuki/.cache/mahiwa && xxd -i user.wasm > user.h)
cp /home/usuyuki/.cache/mahiwa/user.h /home/usuyuki/mahiwa_space/mahiwa-backend/src/wasm/user.h
1 change: 1 addition & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,5 @@ lib_deps = wasm3/Wasm3@^0.5.0
build_flags =
${env.build_flags}
-DESP32
-DUSE_COREMARK
-DCORE_DEBUG_LEVEL=5
22 changes: 20 additions & 2 deletions src/lib/roader/wasm-roader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,22 @@ void wasm_task(void *)
{
wasm3_error_printer("mahiwa_LinkSerial", result);
}
#ifdef USE_COREMARK
Serial.println("call coremark function link");
result = mahiwa_LinkCoremark(runtime);
if (result)
{
wasm3_error_printer("mahiwa_LinkCoremark", result);
}
#endif

IM3Function f;
#ifdef USE_COREMARK
Serial.println("coremark mode is enabled!!");
result = m3_FindFunction(&f, runtime, "run");
#else
result = m3_FindFunction(&f, runtime, "_start");
#endif
if (result)
{
wasm3_error_printer("m3_FindFunction", result);
Expand All @@ -53,9 +66,14 @@ void wasm_task(void *)

// 実行が成功したら終わる
result = m3_CallV(f);

#ifdef USE_COREMARK
float value = 0;
result = m3_GetResultsV(f, &value);
Serial.print("coremark score:");
Serial.println(value, 10);
#endif
// 失敗時の処理
if (result)
if (result != m3Err_none)
{
M3ErrorInfo info;
m3_GetErrorInfo(runtime, &info);
Expand Down
3 changes: 3 additions & 0 deletions src/lib/roader/wasm-roader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
// 定義読み込み
#include <lib/wasm-functions/arduino/arduino.hpp>
#include <lib/wasm-functions/arduino/serial.hpp>
#ifdef USE_COREMARK
#include <lib/wasm-functions/mahiwa/coremark/coremark.hpp>
#endif

// wasm3のexampleの値に従う
// m3_NewRuntimeの第2引数
Expand Down
22 changes: 22 additions & 0 deletions src/lib/wasm-functions/mahiwa/coremark/coremark.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#include <lib/wasm-functions/mahiwa/coremark/coremark.hpp>

// coremark-minimalに必要な関数を用意する
// (import "env" "clock_ms" (func (;0;) (type 8)))
// (type (;8;) (func (result i64)))
m3ApiRawFunction(m3_clock_ms)
{
// cppcheck-suppress cstyleCast
m3ApiReturnType(int64_t);
m3ApiReturn(millis());
m3ApiSuccess();
}

M3Result mahiwa_LinkCoremark(IM3Runtime runtime)
{
Serial.println("link coremark function");
IM3Module module = runtime->modules;

m3_LinkRawFunction(module, "env", "clock_ms", "I()", &m3_clock_ms);

return m3Err_none;
}
6 changes: 6 additions & 0 deletions src/lib/wasm-functions/mahiwa/coremark/coremark.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#pragma once

#include <m3_env.h>
#include <Arduino.h>

M3Result mahiwa_LinkCoremark(IM3Runtime runtime);
7 changes: 3 additions & 4 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,11 @@ void setup()
Serial.println(cos(0));

Serial.println("Project Mahiwa started🎉");
Serial.print("cos(0.0)");
Serial.println(cos(0.0));
Serial.print("max(100,200)");
Serial.println(max(100, 200));
#ifdef ESP32
Serial.println("ESP32 Mode");
Serial.print("CPU Frequency:");
Serial.print(ESP.getCpuFreqMHz());
Serial.println(" MHz");
// xTaskCreatePinnedToCoreはFreeRTOSの関数
// ESP32ではデフォルトでFreeRTOSが組み込まれているため下記のような形となる.
// wasm3-arduinoのexampleでは16kbごとに区切るためと書かれている.
Expand Down

0 comments on commit eca8c4b

Please sign in to comment.