外部記憶装置 EEPROM



外部記憶装置 EEPROM(ROM カセット)

IchigoJam BASIC では IchigoJam BASIC 0.9.9 RC 以前は 0〜2 の 3 プログラム、

IchigoJam BASIC 1.0.0 beta より 0〜3 の 4 プログラムを保存できるようになっていますが、

より多くのプログラムを保存できる EEPROM に対応しています。IchigoJam BASIC 0.9.3 以降で対応しています。

ファミコンのカセットや MSX の ROM カセットみたいな物が自作できてしまいます。

最近は空の EEPROM 以外に IchigoJam BASIC のプログラムを含んだ EEPROM を販売するケースも増えてきました。

電子工作の経験がない人でも EEPROM モジュールを用いて容易に EEPROM を使用する事が可能です。

 

公式には 1M ビットに対応し、SAVE・LOAD・LRUN のプログラム番号は 100〜227 の 128 プログラムとなります。

(IchigoJam BASIC 0.9.9-RC10 より。それ以前は 100〜226。ただし 100 と 164 が共通しています)

 

IchigoJam BASIC RPi を使用する Raspberry Pi では

IchigoJam BASIC 1.2b16RPi 以降・IchigoJam BASIC 1.2.5RPi 以降で EEPROM へ使用できます。

IchigoJam BASIC と共通で使用可能です。

これより古いバージョンは 100~227 も SD カード保存になり、EEPROM は対応していません。

 

外部記憶装置とROMカセットに対応!こどもパソコンIchigoJam | 福野泰介の一日一創

 

EEPROM モジュール等を用いるケースが増えてきています。

SAVE・LOAD・LRUN・FILES は 100 以降を使用できます。


 

IchigoLatte も IchigoLatte 0.9 より EEPROM が使用できるようになっています。

1MB の場合で @0〜@63 です。
IchigoLatte のプログラムは 2KB(IchigoJam BASIC の倍)なので、収納数は半分になっています。

特に区別して記載していなければ、IchigoLatte でも使用可能です。


EEPROM モジュール

EEPROM モジュールは EEPROM を付けた、または EEPROM を容易に付けられる状態にした専用基板です。

GND・VCC・SCL(EX1)・SDA(IN3) の4端子を接続するだけで使用でき、抵抗を用意する必要もないので、
電子工作に慣れていない人にも利用しやすいメリットがあります。

 

種類が豊富でよく分からない場合は

運営者 ふうせん Fu-sen. が IchigoJam の動作確認を行っている EEPROM モジュールを

ショップのふうせんで扱っていますので、こちらを入手して下さい。

サンプルプログラム・解説書付で、安心してご利用いただけます。

IchigoJam・互換機の種類に関係なくご利用いただけます。

 

IchigoJam | ショップのふうせん

 

aitendo 発売 EEPROM キット

aitendo が IchigoJam 向けの EEPROM キット を数点発売しています。別途 EEPROM が必要です。

そのうち下の EEPROM キットは 1024k 限定です。他の EEPROM は正常に動作しません。(A2 が VCC に接続されているため)
 

EEPROMキット [K-Jam.rom] | aitendo

 

また、下の EEPROM キットは 512k 以下限定の可能性があります。(A2 が GND 接続されていると思われます)

 

EEPROMキット [K-RM4S] | aitendo


他の EEPROM キットは切り替え部があり、1024k・32k〜512k 共に使用できます。

その他

IchigoJam 向けに発売されている商品がいくつかでています。

 

IchigoJam U またはそれに合わせた規格にしている場合が多いです。IchigoJam T も使用可能なケースが多いです。

IchigoJam 初代プリント基板では CPU-ピンソケット間の幅が異なり、使用できない場合がありますのでご注意下さい。

 

後に IchigoJam T の CN5 端子に合わせた商品が発売されると予測されます。

こちらは IchigoJam U の CN5 端子には使用できません。(IchigoJam U の CN5 端子には EEPROM 関連は供給されていません)

 

海外から EEPROM やモジュールを直接入手する場合

EEPROM は場合によってデータが入っている物が販売されている場合がある事を確認しています。

実質的な中古品というだけではなく、多くアクセスが行われていて、特に書き込みの問題が発生する事があります。

 

EEPROM が付いたモジュールを入手する場合は容量にご注意下さい。容量の少ないモジュールは IchigoJam で使用できません。

