Skip to content

InformationSDK

askn37 edited this page May 27, 2024 · 47 revisions

MultiX Zinnia Product SDK [*AVR] for Arduino IDE

このソフトウェア開発キットは、主に新世代のAVRファミリ (Microchipブランド統合以降で発表されたもの) について、Arduino IDEでの開発を支援するために構成されている。 AVR-GCC/AVR-LIBC を用いて書かれた C/C++/アセンブラ プログラムを avrdude を用いて対象MCUにアップロードするまでの作業フローを提供する。

警告: Arduino互換APIは提供されない。

[MultiX Zinnia Product : WiKi]へ移動

導入方法

  • Arduino IDE の「環境設定」「追加のボードマネージャーのURL」に以下のリンクを追加
  • 「ボードマネージャー」ダイアログパネルを開き、検索欄に "multix" と入力
  • 目的のアーキテクチャを選択して「インストール」
    megaAVR / modernAVR / reduceAVR

Developer Preview

mainリポジトリがそのまま主開発ブランチで、ある程度の区切り毎にX.Y.Zブランチが記録されるスタイル。
現在活性化中なのは 0.2.n(AVR EA/EB系統対応、DU系統暫定対応)

  • avrdudeAVR-GCC/LIBCは複数のSDK(アーキテクチャ別) で共有するため更新競合状態になることがある。 競合中のSDKは更新ボタンを押すとそれが残りただ1つになるまで無効化(自動削除)されるので、 その後で改めて無効になったSDKを選んで再インストールする必要がある。

対応するホストOS

  • Windows (32bit/64bit)
  • macOS (64bit)
  • Linux (主にintel系64bit)

対応AVRアーキテクチャ

現在この SDK は複数の異なる対象アーキテクチャ向けにリポジトリを分けて提供される。
ボードメニュー/サブメニュー以下の選択はそれぞれを参照のこと。

  • MultiX Zinnia Product SDK [megaAVR] ->HERE
    • megaAVR-0 と tinyAVR-0/1/2 系統。(Atmelブランド世代)
  • MultiX Zinnia Product SDK [modernAVR] ->HERE
    • AVR DA/DB/DD/EA 系統。(Microchipブランド世代)
  • MultiX Zinnia Product SDK [reduceAVR] ->HERE
    • 旧世代AVRのうち TPI方式に対応した系統。(Atmelブランド世代)
  • MultiX Zinnia UPDI4AVR Firmware Builder ->HERE
    • UPDI4AVR Firmware をサポートする [megaAVR] のサブセット。

共通基盤の AVR-GCC/AVR-LIBC toolchain は既知の AVR 8bit 系全種に対応している。
makeコマンドを別途用意すれば大抵の事はできるはず。(Windowsでも)

対象AVR

[megaAVR] tinyAVR-0/1/2

系統 pin 2KiB 4KiB 8KiB 16KiB 32KiB
tinyAVR-0
8 ATtiny202 ATtiny402
14 ATtiny204 ATtiny404 ATtiny804 ATtiny1604
20 ATtiny406 ATtiny806 ATtiny1606
24 ATtiny807 ATtiny1607
tinyAVR-1
8 ATtiny212 ATtiny412
14 ATtiny214 ATtiny414 ATtiny814 ATtiny1614
20 ATtiny416 ATtiny816 ATtiny1616 ATtiny3216
24 ATtiny417 ATtiny817 ATtiny1617 ATtiny3217
tinyAVR-2
14 ATtiny424 ATtiny824 ATtiny1624 ATtiny3224
20 ATtiny426 ATtiny826 ATtiny1626 ATtiny3226
24 ATtiny427 ATtiny827 ATtiny1627 ATtiny3227
  • Xplained mini ATtiny416 : w/o bootloader
  • Curiosity Nano ATtiny1627 : w/o bootloader

太字 は実物確認済

[megaAVR] megaAVR-0

系統 pin 8KiB 16KiB 32KiB 48KiB
megaAVR-0
28 ATmega808 ATmega1608 ATmega3208 ATmega4808
32 ATmega808 ATmega1608 ATmega3208 ATmega4808
40 ATmega4809
48 ATmega809 ATmega1609 ATmega3209 ATmega4809
  • Arduino UNO WiFi Rev.2 : w/o bootloader
  • Arduino Nano Every : w/o bootloader

太字 は実物確認済

[modernAVR] AVR DA/DB/DD/DU/EA/EB

