eMMC パーティション構造
関連ページ
I2C EEPROM: 最初のブートデバイス。最後に MODE = 9 (SD_SSP0) を選択し eMMC に移行する。
構造と enum
0x00000000: MBR
0x000001be: partition entry # 0
0x000001ce: partition entry # 1
0x000001de: partition entry # 2
0x000001ee: partition entry # 3
0x000001fe: MBR signature 0x55aa
Partition Entry(必要な項目だけ列挙)
+0x00: status
0x00: none
0x80: active
0x02: ?????(W)
0x01 ~ 0x7f, 0x81 ~ 0xff: invalid
Linux の MS-DOS partition table parser は 0x00 と 0x80 以外の値が status に入っていると partition table のパースそのものをやめる
+0x04: type
0x0b: FAT32
0x10: ????
0x53: 'S', Boot stream
+0x08: LBA first sector address
セクタ番号なので、これに 512 Bytes をかけると実際のアドレスになる
PW-SH1 の MBR
Partition 0
FAT
eMMC 上での物理的な位置: 3番目
Partition 1: Boot stream
eMMC 上での物理的な位置: 1番目
Partition 2: ???? (type=0x10)
eMMC 上での物理的な位置: 2番目
FAT と Boot stream のテーブル上の位置と物理位置が逆転してるのは Windows CE EBOOT の制約とか?(まったく不明)
PW-SH1 の MBR:
https://gyazo.com/6f1d199940e4ecc0e11b317d316bef0a
Brainux SD の MBR(参考):
https://gyazo.com/8a227c23cc53831eaffca5e58cf115c4