EEPROM の利用

XG-50 には I2C 接続の 64Kbit EEPROM が搭載されています。アドレスは 0x51 です。
アプリケーションの設定などを保存しておく領域として利用することができます。

64Kbit EEPROM

nsh> i2c dev -b 1 0 7f
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- 45 -- -- -- -- -- -- -- -- -- -- 
50: -- 51 -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- 76 -- -- -- -- -- -- -- -- -- 
nsh> 


I2C driver (/dev/i2c1) 経由で直接読み書きを行うことも可能1)ですが、mtdblock driver2)としてマッピングしていますので、 block device として読み書き3)することができます。

nsh> ls -l /dev
/dev:
 cr--r--r--       0 adc0
 crw-rw-rw-       0 console
 crw-rw-rw-       0 i2c1      <--- I2C
 brw-rw-rw-       0 mtdblock0 <--- mtdblock
 crw-rw-rw-       0 null
 crw-rw-rw-       0 ptmx
 crw-rw-rw-       0 ramlog
 cr--r--r--       0 random
 crw-rw-rw-       0 rtc0
 crw-rw-rw-       0 timer0
 crw-rw-rw-       0 ttyS0
 crw-rw-rw-       0 ttyS1
 crw-rw-rw-       0 ttyS2
 crw-rw-rw-       0 ttyS3
 crw-rw-rw-       0 zero


1)
driver を用意していないデバイスは基本この方法を用います
2)
driver のソースは nuttx/drivers/mtd/at24xx.c です
3)
open() して read()/write()