系統 pin 8KiB 16KiB 32KiB 64KiB 128KiB
AVR_DA
28 AVR32DA28 AVR64DA28 AVR128DA28
32 AVR32DA32 AVR64DA32 AVR128DA32
48 AVR32DA48 AVR64DA48 AVR128DA48
64 AVR64DA64 AVR128DA64
AVR_DB
28 AVR32DB28 AVR64DB28 AVR128DB28
32 AVR32DB32 AVR64DB32 AVR128DB32
48 AVR32DB48 AVR64DB48 AVR128DB48
64 AVR64DB64 AVR128DB64
AVR_DD
14 AVR16DD14 AVR32DD14 AVR64DD14
20 AVR16DD20 AVR32DD20 AVR64DD20
28 AVR16DD28 AVR32DD28 AVR64DD28
32 AVR16DD32 AVR32DD32 AVR64DD32
AVR_DU
14 AVR16DU14 AVR32DU14
20 AVR16DU20 AVR32DU20
28 AVR16DU28 AVR32DU28 AVR64DU28
32 AVR16DU32 AVR32DU32 AVR64DU32
AVR_EA
28 AVR16EA28 AVR32EA28 AVR64EA28
32 AVR16EA32 AVR32EA32 AVR64EA32
48 AVR16EA48 AVR32EA48 AVR64EA48
AVR_EB
14 AVR16EB14 AVR32EB14
20 AVR16EB20 AVR32EB20
28 AVR16EB28 AVR32EB28
32 AVR16EB32 AVR32EB32
  • Curiosity Nano AVR128DB48 : w/o bootloader
  • Curiosity Nano AVR64EA48 : w/o bootloader

太字 は実物確認済
斜体 は今後対応予定

[reduceAVR]

  • ATtiny4 ATtiny5 ATtiny9 ATtiny10

  • ATtiny20 ATtiny40

  • ATtiny102 ATtiny104 (試験的対応)

  • Xplained Nano ATtiny104 (試験的対応)

太字 は実物確認済
斜体 は現在未対応(Variant選択なし)

toolchain の配布元について

package_multix_zinnia_index.jsonを使用して SDK をセットアップすると、以下のツールチェインも自動的に取得・インストールされる。

インストールされる版はその時点での最新版であるが、Arduino IDE ボードマネージャーでのバージョン更新は以後行われず、その時点の版で固定される。 意識的に最新版へ更新するには、これらを使用する該当 SDK を一旦全てアンインストール/全て更新しなければならない。

AVR-GCC + AVR-LIBC

AVR-GCC 本体と AVR-LIBC ライブラリは、Microchip社の一次配布元から提供されたものを使用する。 これに Microchip社提供のデバイスサポートファイル(AT Pack)の一部を統合して、二次配布元から提供される。 配布ライセンスは GPL 2.0 である。

0.2.13以降

0.2.10以降

AVRDUDE

AVRDUDE 実行バイナリは、Arduino社を一次配布元として提供される。 静的リンク化等の Arduino IDE用修正がされており、オリジナルとは必ずしも一致しない。 配布ライセンスは GPL 2.0 である。

リリース元 https://github.com/arduino/avrdude-packing/releases

0.2.6以降

24/05/10 時点では依然として 7.3 には対応していないため、AVR-DU/EA/EB 系統を SerialUPDI で扱うことはできない。

関連プロジェクト

これらはこの SDKから派生、あるいは一部を構成している。

