-
Notifications
You must be signed in to change notification settings - Fork 0
SDK_BuildOptions
Arduino IDE のツール
サブメニューで設定されるマクロ定数について。
これらはスケッチ
メニューの検証・コンパイル
またはマイコンボードに書き込む
を実行する度に毎回再設定される。
その際のライブラリ生成&キャッシュにも毎回反映される。
スケッチビルドに使われた Arduino IDE バージョン/メジャー/マイナー番号。
例えばv1.8.19
なら 10819
が定義される。数値はVMMNN
形式。
選択中の SDKビルドバリアント種別を現すマクロ宣言。defined
で識別する。
例えば ARDUINO_AVR_ATMEGA4808
など。
ここに現れる名称はIDEボードメニュー選択に依存するので、
より厳密な型番固有判定には<avr/io.h>
で設定される
__AVR_ATmega4808__
などを調べること。
選択中の SDKビルドコア種別を現すマクロ宣言。defined
で識別する。
例えば ARDUINO_ARCH_MEGAAVR
など。
Console
選択で設定されるUARTボーレート既定値。
Serial
周辺機能設定時に参照すると良い。使用は任意。
/* メニュー指定値で既定UART初期化 */
Serial.begin(CONSOLE_BAUD);
Build Option
選択で設定されるマクロ宣言/定数。
メニューでは1
か2
を選べる。
NDEBUG
設定時は未設定。
使用は任意。
#if (DEBUG == 2)
Serial.printDump(valueStore, sizeof(valueStore), ':');
#
Build API
選択でMacro API Enable
選択時に定義されるマクロ宣言。defined
で識別する。
これは<Arduino.h>
か<api/macro_api.h>
インクルード時に参照され、
例えばdigitalWriteMacro
にdigitalWrite
別名マクロが追加される。
選択でEnable
以外にすると定義されない。
スケッチ.ino
ファイルでは<api/macro_api.h>
は<Arduino.h>
から間接的に既定インクルードされるが、
その他のC言語.c
C++言語.cpp
アセンブラ.S
ファイルではそうではないことに注意。
スケッチ.ino
は必ず<Arduino.h>
を強制インクルードする。
Clock
を選ぶことで設定されるマクロ定数。単位はHz
、接尾子L
。
既定値は選択中のボードによって異なる。
この値はスタートアップコードにて、CLK_PER マスタークロックを AVR に設定する際に参照される。
また各種delay
関数や計時器周辺機能の初期化に際しても参照される。
/* 指定マイクロ秒の遅滞時間生成 */
void delay_micros (uint32_t _us) {
/* マイクロ秒単位を CLK_PER 単位に変換して遅滞 */
__builtin_avr_delay_cycles((F_CPU / 1000000L) * _us);
}
Bootloader
かConsole and LED
選択で定義される既定LED指示マクロ宣言。
内容はボード定義に依存したPIN_P**
を示す。
通常はブートローダーが使用できる、ユーザー制御可能なLED端子名である。
LED制御が正論理か負論理かはボードに依存し、マクロ判別できるかは限らない。
複数のLED制御が可能な場合は別途追加のマクロ定義がある場合もある。
Build Option
選択で設定されるマクロ宣言/定数。
標準C言語ライブラリ<assert.h>
の効果を失わせる。
これが定義されている場合、DEBUG
は普通未定義。
スケッチ.ino
を含むフォルダの絶対パスを保持しているマクロ定数。
ダブルクォートはされていない。また末尾にパス区切子/
や\\
を持たない。
-
スケッチ.ino
以外の、キャッシュされる可能性のあるライブラリファイル中では参照すべきではない。
実際の使用例は[Import_BinFileサンプル]を参照のこと。
Bootloader
かConsole and LED
選択で定義される既定UART指示マクロ宣言。使用は任意。
通常は Arduino IDE のシリアルモニタに出力できる UART周辺機能の
(Macro/Micro APIが定義する)
クラスインスタンス名を別名として保持している。
その実態はボード/バリアント定義依存。
ATtiny10
のような USART周辺機能のない品種では未定義。
/* メニュー指定値で既定UART初期化 */
Serial.begin(CONSOLE_BAUD);
複数UART選択可能な場合は
Serial1
Serial2
等の追加のマクロ定義がある。
真の(マクロではない)クラスインスタンスにはSerial0A
Serial0B
等の PORTMUX選択枝番が付いている。
- UARTクラスインスタンス実体(HarfUART)のリンク結合は、リンクプロセスまで遅延される。 つまりそれを示すマクロがコード中の何処にもないのであれば(結果はコンパイル最適化によって除外され) 実体もまた結合されないことに注意されたい。
Bootloader
かConsole and LED
選択で定義される既定ボタン指示マクロ宣言。
内容はボード定義に依存したPIN_P**
を示す。
通常はブートローダーが使用できる、ユーザー認識可能なボタン端子名である。
Curiosity Nano
のような既製品の使用を選択した場合にのみ定義される。
ユーザー使用可能領域に割り当てられたフラッシュメモリ実効量をバイト数で返す。 ブートローダーを使用している場合は、その予約領域量を減じている。
スケッチ量を差し引いた真のフラッシュメモリ空容量を取得するには、
__nvmem_end
シンボルなどを参照して計算すること。
[FlashNVM_fillspaceサンプル]が詳しい。
Build "printf"
選択で、浮動小数点拡張を有効化していると定義されるマクロ宣言。
Serial.printf
で%f
指示子が使用可能なことを示す。
Twitter(X): @askn37
BlueSky Social: @multix.jp
GitHub: https://github.com/askn37/
Product: https://askn37.github.io/
Copyright (c) 2022,2023 askn (K.Sato) multix.jp
Released under the MIT license
https://opensource.org/licenses/mit-license.php
https://www.oshwa.org/
multix.jp/てくにかるむ(休眠中)
Multix Zinnia Product SDK [*AVR]
AVR.JP(日本語訳)
AVR-LIBC(日本語訳)