HAIDOX
HAIDOX Help

Math Engine Reference: Embedded Profile

개요

Embedded artifact의 compile-time board와 resident capability 계약이다.

관련 public header

  • 직접 포함하는 다른 Math Engine public header가 없다.

공개 API

Header 사용 시작

이 module의 public declaration을 사용하려면 installed SDK의 다음 header를 include한다.

#include <math_engine/math_engine_embedded_profile.h>

Macro와 constant

MATH_ENGINE_EMBEDDED_BOARD_AVR_LARGE

확장된 flash/RAM budget을 가진 AVR 8-bit profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_AVR_LARGE 2

MATH_ENGINE_EMBEDDED_BOARD_AVR_SMALL

작은 flash/RAM budget을 가진 AVR 8-bit profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_AVR_SMALL 1

MATH_ENGINE_EMBEDDED_BOARD_CLASS

선택된 embedded artifact의 MATH_ENGINE_EMBEDDED_BOARD_* ID다. 독립 include 기본값은 RP2040이다.

#define MATH_ENGINE_EMBEDDED_BOARD_CLASS MATH_ENGINE_EMBEDDED_BOARD_RP2040

MATH_ENGINE_EMBEDDED_BOARD_CORTEX_M0_PLUS

ARM Cortex-M0+ microcontroller profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_CORTEX_M0_PLUS 3

MATH_ENGINE_EMBEDDED_BOARD_CORTEX_M4

FPU를 사용할 수 있는 ARM Cortex-M4 profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_CORTEX_M4 4

MATH_ENGINE_EMBEDDED_BOARD_RASPBERRY_PI_LINUX

Raspberry Pi Linux embedded-host profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_RASPBERRY_PI_LINUX 6

MATH_ENGINE_EMBEDDED_BOARD_RP2040

Dual-core RP2040 microcontroller profile의 안정된 board ID다.

#define MATH_ENGINE_EMBEDDED_BOARD_RP2040 5

MATH_ENGINE_EMBEDDED_CLOCK_HZ

Worst-case workload 기준에 사용한 nominal board clock frequency(Hz)다.

#define MATH_ENGINE_EMBEDDED_CLOCK_HZ UINT64_C(133000000)

MATH_ENGINE_EMBEDDED_FLASH_CEILING_BYTES

Link된 embedded artifact가 넘지 않아야 하는 flash footprint ceiling(byte)이다.

#define MATH_ENGINE_EMBEDDED_FLASH_CEILING_BYTES UINT64_C(2097152)

MATH_ENGINE_EMBEDDED_HAS_MODULE

지정 module bit가 현재 resident artifact에 포함됐는지 검사한다.

  • 매개변수 module_bit: 하나의 MATH_ENGINE_EMBEDDED_MODULE_* bit 또는 검사할 bit mask.
  • 반환: 요청 mask와 resident mask가 하나라도 겹치면 1, 아니면 0이다.

module_bit expression은 정확히 한 번 평가된다.

#define MATH_ENGINE_EMBEDDED_HAS_MODULE(module_bit) \
    (((MATH_ENGINE_EMBEDDED_RESIDENT_MODULE_BITS) & (module_bit)) != UINT64_C(0))

MATH_ENGINE_EMBEDDED_MAXIMUM_WORKLOAD_US

검증된 대표 workload 한 건의 허용 worst-case 실행시간 ceiling(µs)이다.

#define MATH_ENGINE_EMBEDDED_MAXIMUM_WORKLOAD_US UINT64_C(35000)

MATH_ENGINE_EMBEDDED_MODULE_CAS

Resident artifact에 computer-algebra component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_CAS (UINT64_C(1) << 7u)

MATH_ENGINE_EMBEDDED_MODULE_CHECKED_INTEGER

Resident artifact에 checked integer component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_CHECKED_INTEGER (UINT64_C(1) << 1u)

MATH_ENGINE_EMBEDDED_MODULE_CONTROL

Resident artifact에 control component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_CONTROL (UINT64_C(1) << 11u)

MATH_ENGINE_EMBEDDED_MODULE_DECIMAL_FIXED

Resident artifact에 fixed decimal component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_DECIMAL_FIXED (UINT64_C(1) << 2u)

MATH_ENGINE_EMBEDDED_MODULE_ESTIMATION

Resident artifact에 state-estimation component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_ESTIMATION (UINT64_C(1) << 12u)

MATH_ENGINE_EMBEDDED_MODULE_EXPRESSION

Resident artifact에 expression evaluator가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_EXPRESSION (UINT64_C(1) << 6u)

MATH_ENGINE_EMBEDDED_MODULE_GEOMETRY

Resident artifact에 geometry component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_GEOMETRY (UINT64_C(1) << 9u)

MATH_ENGINE_EMBEDDED_MODULE_NUMBER_THEORY

Resident artifact에 number-theory component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_NUMBER_THEORY (UINT64_C(1) << 5u)

MATH_ENGINE_EMBEDDED_MODULE_NUMERIC_CORE

Resident artifact에 scalar numeric core가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_NUMERIC_CORE (UINT64_C(1) << 0u)

MATH_ENGINE_EMBEDDED_MODULE_PHYSICS

Resident artifact에 physics component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_PHYSICS (UINT64_C(1) << 10u)

MATH_ENGINE_EMBEDDED_MODULE_PLOT

Resident artifact에 plotting sampler가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_PLOT (UINT64_C(1) << 8u)

MATH_ENGINE_EMBEDDED_MODULE_RNG

Resident artifact에 deterministic RNG component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_RNG (UINT64_C(1) << 4u)

MATH_ENGINE_EMBEDDED_MODULE_TRAJECTORY

Resident artifact에 trajectory component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_TRAJECTORY (UINT64_C(1) << 13u)

MATH_ENGINE_EMBEDDED_MODULE_UNITS

Resident artifact에 unit·quantity component가 포함됐음을 나타내는 bit다.

#define MATH_ENGINE_EMBEDDED_MODULE_UNITS (UINT64_C(1) << 3u)

MATH_ENGINE_EMBEDDED_RESIDENT_MODULE_BITS

현재 artifact에 정적으로 포함된 MATH_ENGINE_EMBEDDED_MODULE_* bit의 합집합이다.

#define MATH_ENGINE_EMBEDDED_RESIDENT_MODULE_BITS UINT64_C(16383)

MATH_ENGINE_EMBEDDED_STACK_CEILING_BYTES

검증 workload에서 thread stack 사용량이 넘지 않아야 하는 ceiling(byte)이다.

#define MATH_ENGINE_EMBEDDED_STACK_CEILING_BYTES UINT64_C(16384)

MATH_ENGINE_EMBEDDED_STATIC_RAM_CEILING_BYTES

Static data와 BSS가 넘지 않아야 하는 resident RAM ceiling(byte)이다.

#define MATH_ENGINE_EMBEDDED_STATIC_RAM_CEILING_BYTES UINT64_C(270336)

MATH_ENGINE_EMBEDDED_WORKSPACE_CEILING_BYTES

Caller-provided scratch workspace 한 건이 넘지 않아야 하는 ceiling(byte)이다.

#define MATH_ENGINE_EMBEDDED_WORKSPACE_CEILING_BYTES UINT64_C(131072)