更新履歴

  • 0.2.13 (24/05/12)

    • 7.3.0-avr8-gnu-toolchain-240510に更新。
      • (modernAVR) AVR16DU14/20/28/32AVR32DU14/20/28/32 対応を追加。
      • (reduceAVR) Xplained Nano ATtiny104 に試験的対応。
  • 0.2.12 (24/04/29)

    • 動作確認済に AVR64DU28 を追加。
    • boot_ax/dx/exを 3.72 に更新。
  • 0.2.11 (24/04/13)

    • megaAVR : tinyAVR-0/1 の <peripheral.h> 定義ミスを修正、
    • modernAVR : platform.txt のタイプミス修正。
      • 動作確認済に AVR128DB28AVR64DB28 を追加。
  • 0.2.10 (23/01/16)

    • 7.3.0-avr8-gnu-toolchain-231214に更新。
      • AVR64DU28/32 に暫定対応。
      • 動作確認済に AVR64EA32AVR64EA48AVR16EB32ATtiny1627, ATtiny416 を追加。
    • Core Modules<api/UarfUART.h>を微修正。AVR_EVSYS=201修正。
    • Core Libraries の修正/追加と応用記述の追加。
      • <ReadUART.h>
      • <UrowNVM.h>
      • <FlashNVM.h>(BOOTROW 対応を追加)
    • Bootloader を FWV=3.71 に更新。
  • 0.2.9 (23/12/11)

    • megaVAR/modernAVRについて、同梱ブートローダー全体を独自のArduino上位互換動作コードに変更。(Optiboot由来ソースコードを除去)
    • 同、CRCSCAN機能用CRC16/32検査値付与。
    • <api/btools.h>crc16_ccitt_false関数を追加。
  • 0.2.8 (23/11/24)

    • 7.3.0-avr8-gnu-toolchain-231113に更新。
    • UPDI4AVR Firmware をUPDI4AVR_FW634Bに変更。
      • AVRDUDE 7.3仕様に準拠。
      • HV制御は添付のavrdude.conf.UPDI4AVRを使用した場合に有効。
    • UPDI4AVR Software をUPDI4AVR_FW606Aに変更。
      • FW634Bからのバックポートにより、HV制御以外の機能性は概ね互換。
  • 0.2.7 (23/10/18)

    • AVR16EBxx に実験的対応
      • bootloader の正常動作は未確認
    • 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に更新。
      • Atmel.ATautomotive_DFP.2.0.214.atpack (2022-03-03)追加。ATtiny416auto対応。
      • Atmel.AVR-Ex_DFP.2.7.184 (2023-10-02)対応。
  • 0.2.5 (23/10/09)

    • AVR_EB系統の対応準備
    • avrdude.conf.updi 記述を avrdude 7.1 準拠に改正
  • 0.2.4 (23/09/09)

    • 7.3.0-avr8-gnu-toolchain-230831に更新。
      • Atmel.ATmega_DFP.2.1.506 (2023-08-14)対応。
      • Atmel.AVR-Ex_DFP.2.6.181 (2023-08-24)対応。
    • programmers.txtを改正。
      • SerialUPDI-xrtsdtr=Highオプションを有効化。
  • 0.2.3 (23/07/09)

    • 7.3.0-avr8-gnu-toolchain-230628に更新。
      • Atmel.AVR-Ex_DFP.2.5.176 (2023-06-26)対応。
      • <avr/eeprom.h>AVR_EAでも正常動作するよう改善。
    • AVR16EBxx 対応ヘッダが追加されたが、バリアントはまだサポートされていない。
  • 0.2.2 (23/05/23)

    • 7.1-arduino.1に更新。
  • 0.2.1 (23/05/08)

    • 7.3.0-avr8-gnu-toolchain-230418に更新。
      • Atmel.AVR-Ex_DFP.2.4.168 (2023-04-18)対応。
      • 注意 : この版では未だ<avr/eeprom.h>AVR_EAでは正常動作しない。
    • AVR16EAxxAVR32EAxx をバリアント選択に追加。
  • 0.2.0 (23/04/08)

    • modernAVRAVR_EA対応。
      • 現時点のAVR-LIBCでビルド可能な AVR64EA28/32/48 をバリアント選択に追加。
      • AVR64EA32 を動作検証済表に追加。
      • 専用ブートローダーoptiboot_ex1を追加。
      • <api/FlashNVM.h>AVR_EA対応を追加。
      • 注意 : 現時点のAVR-LIBCでは<avr/eeprom.h>AVR_EAで正常動作しない。
  • 0.1.4 (23/04/01)

    • 7.3.0-avr8-gnu-toolchain-230322に更新。
      • Atmel.AVR-Ex_DFP.2.3.163 (2023-03-22)対応。
    • avrdude.conf.updiを改正。
      • UPDI4AVRの既定速度を9216000bpsに変更。(多くのUSB-USART変換で扱える最大の安全速度)
      • AVR_DA/DB_DDEEPROM page-sizeを16に訂正。
  • 0.1.3 (23/03/15)

    • avrdude.conf.updiを改正。
      • modernAVR/megaAVRを共通化。
      • 書込器使用時のEEPROM書込異常対応。(page-sizeを8に統一)
      • fuses/lockのファイル指定書込異常対応。(page-sizeを1に統一)
    • programmers.txtを改正。
      • SerialUPDIの非公式な選択肢を削除。
  • 0.1.2 (23/02/25)

    • TaskChangerの暗黙的yieldグローバルフック書換を廃止。
    • nopwdt_resetマクロを追加。
    • 動作確認済品種にATtiny1626を追加。
    • megaAVRボードマネージャの一部の不確実なSerialマクロを修正。

関連リンク

許諾

各構成要素はそれぞれ異なる配布ライセンスに属する。条件はそれぞれの規約に従う。

  • BSD License
    • avr-libc
  • GNU General Public License v2.0
    • avr-gcc
    • avrdude
  • MIT License
    • other original document and code