番外 続Arduinoからタイニーブートローダーを使用する
前ページ「番外 Arduinoからタイニーブートローダーを使用する」では利便性を追求したため、
ブートロ−ダー領域として168バイト(ATtiny13A flash領域の16%)を使用する結果となりました。
Arduinoを使用する上で、フラッシュメモリーの少ないATtiny13Aでは、この数値は致命的かも知れません。
(まぁ、ブートローダーを使わなければいいだけの話かも知れませんが...)
2014.05.30 追記 -----------------------------------------------------------------
ブートローダーのファームウエアを更新しました。
新しいファームウエアではEEPROMの書き込みも行えます。
ファームウエアの使用にあたってソフトシリアルインターフェースのディレイ定数を求める必要があります。
「番外 続ATTINY13A OSCCAL の 簡易校正」のページをご参照ください。
シリアルIAPの概要は以下のとうりです。1文字入出力はr25=0で戻りますのでデータをint型でもやりとりできます。
新しいファームウエアではr23もワークとして使用します。

スケッチのサイズが大きくブートローダーを使用できない場合でもシリアルIAP(25ワード/50バイト)のみをデータとして
書き込んで使用することができます。

2014.04.27 追記 -------- (2014.05.30) 以下の追記の内容は変更されました。
本ページで使用したブートローダーファームウエアを別館にアップロードしました。
注意.このファームウエアではEEPROMの書き込みが出来ません。
シリアルIAPの概要は以下のとうりです。1文字入出力はr25=0で戻りますのでデータをint型でもやりとりできます。

スケッチのサイズが大きくブートローダーを使用できない場合でもシリアルIAP(29ワード/58バイト)のみをデータとして
書き込んで使用することができます。

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
そこで、以下の観点からブートローダーの利便性を生かせる開発環境を検討しました。
?ATtiny13Aの動作をマイクロコアに委ねる
ネットで検索するとATTINY用のマイクロコアの開発はいろいろな方により行われているようです。
例えば、
ATTinyCore-master.zip
https://github.com/TCWORLD/ATTinyCore/tree/master/PCREL%20Patch%20for%20GCC
core13_18_5.zip
http://sourceforge.jp/projects/sfnet_ard-core13/releases/
attiny13.zip
http://www.instructables.com/id/Installing-Attiny13-core-files/?lang=ja
http://dl.dropbox.com/u/52513692/attiny13.zip
arduino-tiny-0150-0020.zip
http://code.google.com/p/arduino-tiny/
hardware.zip
http://make.kosakalab.com/make/electronic-work/arduino-ide-arduinoisp/
bitDuino.zip
http://100year.cocolog-nifty.com/blog/
これらの出力するコードを比較したところbitDuinoの出力するコードが最小でしたのでこれを使用しました。
?ブートローダーのシリアル送受信をIAP化する。
bitDuinoの作者であるまりす様は上記ページでbitDuino専用のソフトウェアシリアルライブラリも公開されています。
今回はこのシリアルライブラリをIAPが使用できるように勝手に改造して、使用させていただきました。
※ソフトシリアルに使用するピン、ボーレートはブートローダーファームウエアの設定のまま変更できません。
まりす様、非常にすばらしいものをどうもありがとうございました。
ブートローダーは前ページのものに比べて、送信、受信機能をIAP化するため、EEPROM書き込みの機能を削って
サイズを84ワードに合わせています。
[IAP使用例] SAH:SALは1バイト送信IAPのアドレス、IAP内でr24(送受信バッファー),r25(ワーク変数)を使用。
(2014.05.30 ファームウエア更新に伴い以下の赤文字部を追加)
void bitSerial::print(uint8_t b)
{
asm volatile (
"push r30 \n\t"
"push r31 \n\t"
"push r23 \n\t"
"push r24 \n\t"
"push r25 \n\t"
"mov r24,%0 \n\t"
"ldi r31,%1 \n\t"
"ldi r30,%2 \n\t"
"ICALL \n\t"
"pop r25 \n\t"
"pop r24 \n\t"
"pop r23 \n\t"
"pop r31 \n\t"
"pop r30 \n\t"
:: "r"(b),"M"(SAH),"M"(SAL));
}
以下はコンパイル結果です。
◎LEDブリンク (前ページと同じスケッチ)