一部半田付けの悪いモジュールがある事を確認しています。最悪動作させるために半田付けしなおさないといけない場合があります。


接続方法

次のように接続します。

EEPROM モジュール   IchigoJam・互換機など
SDA - SDA または IN3
SCL - SCL または EX1
VCC - VCC・+・3.3V・3V3・5V のいずれか
GND - GND

 

現在 IchigoJam では主に 2 種類の接続方法が存在します。

 

LPC1114 の左右ピンソケット(14 ピン)

IchigoJam の種類・互換機を問わず接続できる方法です。

左側の IN3、右側の EX1・SCL を接続します。

GND・VCC は左右どちらでも構いません。

5 ピンソケット(CN5 端子など)

IchigoJam T より追加、一部互換機も対応しています。
4 ピンをモジュールの記載に合わせて接続します。

IchigoJam U の CN5 端子はこの方法を使用できません。


 

現在は 5 ピンのピンソケットに対応した製品も出てきていますが、
PanCake を乗せた場合など、左右 14 ピンのピンソケットで接続を要するケースがあります。


IchigoDake・IchigoIgai

IchigoDake・IchigoIgai へ EEPROM モジュールを接続したい場合、

IchigoIgai の CN5 にある 5 ピンのピンソケットへ EEPROM モジュールを接続して使用できます。

この端子の並びは IchigoJam T、IchigoLatte プリント基板の CN5 と共通です。

 


 

IchigoDake の左右 14 ピン×2 は LPC1114 の端子がそのまま出ています。並びは IchigoJam 共通です。

ここから接続する事も可能です。


IchigoJam EX

クガデン 発売の IchigoJam EX では、基板に EEPROM を取り付ける場所があります。

EEPROM を直接付けて半田付けしても良いのですが、IC ソケットを取り付けるのが良いでしょう。

本体の場合は 24FC1025-I/P または 24LC1025-I/P の使用となります。

 

EEPROM を付けている場合は、IN3 端子を EEPROM が使用しているため、
ソケットの IN3 端子に影響があります。(クガデンの説明書では使用不可と記載してあります)
入力ポート使用を検討している場合は EEPROM を着脱できる状態にするのが良いでしょう。

 

オプションとなっている ROM カセット では A2 の変更が可能で、512M 以下の EEPROM も使用可能になっています。

ROM カセットは 2016年5月より発売が開始されました。端子の構成上 IchigoJam EX 用になります。

 

ROMカセット(組み立てキット) ※ IchigoJam EX 専用 | クガデン 

 

本体は 24FC1025 または 24LC1025 のみ

ROM カセットは 512k 以下の EEPROM も使用できます。


 

EEPROM カセット端子 CN13 は CN13 表記より GND VCC WP SCL SDA の割り当てです。

運営者が下記で紹介している汎用の EEPROM モジュールを挿して動作する事を確認しています。

WP 以外の4ピンを接続します。もちろん CPU 周りのピンソケットに接続しても使用可能です。

 

ROM カセットや汎用の EEPROM モジュールを使用する場合、

本体ソケットの EEPROM は外して使用して下さい。 


SkyBerryJAM

SkyBerryJAM には基板に
EEPROM を取り付けるソケットがあります。

基板の左ビデオ出力端子の下にある 8 ピンのソケットです。

 

このソケットでは 32k~512k の EEPROM が使用可能です。

64k EEPROM が付属しています。(運営者入手時は 24LC64)

プログラムなどを保存した EEPROM は
IchigoJam・互換機共通で使用できます。

 

1024k EEPROM はソケットに挿して使用できません。

EEPROM モジュールを経由して使用可能です。

 

EEPROM モジュールを外付けで使用する場合、

本体ソケットの EEPROM は外して使用して下さい。


独自に作成する・ブレッドボードを使用する

当初は福野さんが基板作成の前提で公開しています。電子工作経験者が独自に作っているケースも少なくなりません。

福野さんのブログ記事を元に運営者が回路図にしてみました。

 

外部記憶装置とROMカセットに対応!こどもパソコンIchigoJam | 福野泰介の一日一創

 

運営者は経験がないので、Facebook グループ IchigoJam-FAN の皆様にご支援いただき、作成しています。

ブレッドボードで行う場合、スイッチ部分は直接配線でも構いません。

GND と VCC に接続する端子が多いため、ブレッドボードを使用する場合は

電源ラインがあるもの(+・ー 部分があるもの)が良いかもしれません。

