Realtek ameba (RTL8711AF, RTL8711AM, RTL8195AM)のファームウェア書き込み用イメージフォーマットについて調べました。
Realtek amebaではSDKでram_all.binを生成して書き込みツールで書き込みます。
イメージ生成ツールを作成したいのでram_all.binのフォーマットについて調べました。
ram_all.bin のフォーマット
- 形式はバイナリ
- 0x0000-0x7FFF は Image1 と呼ばれるブートローダーの領域。sdkに含まれるram_1.p.binの内容をコピーする
- 0x8000-0x8FFF 予約領域 0xFFでパディング
- 0x9000-0x9FFF は 0xFFでパディング。 flashのこの領域にはmacアドレス等の設定データが含まれる。ファームウェア書き込み時には、設定データを保持するためにこの領域は書き換えない。
- 0xA000-0xAFFF は0xFFでパディング。flashのこの領域はWLANのRFの調整値が含まれる。上と同様に書き換えない。
- 0xB000 以降が Image2と呼ばれる ファームウェアの領域。ファームウェアにはSRAM領域とSDRAM領域の二つが含まれる。
- 0xB000の先頭16バイトはヘッダ
- 4バイトはSRAM領域のサイズ
- 4バイトはSRAM領域をARMメモリマップ上に配置する際のアドレス(0x100060000)
- 8バイトはsignature.デフォルトのsignatureは "81958711"の文字列
- 16バイト目以降がSRAM領域のコードとデータ
- 4バイトはSDRAM領域のサイズ
- 4バイトはSDRAM領域をARMメモリマップ上に配置する際のアドレス(0x300000000)
- 8バイトは0xffでパディング
- 16バイト目以降がSDRAM領域のコードとデータ
ram_all.binの例
- Image2のSRAM領域のヘッダ
000b000 60 01 03 00 00 60 00 10 38 31 39 35 38 37 31 31
- Image2のSDRAM領域のヘッダ
- SDRAM領域は0xb010 + SRAM領域のサイズ(この例では0x30160) = 0x3b170から始まる。
003b170 20 b2 00 00 00 00 00 30 ff ff ff ff ff ff ff ff
参考
- SDKに含まれる UM0034 Realtek Ameba-1 memory layout.pdf