◎LEDブリンク2 (pinMode,digitalWriteを使用しない記述)

◎シリアルエコー
以降bitSerial は bSerial として内部で定義されています。(HardwareSerial と Serial の関係)
begin()関数は使用しません。

◎"test"+改行を連続表示


◎ASCII テーブル表示


ブートローダーファームウエアソース一式のダウンロード先
http://hp.vector.co.jp/authors/VA058115/
https://drive.google.com/file/d/1DJ237aoN9vGjPLd_gKPD5n0Ql89jt7kR/view?usp=drivesdk
.
ブートロ−ダー領域として168バイト(ATtiny13A flash領域の16%)を使用する結果となりました。
Arduinoを使用する上で、フラッシュメモリーの少ないATtiny13Aでは、この数値は致命的かも知れません。
(まぁ、ブートローダーを使わなければいいだけの話かも知れませんが...)
2014.05.30 追記 -----------------------------------------------------------------
ブートローダーのファームウエアを更新しました。
新しいファームウエアではEEPROMの書き込みも行えます。
ファームウエアの使用にあたってソフトシリアルインターフェースのディレイ定数を求める必要があります。
「番外 続ATTINY13A OSCCAL の 簡易校正」のページをご参照ください。
シリアルIAPの概要は以下のとうりです。1文字入出力はr25=0で戻りますのでデータをint型でもやりとりできます。
新しいファームウエアではr23もワークとして使用します。

スケッチのサイズが大きくブートローダーを使用できない場合でもシリアルIAP(25ワード/50バイト)のみをデータとして
書き込んで使用することができます。

2014.04.27 追記 -------- (2014.05.30) 以下の追記の内容は変更されました。
本ページで使用したブートローダーファームウエアを別館にアップロードしました。
注意.このファームウエアではEEPROMの書き込みが出来ません。
シリアルIAPの概要は以下のとうりです。1文字入出力はr25=0で戻りますのでデータをint型でもやりとりできます。

スケッチのサイズが大きくブートローダーを使用できない場合でもシリアルIAP(29ワード/58バイト)のみをデータとして
書き込んで使用することができます。

-------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------
そこで、以下の観点からブートローダーの利便性を生かせる開発環境を検討しました。
?ATtiny13Aの動作をマイクロコアに委ねる
ネットで検索するとATTINY用のマイクロコアの開発はいろいろな方により行われているようです。
例えば、
ATTinyCore-master.zip
https://github.com/TCWORLD/ATTinyCore/tree/master/PCREL%20Patch%20for%20GCC
core13_18_5.zip
http://sourceforge.jp/projects/sfnet_ard-core13/releases/
attiny13.zip
http://www.instructables.com/id/Installing-Attiny13-core-files/?lang=ja
http://dl.dropbox.com/u/52513692/attiny13.zip
arduino-tiny-0150-0020.zip
http://code.google.com/p/arduino-tiny/
hardware.zip
http://make.kosakalab.com/make/electronic-work/arduino-ide-arduinoisp/
bitDuino.zip
http://100year.cocolog-nifty.com/blog/
これらの出力するコードを比較したところbitDuinoの出力するコードが最小でしたのでこれを使用しました。
?ブートローダーのシリアル送受信をIAP化する。
bitDuinoの作者であるまりす様は上記ページでbitDuino専用のソフトウェアシリアルライブラリも公開されています。
今回はこのシリアルライブラリをIAPが使用できるように勝手に改造して、使用させていただきました。
※ソフトシリアルに使用するピン、ボーレートはブートローダーファームウエアの設定のまま変更できません。
まりす様、非常にすばらしいものをどうもありがとうございました。
[IAP使用例] SAH:SALは1バイト送信IAPのアドレス、IAP内でr24(送受信バッファー),r25(ワーク変数)を使用。
(2014.05.30 ファームウエア更新に伴い以下の赤文字部を追加)
void bitSerial::print(uint8_t b)
{
asm volatile (
"push r30 \n\t"
"push r31 \n\t"
"push r23 \n\t"
"push r24 \n\t"
"push r25 \n\t"
"mov r24,%0 \n\t"
"ldi r31,%1 \n\t"
"ldi r30,%2 \n\t"
"ICALL \n\t"
"pop r25 \n\t"
"pop r24 \n\t"
"pop r23 \n\t"
"pop r31 \n\t"
"pop r30 \n\t"
:: "r"(b),"M"(SAH),"M"(SAL));
}
以下はコンパイル結果です。
◎LEDブリンク (前ページと同じスケッチ)

