このソフトウェア開発キットは、 主に Atmel ATtiny10 について Arduino IDEでの開発を支援するために構成されている。 AVR-GCC/AVR-LIBC を用いて書かれた C/C++/アセンブラ プログラムを avrdude を用いて対象MCUにアップロードするまでの作業フローを提供する。
- Arduino互換APIは提供されない。
- ごく限られた互換性は配慮されており Blinkスケッチ(標準Lチカ)はそのままビルドできる。
- 原則として割込や計数器/計時器周辺機能を専有せず、利用者が自由に使える。
- 安価なプログラムライタ(書込器)の利用を想定。
- 記憶容量もピン数も極端に少ないので、外部ロジックアナライザ解析はほぼ必須。
- makeコマンドによる高度なビルド進行は提供されない。
- Arduino IDE自体が makeコマンドに対応していない。
- Arduino IDEによる自動ビルド進行は提供される。
- 大規模開発には不向き。
- むしろMakefileを書かなくて良いから割り切れて簡単。
- 単機能テスト、スクラッチビルド、先行検証、各種実験に好適。
- 現状、ブートローダーは提供されない。
- 対象に現在ブートローダー支援機能を持つ品種がない。
- 新規構築・再構築が簡単。
- セットアップは数分で済む。公式IDEのように何GBも大量ダウンロードすることはない。
- セミナー講習等での一斉大量導入に向く。
現在この SDK は複数の異なる対象アーキテクチャ向けにリポジトリを分けて提供される。
- MultiX Zinnia Product SDK [megaAVR]
- megaAVR-0 と tinyAVR-0/1/2 系統。(Atmelブランド世代)
- MultiX Zinnia Product SDK [modernAVR]
- AVR_DA/DB/DD/DU/EA/EB 系統。(Microchipブランド世代)
- MultiX Zinnia Product SDK [reduceAVR] <--
- 旧世代AVRのうち TPI方式に対応した系統。(Atmelブランド世代)
- ATtiny4/5/9/10
- ATtiny104 (試験的対応)
この分割は NVM書換プロトコルおよび/すなわちブートローダーの相互共有性による。
共通基盤の AVR-GCC/AVR-LIBC toolchain は既知の AVR 8bit 系全種に対応している。
- reduceAVR が対応するのは ATtiny4/5/9/10 のみ
Code | ATtiny4 | ATtiny5 | ATtiny9 | ATtiny10 | ATtiny20 | ATtiny40 | ATtiny102 | ATtiny104 |
---|---|---|---|---|---|---|---|---|
Pkg | SOT23-6 | SOT23-6 | SOT23-6 | SOT23-6 | SOIC14 | SOIC20 | SOIC8 | SOIC14 |
UDFN8 | UDFN8 | UDFN8 | UDFN8 | TSSOP14 | TSSOP20 | UDFN8 | ||
VQFN20 | VQFN20 | |||||||
Flash | 512B | 512B | 1024B | 1024B | 1024B | 2048B | 1024B | 1024B |
SRAM | 32B | 32B | 32B | 32B | 128B | 256B | 32B | 32B |
CLK | 8M/12M | 8M/12M | 8M/12M | 8M/12M | 8M/12M | 8M/12M | 8M/12M | 8M/12M |
PCINT | 3(4) | 3(4) | 3(4) | 3(4) | 11(12) | 17(18) | 5(6) | 11(12) |
INT | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
TIM/TC | 1 | 1 | 1 | 1 | 2 | 2 | 1 | 1 |
PWM | 2 | 2 | 2 | 2 | 2 | 2 | 2 | 2 |
ADC | - | 3(4) | - | 3(4) | 8 | 8 | 5 | 8 |
AC | 1+1 | 1+1 | 1+1 | 1+1 | 1+1 | 1+1 | 1+1 | 1+1 |
WDT | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
USART | - | - | - | - | - | - | 1 | 1 |
SPI | - | - | - | - | 1 | 1 | 1 | 1 |
TWI | - | - | - | - | 1 | 1 | 1 | 1 |
ICSP | TPI | TPI | TPI | TPI | TPI | TPI | TPI | TPI |
TPI
書込 Vcc=4.5V〜5.5VCLKI
入力定格最大12MHz
(Vcc=4.5V)- 内蔵発振器定格
8MHz
(Vcc=4.5V)または4MHz
(Vcc=1.8V)
- Windows (32bit/64bit)
- macOS (64bit)
- Linux (主にintel系64bit)
- TPI4AVR -- このSDKでの既定書込装置。
- HV書込 に対応。(要外部回路)
- PICkit4 -- 公式のプログラム書込装置兼
デバッグトレース装置。- 使用開始前に MPLAB X によるFWアップデートが要求される。購入状態での対応範囲不明。
- フルスペックの公式開発環境が別途必須なのでエンドユーザーのPC環境によっては難がある。
Arduino IDEの動作スペックより数倍大きなディスク空容量やハードウェア性能とIDE操作習熟が必要。 - reduceAVR系MCUはデバッグトレース不可能。(マシン語レベルで BREAK命令非実装)
- Xplained Nano ATtiny104
- dryrun -- 実際には何もしないダミーの書込器。
- 各種設定の論理的妥当性を検証するのに使用する。
- Arduino IDE の「環境設定」「追加のボードマネージャーのURL」に以下のリンクを追加
- 「ボードマネージャー」ダイアログパネルを開き、検索欄に "multix" と入力
- 目的のアーキテクチャを選択して「インストール」
reduceAVR
- 上記リンクは更新がある程度まとまってから差し替えられるため、公開リポジトリより古い場合がある。 なる早で Arduino IDE に更新を取り込みたい場合は、下記リンクを使用されたい。
SDK種別と対象ブートローダー使用の有無をここで選ぶ。
- MultiX Zinnia Product SDK [megaAVR]
- MultiX Zinnia Product SDK [modernAVR]
- MultiX Zinnia Product SDK [reduceAVR] <--
- ATtiny4/5/9/10
- ATtiny104 (試験的対応)
- ATtiny102 は非対応 (2024/05時点)
Arduino IDE でこのSDKを選択すると、 サブメニューでは以下のオプションが選択可能となる;
FUSE設定の変更は 書換器使用時に反映。ブートローダー書込時は変更不能。
- Variant -- 具体的な製品型番を選択。(必須)
- 外囲器ピン数+型番+フラッシュメモリ量+SRAM量別になっている。
- Clock -- 主装置動作基準周波数選択(F_CPUマクロ初期値) -- 既定値は定格内最高速度
- F_CPUマクロを参照しないプログラムでは効果なし
- FUSE無関係に常時どれでも変更可能
- 内蔵発振器による 8MHz〜1MHz
- WDT用副発振器による 125kHz〜500Hz
- FUSE RSTCFG -- リセットピン用途変更(FUSE設定)
- 原則、既定値からの変更禁止(復元にはHV対応書換器が必須)
- Build Option -- DEBUGマクロ有無(任意選択)
- Build Release -- 既定値(NDEBUG設定)
- Build DEBUG=1
- Build DEBUG=2
- Build API -- API拡張(任意選択)
- Macro API Enable -- 既定値
- Macro API Disable -- 無効
- Arduino互換APIの導入は要外部支援(本SDKサポート外)
- Standard Library All Disable
- フルアセンブラ記述/純粋C言語環境(LIBC無効)
- LED_BUILTIN Select -- 既定LED選択
- PIN_PB1 -- (ATtiny4/5/9/10) TPI4AVRの TCLK 信号端子インジケータ(既定)
- PIN_PB2 -- (ATtiny4/5/9/10) TPI書込時の未使用端子(兼INT0割込端子)
- PIN_PA5 -- (ATtiny104) Xplained Nano のオンボードLED
- シリアルポート選択
- 環境依存
- 書込装置選択
- TPI4AVR over UART (Standard)
- TPI4AVR over UART (HV Recomended) -- HV書込対応
- PICkit4
- Xplained Mini/Nano (mEDBG: ATmega32u4) -- XNano ATtiny104対応
- USBasp
- AVRISP mkII
FUSE RSTCFG
->Pxx pin=Reset
選択以外に書換えた場合の復元は HV対応書込器が必須。
Build API{} ->
Standard Library All Disable`選択は、一切の既定コンパイル前提を除去する。 AVRrc では単純な加減算以外はC/C++言語で計算不能になることに注意。
(ATtiny4/5/9/10) 既定値ではPIN_PB1
となっている。
これはこの端子がTPI
書込時のTCLK
信号であり、書込器のインジケータLEDをユーザー制御で利用可能なことを期待している。
そうでない書込器の場合は、ボードメニューのLED_BUILTIN Select
を操作することでPIN_PB2
に変更できる。
(ATtiny104専用) LED_BUILTIN
の既定値はPIN_PA5
である。
またSW_BUILTIN
の既定値はPIN_PB1
である。
FUSE PA2 pin=Reset
の変更は、別途 HV対応書込器 がなければ復元不可能のため、推奨されない。
ATtiny102/104はUSART0
周辺機能を有するが、一般的な標準入出力ライブラリを組み込む余地がないため、SDKとしての APIは用意されていない。
FUSEも同時に更新される。 Arduino IDE のシリアルコンソールを閉じる必要はない。
以下のサブメニュー設定が必須;
- シリアルポート選択(over UART 書込器の場合)
- 書込装置選択
- すべてのFUSE関連
reduceAVR系統では任意の Clock 選択が有効となる。
(書込み可能な場合の)スケッチフォルダに、 スケッチがビルドされた HEX ファイル、 ブートローダーも一体に結合された HEX ファイル、 逆アセンブルコードリスト、 EEPROM 初期化用 HEX ファイル が出力される。
スケッチがビルドエラーになる場合は何も出力されない。
reduceAVR系統は ブートローダーが支援されない。
-
0.3.0 (24/11/06)
- AVRDUDEを
8.0-arduino.1
に更新。 - toolchainを
7.3.0-avr8-gnu-toolchain-241029
に更新。
- AVRDUDEを
-
0.2.14 (24/06/17)
- 各ファイルの MITライセンスリンク対応
-
0.2.13 (24/05/12)
7.3.0-avr8-gnu-toolchain-240510
に更新。- Xplained Nano ATTiny104 に試験的対応。
-
0.2.10 (23/12/20)
7.3.0-avr8-gnu-toolchain-231214
に更新。
-
0.2.9 (23/12/11)
<api/btools.h>
にcrc16_ccitt_false
関数を追加。
-
0.2.8 (23/11/24)
7.3.0-avr8-gnu-toolchain-231113
に更新。
-
0.2.7 (23/10/18)
dryrun
を書込器選択に追加。avrdude.conf
参照ルールの変更。arduino
/UPDI4VAR
/TPI4AVR
/dryrun
を書込器に指定した場合のみ、ローカルの特別な設定ファイルを参照する。それ以外は規定の(tools/avrdude/etc内の)avrdude.conf
を参照する。- この変更により、AVR_EA系統のようにまだ他の書込器で未対応/未検証のパーツ設定が分離された。
-
0.2.6 (23/10/16)
7.2-arduino.1
に更新。7.3.0-avr8-gnu-toolchain-231004
に更新。
-
0.2.4 (23/09/09)
7.3.0-avr8-gnu-toolchain-230831
に更新。
-
0.2.3 (23/07/09)
7.3.0-avr8-gnu-toolchain-230628
に更新。
-
0.2.2 (23/05/23)
7.1-arduino.1
に更新。
-
0.2.1 (23/05/08)
7.3.0-avr8-gnu-toolchain-230418
に更新。
-
0.2.0 (23/04/08)
modernAVR
でAVR_EA
対応。これに伴うMicroAPI
の修正反映。
各構成要素はそれぞれ異なる配布ライセンスに属する。条件はそれぞれの規約に従う。
- BSD License
- avr-libc
- GNU General Public License v2.0
- avr-gcc
- avrdude
- MIT License
- other original document and code
Twitter: @askn37
BlueSky Social: @multix.jp
GitHub: https://github.com/askn37/
Product: https://askn37.github.io/
Copyright (c) askn (K.Sato) multix.jp
Released under the MIT license
https://opensource.org/licenses/mit-license.php
https://www.oshwa.org/