当初は 24FC1025 用に記載していましたが、
現在は 512K 以下の EEPROM で使っている人も多いので、これもスイッチ記載で反映しています。

AT24C1025B など一部の 1024k は A2=GND 推奨となります。

 

 

EX1 は IchigoJam T 以降 SCL に変更されています。

また CN5 端子に EEPROM 関連の割り当ても含まれ、IN3=SDA となります。

IchigoLate プリント基板も共通です。

 

上記の回路図に VCC-GND 間へコンデンサを付けている場合もあります。

ただし EEPROM で使用する場合コンデンサは必須ではありません。

また抵抗の値は 2.4kΩ が必須というわけではありません。

モジュールなどで異なる値の抵抗を採用している場合でも動作する可能性があります。


対応している EEPROM

公式に動作確認されている EEPROM は 24FC1025-I/P ですが、

他の EEPROM も使用可能である事が多くの利用者により確認されています。

 

ショップのふうせんで運営者が IchigoJam 動作確認済の EEPROM を扱っています。

サンプルプログラムと解説書付で、安心してご利用いただけます。

 

EEPROM (単品) | ショップのふうせん

 

1M(1024K)は 24LC1025 が 24FC1025 同様に使用できますが、

他の 1M モジュールは 512K 分しか使用できない場合があります。

 

512K 以下は A2 を GND にするのがおすすめです。

A2=GND で 100 から、A2=VCC で 164 からとなり、

256K より少ない場合、保存数以降はループ状態になります。

最低容量で使用できる EEPROM は 32K ビットの A2=GND 時 100〜103 です。

(104 以降はループ)

 

EEPROM モジュールなどの場合、A2 の接続が固定されて変更できないために
1024K および 32K〜512K で対応の有無があります。ご確認の上で入手して下さい。

 

下が動作一覧です。白背景は利用者によって IchigoJam の動作確認が行えている EEPROM、

灰色は IchigoJam での動作はまだ未確認ですが、仕様が同じであるため動作可能と思われる EEPROM です。

形状は DIP8(I/P)および SOP8(I/SO)が確認できています。

 

型番 容量 ビット BASIC 保存 Latte 保存 備考
AT24C32A 32K 4 2  
AT24C32AN 32K 4 2

運営者動作確認済み

AT24C32B 32K 4 2

運営者動作確認済み

AT24C32C 32K 4 2

運営者動作確認済み

AT24C64A 64K 8 4  
AT24C64B 64K 8 4  
24FC64 64K 8 4 運営者動作確認済み
24LC64 64K 8 4 SkyBerryJAM 付属。運営者動作確認済み
AT24C128 128K 16 8 運営者動作確認済み
24LC128 128K 16 8 運営者動作確認済み
BR24G128 128K 16 8  
AT24C256 256K 32 16 運営者動作確認済み
AT24C256B 256K 32 16  
24FC256 256K 32 16 運営者動作確認済み
24LC256 256K 32 16 運営者動作確認済み
BR24G256

256K

32 16  
AT24C512

512K

64 32 運営者動作確認済み
AT24C512B

512K

64 32  
AT24C512N 512K 64 32 運営者動作確認済み
24LC512 512K 64 32 運営者動作確認済み
CAT24M01 512K 64 32 秋月電子通商 IchigoROM 採用
AT24C1024B 512K [1M] 64 32 512K と同様に動作 ★
24FC1025 1M 128 (127) 64 公式対応。運営者動作確認済み
24LC1025 1M 128 (127) 64 24FC1025 と同じように使用可能。運営者動作確認済み
BR24G1M 512 [1M] 64 32 24C1024B と同じため、512K 分しか使用できないと思われる ★

 

★ AT24C1024B など一部の 1024k ビット EEPROM は 24FC1025・24LC1025 と最上位ビットのアクセス方法が異なります。
  IchigoJam BASIC の EEPROM アクセスコマンドはその仕様を対応させていないため、現状では半分の 512k しか使用できません。

  直接 I2C コマンドを送出する I2CW・I2CR コマンドではアクセス可能です。

 

※ 8 ビット=1 バイト(1 文字)、8K ビット=1K バイト (IchigoJam BASIC 1 プログラム分)

 

同じように IchigoJam で EEPROM の動作を確認した表を
福野さん(IchigoJam 開発者)が Google ドライブで公開・共有しています。

 

EEPROM for IchigoJam - Google ドライブ 内

  