◎LEDブリンク2 (pinMode,digitalWriteを使用しない記述)

◎シリアルエコー
以降bitSerial は bSerial として内部で定義されています。(HardwareSerial と Serial の関係)
begin()関数は使用しません。

◎"test"+改行を連続表示


◎ASCII テーブル表示


ブートローダーファームウエアソース一式のダウンロード先
Bequest333のページ(別館)
https://drive.google.com/file/d/1DJ237aoN9vGjPLd_gKPD5n0Ql89jt7kR/view?usp=drivesdk
.
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT
- ご質問などはこちらからどうぞ
- ページ更新情報
- 最近嬉しかったこと
- 1kワードのTINYBASIC STM32L010F4
- やってくれたな!!店長よ
- 東大版TINYBASIC (STM32)
- 1kワードのTINYBASIC STM32版 その2
- 1kワードのTINYBASIC STM32版 その1
- 1kワードのTINYBASIC その8
- 1kワードのTINYBASIC その7
- 1kワードのTINYBASIC その6
- 1kワードのTINYBASIC その5
- 1kワードのTINYBASIC その4
- 1kワードのTINYBASIC その3
- 1kワードのTINYBASIC その2
- 1kワードのTINYBASIC その1
- 電大版TINYBASIC for PIC ミニマムお試し版5
- 電大版TINYBASIC for PIC ミニマムお試し版4
- 電大版TINYBASIC for PIC ミニマムお試し版3
- 電大版TINYBASIC for PIC ミニマムお試し版2
- 電大版TINYBASIC for PIC ミニマムお試し版
- PICで電大版TINYBASIC 実装編その5
- PICで電大版TINYBASIC 実装編その4
- PICで電大版TINYBASIC 実装編その3
- PICで電大版TINYBASIC 実装編その2
- PICで電大版TINYBASIC 実装編その1
- PICで電大版TINYBASIC 準備編その2
- PICで電大版TINYBASIC 準備編その1
- PIC18F24K42をPICKIT2で焼くTIPS その2
- PIC18F24K42をPICKIT2で焼くTIPS
- PIC16F18313ブートローダー書き込み器の製作
- PIC16F18857をPICKIT2で焼くその2
- PIC16F18857をPICKIT2で焼く
- PIC16F18313をPICKIT2で焼くその2
- PIC16F18313をPICKIT2で焼く
- PIC16F5XX USBIO
- HVT-BT200の予約制御
- 再考 PIC16F57 USBIO
- PIC16F5X USBIO
- 続12 8ピンPICでUSB PIC16F18313 HID-シリアルアダプター
- ucontrol.com.arに接続できない
- 続続 LPC1114 USBブートローダー
- 続PIC10F200 電子サイコロ
- PIC10F200 電子サイコロ
- LPC1114 8ch簡易ロジックアナライザー USB版
- 続 LPC1114 USBブートローダー
- LPC1114 8ch簡易ロジックアナライザー
- LPC1114 USBブートローダー
- LPC1114でUSB
- 続LPC810でUSB
- LPC810でUSB
- USB_NCO
- USB出力の周波数カウンター
- HIDアダプターについてのまとめ その2
- HIDアダプターについてのまとめ
- 極小ブートローダー まとめ
- 極小ブートローダー ATTiny 其の2
- 極小ブートローダー PIC10F322 其の6
- 極小ブートローダー PIC10F322 其の5
- 極小ブートローダー PIC10F322 其の4
- 極小ブートローダー PIC10F322 其の3
- 極小ブートローダー ATTiny13A
- 極小ブートローダー PIC10F322 其の2
- 極小ブートローダー PIC10F322
- 続11 8ピンPICでUSB PIC16F57_USBIO (その3)
- 続10 8ピンPICでUSB PIC16F505_USBIO (その2)
- 続9 8ピンPICでUSB PIC16F57_USBIO (その2)
- 続8 8ピンPICでUSB PIC16F505_USBIO
- 続7 8ピンPICでUSB PIC16F57_USBIO
- 続6 8ピンPICでUSB PIC16F570_USBIO
- 続5 8ピンPICでUSB PIC12F615_USBIO
- 続4 8ピンPICでUSB 16FUSBの改良版
- 続続続8ピンPICでUSB -30MHz+ソフトシリアル-
- 続続8ピンPICでUSB -16FUSBを30MHzで動かす-
- 続8ピンPICでUSB -ターミナルソフトからの操作-
- 8ピンPICでUSB -16FUSBの移植-
- 番外 MSP430 タイニーブートローダー
- 番外 C8051 タイニーブートローダー
- 続続続 Tiny AVR/PIC Bootloader+
- 続続 Tiny AVR/PIC Bootloader+
- 続 Tiny AVR/PIC Bootloader+
- Tiny AVR/PIC Bootloader+
- 番外 続ATTINY13A OSCCAL の簡易校正
- 番外 ATTINY13A OSCCAL の簡易校正
- 番外 続ATTINY13A ソフトシリアル
- 番外 ATTINY13A ソフトシリアル
- 番外 続Arduinoからタイニーブートローダーを使用する
- 番外 Arduinoからタイニーブートローダーを使用する
- 番外 LPC1114FN28/102 アセンブラサンプル
- 番外 LPC810 タイニーブートローダーの自己書き換え
- 番外 LPC810 EEPROM エミュレーション
- 番外 LPC810 タイニーブートローダー
- 番外 LPC810でアセンブラ
- 続続続PIC10F322 ソフトシリアル一考察
- 続続PIC10F322 ソフトシリアル一考察
- 続PIC10F322 ソフトシリアル一考察
- PIC10F322 ソフトシリアル一考察
- 84ワードのPICブートローダー
- 続PIC10F322 Ring-DDS
- Tinybldの自己更新プログラム
- プログラム領域をROMのように使う
- PIC10F322 256ビットプログラム発振器
- PIC18F EEPROM エミュレーション Jタイプ
- PIC18F EEPROM エミュレーション
- PIC16F EEPROM エミュレーション
- PIC10F322専用 周波数カウンター
- PIC18F Jタイプ ブートローダー
- PICの制約を取り除く
- 番外 ATTINY2313A用ブートローダー
- 続番外 ATTINY13A用ブートローダー
- 番外 ATTINY13A用ブートローダー
- 続PIC10F322 フラッシュメモリの操作
- PIC10F322 フラッシュメモリの操作
- PIC10F322 PIC_WAIT
- ビット列の並び替え その2
- ビット列の並び替え その1
- 故障した温水便座を使えるようにする
- PIC10F322 RA3を出力ポートとして使用
- PIC10F322 周波数カウンタ Part2
- PIC10F322 AN592準拠 周波数カウンタ
- PIC10F322 Ring-DDS
- microchipのAN592に関する一考察
- PIC10F322 3-ch リモコンライン切り替え器
- PIC10F322 4-SW リモコン送信器
- PIC10F322 二相発振器
- PIC_DELAY
- 続PIC_WAIT
- PIC_WAIT