フラッシュメモリマップ

Deguに内蔵されているFlashメモリマップは、以下のように構成されています。

Address Size Region
0x000000 - 0x013FFF 80KB MCUboot
0x014000 - 0x081FFF 440KB Degu Firmware Slot-0
0x082000 - 0x0EFFFF 440KB Degu Firmware Slot-1
0x0F0000 - 0x0F7FFF 32KB Scratch Partition
0x0F8000 - 0x0FFFFF 32KB USB Mass Storage

MCUboot領域

MCUboot領域には、MCUbootバイナリが書き込まれています。Deguに電源を投入するとMCUbootが起動し、MCUbootはDeguファームウェア領域のSlot-0に書き込まれたファームウェアを起動します。

Deguファームウェア領域

Deguファームウェア領域は、Slot-0とSlot-1との2つに分けられています。

Slot-0は、通常起動するDeguファームウェアが書き込まれています。

Slot-1は、ファームウェアアップデート時に新しいファームウェアが書き込まれます。その後、再度電源投入(又はリセット)すると、MCUbootがSlot-1の内容をSlot-0に上書きします。

Scratch Partition

Scratch Partitionは、MCUbootがファームウェアアップデートを実行するために使用する作業領域です。

USB Mass Storage領域

USB Mass Storage領域は、DeguをPCに接続したとき、USBマスストレージとして認識します。

さらに、この領域は以下のように用途を分けています。

Address Size Use
0x0000 - 0x3FFF 16KB FAT12 Partition
0x4000 - 0x7FFF 16KB OpenThread Network Information

FAT12 Partition領域

FAT12 PartitionはFAT12形式でフォーマットされており、MicroPythonコードとCONFIGファイルを格納しています。

OpenThread Network Information領域

OpenThread Network Information領域には、DeguがOpenThreadネットワークに接続するための情報が書き込まれています。 Deguはこれを使って、一度JoinしたOpenThreadネットワークに接続します。

OpenThread Network Information領域を消去すると、Deguを別のOpenThreadネットワークにJoinさせることができます。例えば、DeguをLinux PCに接続したとき、/dev/sdxとしてUSB Mass Storage領域にアクセスできる場合、次のコマンドでこの領域を消去することができます。

$ sudo dd if=/dev/zero of=/dev/sdx bs=1k count=16 seek=16 conv=fsync,nocreat

/dev/sdx の x はPCに接続した Degu 以外のストレージデバイスによって変わります。多くの PC には最初から /dev/sda があるので、Degu には /dev/sdb 等が割り当てられます。必ず Degu を接続した時に作られるファイルを使ってください。