16K 以下の EEPROM は 32K 以上とは仕様に違いがあり、実際にプログラム保存では使用できない事を運営者が確認しています。
(24C16AN、24C02/A/N で確認済み)

SAVE は正常に終了するのですが、LOAD・LRUN はプログラムが何も出てこないか File Error になります。
FILES では一覧に表示されません。

ただし、直接 I2C をアクセスする I2CW・I2CR を用いてのデータ保存・読み出しは可能です。

AT24C1024B などの EEPROM も同様に I2CW・I2CR を用いた場合は全領域が使用できます。


注意事項

EEPROM モジュールなどを接続したら IchigoJam が再起動した場合

EEPROM を逆に差し込んでいる可能性があります。電源を切るかすぐに外して、EEPROM を確認して下さい。

独自に作成している場合、配線を誤っている可能性があります。

長時間そのままにすると故障する可能性もありますので、ご注意下さい。

 

コマンド入力後にフリーズする場合

IchigoJam BASIC で SAVE・LOAD・LRUN で 100〜 を指定してフリーズする(反応がなくなる)場合、

IchigoLatte で @● を指定したコマンドでフリーズする(反応がなくなる)場合、

一番多いのは、ジャンパワイヤで接続する端子を誤っているか付けずに行った場合です。

最近のファームウェアではエラーになったり Esc キーで中断が可能です。

基板やブレッドボードで構成した場合は、どこか断線しているか誤っている可能性もあります。

これらが正常な場合はジャンパワイヤの断線も考えられますので、テスターで通電テストを行うなど、確認してみて下さい。

 

EEPROM そのものが破損するケースは少ないです。ただし中のデータが壊れている事はまれにあります。

IchigoJam BASIC 1.0.0 以降では保存した後 FILES、IchigoLatte では ls で正常に保存されている事を確認すると無難です。

 

なお、EEPROM は寿命(読み書き制限)があります。

これは USB メモリ・SD カード・SSD・ハードディスク などと同じです。

いずれ読み書きが行えなくなる場合があります。EEPROM の種類などで制限回数は異なります。

 

IchigoJam BASIC 0.9.9-RC9 以前から IchigoJam BASIC 0.9.9-RC10 以降へ更新した場合

IchigoJam BASIC 0.9.9-RC10 からファイル番号が 227 までになると共に、EEPROM の保存方法が変わりました。

これにより、プログラム番号が一つずつずれます。

  • 101→100
  • 102→101
  •   :

元のプログラム番号 100 は下になります。EEPROM の容量によって異なります。

  • 1024K: 100・164→163
  • 0512K: 100→163
  • 0256K: 100→131
  • 0128K: 100→115
  • 0064K: 100→107
  • 0032K: 100→103 

FILES

IchigoJam BASIC 1.0.0 開発版(1.0.0 beta XX)では FILES のみで EEPROM 内全てを表示していましたが、

正式版となった IchigoJam BASIC 1.0.1 からは FILES のみで本体のみのファイル表示に仕様変更されました。

EEPROM を含めたファイル一覧表示は FILES 0 として下さい。

 

デフォルト動作を変更したのは、EEPROM を含んだ I2C アクセスに IN3 端子が使われているため、

EEPROM 以外のものを接続している場合に誤動作が生じる恐れがある事、

また EEPROM を使用していない IchigoJam 利用者が多いと思われるので、本体のみをデフォルトに変更してあるとの事です。

 

IoT 版では 1.2b59 IoT 以降で FILES のみの場合 0 のみを表示します。


IchigoJam BASIC RPi では 1.2.4RPi・1.2b19RPi まで FILES のみの場合は 0〜3 を表示し、

1.2b20RPi・1.2.5RPi 以降は 0~20 を表示します。

 

EEPROM によっては、まれに SAVE を行っても保存されていないケースがありますので、

SAVE した後は FILES で正常に保存されている事を確認して下さい。


EEPROM 保存仕様

EEPROM をプログラマを用いて直接読み書きする場合などの EEPROM 保存フォーマットです。

 

IchigoJam BASIC

仮想メモリ #C00~#FFF のプログラム領域部分 1024 バイトをそのまま保存します。

プログラム以外に POKE で直接書き込んだ場合でも SAVE コマンドはそのまま EEPROM へ保存します。
これは IchigoJam BASIC RPi・IchigoJam ap の .bin ファイルに同等です。

 

