外部記憶装置 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端子を接続するだけで使用でき、抵抗を用意する必要もないので、
電子工作に慣れていない人にも利用しやすいメリットがあります。

 

IchigoJam 向けに制作された EEPROM モジュールが制作・販売されています。

 

ROMカセット | Hana 道場 Store - はんだ付けが必要です。CN5 端子必須'(IchigoJam U 非対応)

ROMカセット完成版 | Hana 道場 Store - ROMカセット完成版 | PCN - CN5 端子必須(IchigoJam U 非対応)

IchigoJam用外部記憶装置キット IchigoROM | 秋月電子通商 - IchigoJam R は 5 端子部分で使用可能

IchigoJam ROMカセット | 共立エレショップ - IchigoJam U・T・S 向け(IchigoJam R 非対応)

EEPROMキット [K-Jam.rom] | aitendo - CN5 端子で使用する方法 | ボクにもわかる電子工作のブログ(IchigoJam R では作業必須)

 

 

24 系の EEPROM が使用できるモジュールであれば汎用品でも使用できます。

例えば次の商品が使用可能です。端子の並びが異なるため、ジャンパワイヤが必要になります。

 

EEPROMキット [K-24CXX] | aitendo- 24LC512 または 24LC64

USBプラグ型ROMキット [K-UROM] | aitendo - USB 端子型。切り替えスイッチ付

EEPROMモジュール [EE256M] | aitendo

 

EEPROMモジュール [EE1024M] | aitendo は AT24C1024 が使われているので IchigoJam 非対応です

 

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

最近右画像の EEPROM モジュールで、
EEPROM を付ける 8 ピンソケットの
上下方向が逆にはんだ付けされたモジュールが存在します。

特に海外で安値販売されているモジュールで多く存在しています。

この場合でも EEPROM を付けて使用できますが、
ソケットとは逆方向に取り付ける必要があるのでご注意下さい。
基板に印刷してあるのが正しい方向です。

(基板文字の方向に見て上、WP・D1・VCC 側に
 凹みがあるのが正しい方向です)

 

EEPROM は場合によってデータが入っている中古品が

販売されている場合がある事を確認しています。

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

 

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

 

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


接続方法

次のように接続します。

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

 

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

 

中央 IC の左右ピンソケット(14 ピン)

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

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

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

 

RISC-V プロセッサの IchigoJam・IchigoLatte などは
右側 OUT5 端子の上に SDA・SCL があります。

CN5 端子の上下逆にした状態で接続できます。

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 共通です。

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


IchigoDake & DakeJacket

IchigoDake & DakeJacket では 2018 年公開の DakeJacket 版ファームウェアまで(BASIC(緑基板)・JS(黒基板))に

EEPROM のアクセスに問題がある事が分かっています。IchigonQuest(青基板) は EEPROM アクセスが備わっていません。

EEPROM を使用する前提の場合はご注意下さい。

 

2019年3月にベータ版が Facebook グループ IchigoJam -FAN で公開されています。EEPROM アクセスの改善を確認できています。

 

IchigoJam-FAN 内 投稿 | Facebook


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 も使用可能である事が多くの利用者により確認されています。

 

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 保存 Cake BASIC Latte 保存 備考
AT24C32A 32K 4 1 2  
AT24C32AN 32K 4 1 2

運営者動作確認済み

AT24C32B 32K 4 1 2

運営者動作確認済み

AT24C32C 32K 4 1 2

運営者動作確認済み

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

256K

32 8 16  
AT24C512

512K

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

512K

64 16 32  
AT24C512N 512K 64 16 32 運営者動作確認済み
24LC512 512K 64 16 32 運営者動作確認済み
CAT24M01 512K 64 16 32 秋月電子通商 IchigoROM 採用
AT24C1024B 512K [1M] 64 16 32 512K と同様に動作 ★
24FC1025 1M 128 (127) 32 64 公式対応。運営者動作確認済み
24LC1025 1M 128 (127) 32 64 24FC1025 と同じように使用可能。運営者動作確認済み
BR24G1M 512 [1M] 64 32 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 の保存方法が変わりました。

公開版では IchigoJam BASIC 0.9.7 以前から IchigoJam BASIC 1.0.0(PCN 販売の一部)・1.0.1 以降となります。

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

  • 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 版では IchigoJam BASIC 1.2b59 IoT 以降で FILES のみの場合 0 のみを表示します。


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

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

 

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

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

 

IchigoCake BASIC

IchigoCake に対応している IchigoCake BASIC はプログラム容量が 4k バイトになっています。
(IchigoJam BASIC オリジナル版は 1k バイト)

そのため、オリジナル版と EEPROM の互換がありません。 IchigoCake BASIC 専用に EEPROM を用意する事がおすすめです。


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 バイト

IchigoCake BASIC

IchigoCake BASIC はプログラム容量が 4k バイトになっています。

これは EEPROM にも影響があり、4k バイト毎になります。

プログラム番号は 100~131 です。

 

プログラム番号 100 4096 バイト
プログラム番号 101 4096 バイト
プログラム番号 102 4096 バイト
:
プログラム番号 131 4096 バイト

IchigoJam BASIC と IchigoCake BASIC の共存

上記の仕様により、IchigoJam BASIC の番号 100~103 が IchigoCake BASIC の 100、

IchigoJam BASIC の 104~107 が IchigoCake BASIC の 101……と

IchigoJam BASIC プログラム 4 つ分が IchigoCake BASIC プログラム 1 つ分になります。

 

IchigoJam BASIC から 104 で保存し、IchigoCake BASIC では 101 で読み出せるとの報告がありますが、

IchigoCake BASIC で 1k バイトを超えたプログラムは IchigoJam BASIC で意図しない動作をする恐れがあります。

通常は EEPROM の共存をおすすめしません。

 

IchigoJam BASIC プログラム番号
(IchigoJam BASIC 0.9.9-RC10〜)
IchigoCake BASIC プログラム番号
100 100 
101
102
103
104 101
105
106
107
:
224 131
225
226
227

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 を接続しても保存されませんので、ご注意下さい。