Skip to content

askn37/multix-zinnia-sdk-reduceAVR

Repository files navigation

MultiX Zinnia Product SDK [reduceAVR]

このソフトウェア開発キットは、 主に 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も大量ダウンロードすることはない。
    • セミナー講習等での一斉大量導入に向く。

対応AVRアーキテクチャ

現在この 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 系全種に対応している。

AVRrc 一覧

  • 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.5V
  • CLKI入力定格最大12MHz(Vcc=4.5V)
  • 内蔵発振器定格8MHz(Vcc=4.5V)または4MHz(Vcc=1.8V)

対応するホストOS

  • 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

Developer Preview

ボード選択メニュー

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++言語で計算不能になることに注意。

プログラム書込

LED_BUILTIN

(ATtiny4/5/9/10) 既定値ではPIN_PB1となっている。 これはこの端子がTPI書込時のTCLK信号であり、書込器のインジケータLEDをユーザー制御で利用可能なことを期待している。 そうでない書込器の場合は、ボードメニューのLED_BUILTIN Selectを操作することでPIN_PB2に変更できる。

Xplained Nano ATtiny104

(ATtiny104専用) LED_BUILTINの既定値はPIN_PA5である。 またSW_BUILTINの既定値はPIN_PB1である。 FUSE PA2 pin=Resetの変更は、別途 HV対応書込器 がなければ復元不可能のため、推奨されない。

ATtiny102/104はUSART0周辺機能を有するが、一般的な標準入出力ライブラリを組み込む余地がないため、SDKとしての APIは用意されていない。

書込器でのスケッチ書込 Ctrl+U ⌘+U

FUSEも同時に更新される。 Arduino IDE のシリアルコンソールを閉じる必要はない。

以下のサブメニュー設定が必須;

  • シリアルポート選択(over UART 書込器の場合)
  • 書込装置選択
  • すべてのFUSE関連

reduceAVR系統では任意の Clock 選択が有効となる。

ビルド出力確認 Ctrl+Alt+S ⌘+Alt+S

(書込み可能な場合の)スケッチフォルダに、 スケッチがビルドされた HEX ファイル、 ブートローダーも一体に結合された HEX ファイル、 逆アセンブルコードリスト、 EEPROM 初期化用 HEX ファイル が出力される。

スケッチがビルドエラーになる場合は何も出力されない。

ブートローダー

reduceAVR系統は ブートローダーが支援されない。

更新履歴

  • 0.3.0 (24/11/06)

    • AVRDUDEを8.0-arduino.1に更新。
    • toolchainを7.3.0-avr8-gnu-toolchain-241029に更新。
  • 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)

    • modernAVRAVR_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/

About

AVR-GCC, AVR-LIBC and avrdude toolkit for Arduino IDE

Topics

Resources

License

Stars

Watchers

Forks

Languages