FILES は 1024 バイトから 4 バイト目の値から 0(#00)の直前までを表示します。これは先頭行の行番号を除いた中身です。

 

IchigoJam BASIC 0.9.9-RC10 以降現在採用されている保存状態では、

先頭を 100 として、1024 バイト毎に 101、102、……と保存します。

1024k・1M ビットの EEPROM はこれが 227 まで続きます。

プログラム番号 100 1024 バイト
プログラム番号 101 1024 バイト
プログラム番号 102 1024 バイト
:
プログラム番号 227 1024 バイト


IchigoJam BASIC 0.9.3~0.9.9-RC9 以前 はプログラムの保存状態が異なり、101 が先頭です。

一番最後の領域に 100 が保存されます。(下図)
ただし 1024k・1M バイトは 163 の後に 100 を保存します。これは 164 と共存します。

そのため、IchigoJam BASIC 0.9.9-RC9 以前(正式版 0.9.3 および 0.9.7)で使用していた EEPROM は
IchigoJam BASIC 0.9.9-RC10 以降(正式版 1.0.0 以降)でプログラム番号が一つずれます。

プログラム番号 101 1024 バイト
プログラム番号 102 1024 バイト
プログラム番号 103 1024 バイト
:
プログラム番号 100 1024 バイト

IchigoLatte

最大 2048 バイトを保存します。プログラムの最後はコード 0(#00)で終わらせます。

IchigoJam BASIC とは異なり、プログラムの長さによって EEPROM への保存が可変します。

そのため、プログラムが従来保存されていたプログラムより短くなった場合、
終了コード 0(#00)以降にも何だかのコードが残される場合があります。

 

ls コマンドは先頭から改行までの内容を表示します。

 

先頭を @0 として、2048 バイト毎に @1、@2、……と保存します。

1024k・1M ビットの EEPROM は @63 まで続きます。

プログラム番号 @00 2048 バイト
プログラム番号 @01 2048 バイト
プログラム番号 @02 2048 バイト
:
プログラム番号 @63 2048 バイト

IchigoJam BASIC と IchigoLatte のプログラム共存

上記の仕様により、一つの EEPROM に IchigoJam BASIC と IchigoLatte のプログラムを共存して保存可能です。

 

 

IchigoJam BASIC プログラム番号
(IchigoJam BASIC 0.9.9-RC10〜)
IchigoLatte プログラム番号
100 @0 
101
102 @1
103
:
226 @63
227

ただし、IchigoJam BASIC と IchigoLatte はお互いのプログラム仕様を考慮していないため、

IchigoJam BASIC の FILES コマンド、IchigoLatte の ls コマンドは意図しない表示をするかもしれません。

 

通常は IchigoJam BASIC と IchigoLatte は異なる EEPROM で使用するのが無難でしょう。

 

なお、IchigoJam BASIC・IchigoLatte のプログラム一覧を参照できるプログラムは運営者が公開しています。


Q&A

入手したての EEPROM ですが、FILES・ls コマンドでゴミが表示されます。

入手先によって生じている事があります。

 

IchigoJam BASIC では次のコマンドで EEPROM 内を消去できます。

このコマンドは EEPROM 内を完全に消去します。プログラム等が入っている時は実行しないで下さい。

 

NEW:FOR I=100 TO 227:?I:SAVE I:NEXT

 

EEPROM のサイズによって 227 を変更します。512k は 163、256k は 131 などです。

 

IchigoLatte では EEPROM フォーマッタ をご利用下さい。

 

IchigoJam BASIC RPi で使用できますか?

Raspberry Pi で動作する IchigoJam BASIC RPi は 1.2b16RPi・1.2.5RPi より EEPROM に対応しています。

 

0〜99 が SD カード、100〜227 が EEPROM です。SAVE・LOAD・FILES は IchigoJam BASIC と同じ操作で使用できます。

IchigoJam BASIC で保存したプログラムを IchigoJam BASIC RPi で読み出し・実行も可能です。

もちろん逆も可能です。ただし処理速度が異なり、一部のプログラムは意図しない動作をする場合があります。

Raspberry Pi では Zero・Zero W を除き、40 ピンがピンヘッダになっています。
接続するためにはメス-メス(ソケット-ソケット)のジャンパワイヤが必要です。

 

IchigoJam BASIC RPi 1.2b15RPi・1.2.4RPi 以前は EEPROM 非対応です。
0〜3・100〜227 は全て SD カードへ保存されます。

EEPROM を接続しても保存されませんので、ご注意下さい。