大破雑記帳

個人用メモな雑記ブログ いろんなことをざっくりと。

WG1400HP レジスタメモ

いずれもメーカーブートローダからブートしたOpenWrt

DDR

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x15c))); do ADDR=$((0x18000000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x18000000: 0xEFAAF33B
0x18000004: 0xAEB2E1A8
0x18000008: 0x00000853
0x1800000c: 0x00000402
0x18000010: 0x00000000
0x18000014: 0x00004098
0x18000018: 0x000000FF
0x1800001c: 0x00000010
0x18000020: 0x00000010
0x18000024: 0x00000010
0x18000028: 0x00000010
0x1800002c: 0x00000000
0x18000030: 0x00000000
0x18000034: 0x00000000
0x18000038: 0x00513021
0x1800003c: 0x00000000
0x18000040: 0x00400020
0x18000044: 0x00000000
0x18000048: 0x00613100
0x1800004c: 0x00000000
0x18000050: 0x00003111
0x18000054: 0x00000000
0x18000058: 0x00200100
0x1800005c: 0x00000000
0x18000060: 0x00403121
0x18000064: 0x00000000
0x18000068: 0x00000000
0x1800006c: 0x00000000
0x18000070: 0x00712121
0x18000074: 0x00000000
0x18000078: 0x00710001
0x1800007c: 0x00000000
0x18000080: 0x00513131
0x18000084: 0x00000000
0x18000088: 0x00303111
0x1800008c: 0x00000000
0x18000090: 0x00702121
0x18000094: 0x00000000
0x18000098: 0x00001110
0x1800009c: 0x00000000
0x180000a0: 0x00000000
0x180000a4: 0x00000000
0x180000a8: 0x00000000
0x180000ac: 0x00000000
0x180000b0: 0x00000000
0x180000b4: 0x00000000
0x180000b8: 0x00001E7D
0x180000bc: 0x00000000
0x180000c0: 0x00000000
0x180000c4: 0x74444444
0x180000c8: 0x00000444
0x180000cc: 0x000FFFFF
0x180000d0: 0x000FFFFC
0x180000d4: 0x08116C08
0x180000d8: 0x00000000
0x180000dc: 0x7FFECDFA
0x180000e0: 0x1DF25EF2
0x180000e4: 0x00000A12
0x180000e8: 0x00000004
0x180000ec: 0x11A3C682
0x180000f0: 0xC774DDF4
0x180000f4: 0x00000000
0x180000f8: 0x0479DD02
0x180000fc: 0x366335B8
0x18000100: 0x00000000
0x18000104: 0x00000214
0x18000108: 0x401FC040
0x1800010c: 0x00000028
0x18000110: 0x1001C23C
0x18000114: 0x08820000
0x18000118: 0x10000101
0x1800011c: 0x00000000
0x18000120: 0x00000000
0x18000124: 0x00000000
0x18000128: 0x00000250
0x1800012c: 0x00000004
0x18000130: 0xFFFFFFFF
0x18000134: 0x00000004
0x18000138: 0xFFFFFFFF
0x1800013c: 0x00000002
0x18000140: 0x0000FFFF
0x18000144: 0x00000028
0x18000148: 0x00000008
0x1800014c: 0x00000002
0x18000150: 0x00000000
0x18000154: 0x00333333
0x18000158: 0x04210842
0x1800015c: 0x0000000A

GPIO

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x6f))); do ADDR=$((0x18040000 + addr)); ADDR=$(printf "0x%08x\n" $ADDR); VAL=$(devmem $ADDR 32); printf "$ADDR: $VAL\n"; done
0x18040000: 0x00BE031F
0x18040004: 0x20FEEE2D
0x18040008: 0x0040EC00
0x1804000c: 0x00000000
0x18040010: 0x00000000
0x18040014: 0x0086000C
0x18040018: 0x00000000
0x1804001c: 0x00000000
0x18040020: 0x00000000
0x18040024: 0x0086000C
0x18040028: 0x00000000
0x1804002c: 0x00000000
0x18040030: 0x0C080900
0x18040034: 0x00160000
0x18040038: 0x00000000
0x1804003c: 0x00000000
0x18040040: 0x00000000
0x18040044: 0x00000908
0x18040048: 0x00000000
0x1804004c: 0x00000000
0x18040050: 0x00000000
0x18040054: 0x14130000
0x18040058: 0x80808080
0x1804005c: 0x80808080
0x18040060: 0x80808080
0x18040064: 0x80808080
0x18040068: 0x00000000
0x1804006c: 0x00000002

PLL

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x50))); do ADDR=$((0x18050000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x18050000: 0x00021480
0x18050004: 0x00213C00
0x18050008: 0x00010000
0x1805000c: 0x00000400
0x18050010: 0xC00A0FFE
0x18050014: 0x000A0000
0x18050018: 0x00000014
0x1805001c: 0x00000000
0x18050020: 0x00000500
0x18050024: 0x000A041A
0x18050028: 0x5A000000
0x1805002c: 0x000010B3
0x18050030: 0x0A47F028
0x18050034: 0x00004000
0x18050038: 0x0523F828
0x1805003c: 0x41020CCC
0x18050040: 0x781003FF
0x18050044: 0x003C103F
0x18050048: 0x03000000
0x1805004c: 0x00000007
0x18050050: 0x00000101

CPU_PLL_CONFIG

  • PLLPWD: 0x0
  • OUTDIV: 0x0
  • RANGE: 0x1
  • REFDIV: 0x1
  • NINT: 0x12
  • NFRAC: 0x0

CPU PLL Frequency = REFCLK/REFDIV * (NFRAC/2^6 + NINT) * 1/2^OUTDIV

REFCLK=40MHz

720,000,000 = 40000000/1 * (0 / 2^6 + 18) * 1 / 2^0

DDR_PLL_CONFIG

  • PLLPWD: 0x0
  • OUTDIV: 0x0
  • RANGE: 0x1
  • REFDIV: 0x1
  • NINT: 0xf
  • NFRAC: 0x0

CPU PLL Frequency = REFCLK/REFDIV * (NFRAC/2^10 + NINT) * 1/2^OUTDIV

REFCLK=40MHz

600,000,000 = 40000000/1 * (0 / 2^10 + 15) * 1 / 2^0

※ (AHB PLL Frequency) = DDR PLL Frequency / (AHB_POST_DIV(reg->0x8, bits->19:15) + 1) = 200,000,000`

PLL=:
- BYPASS: REFCLK
- AHBCLK_FROM_DDRPLL=0: CPU PLL Frequency
- AHBCLK_FROM_DDRPLL=1: DDR PLL Frequency
AHB PLL Frequency = DDR PLL Frequency / (AHB_POST_DIV(reg->0x8, bits->19:15) + 1) = 200,000,000

RESET

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0xcc))); do ADDR=$((0x18060000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x18060000: 0x00000000
0x18060004: 0x00000000
0x18060008: 0x80000003
0x1806000c: 0xCEEF4E50
0x18060010: 0x00000701
0x18060014: 0x0000000C
0x18060018: 0x00000000
0x1806001c: 0x24044808
0x18060020: 0x00000000
0x18060024: 0x00000000
0x18060028: 0x00000000
0x1806002c: 0x00000000
0x18060030: 0x00000000
0x18060034: 0x00000000
0x18060038: 0x00000000
0x1806003c: 0x00000000
0x18060040: 0x00000000
0x18060044: 0x00000000
0x18060048: 0x00000000
0x1806004c: 0x00000000
0x18060050: 0x00000000
0x18060054: 0x00000000
0x18060058: 0x00000000
0x1806005c: 0x00000000
0x18060060: 0x00000000
0x18060064: 0x00000000
0x18060068: 0x00000000
0x1806006c: 0x00000000
0x18060070: 0x00000000
0x18060074: 0x00000000
0x18060078: 0x00000000
0x1806007c: 0x00000000
0x18060080: 0x00000000
0x18060084: 0x00000000
0x18060088: 0x00000000
0x1806008c: 0x00000000
0x18060090: 0x00001130
0x18060094: 0x00000000
0x18060098: 0x00000000
0x1806009c: 0x00000000
0x180600a0: 0x00000000
0x180600a4: 0x00000000
0x180600a8: 0x00000000
0x180600ac: 0x00000000
0x180600b0: 0x00031E5E
0x180600b4: 0x00043FC0
0x180600b8: 0x00000000
0x180600bc: 0x000A6000
0x180600c0: 0x00000000
0x180600c4: 0x00030831
0x180600c8: 0x00000000
0x180600cc: 0x000003FF

GMAC Interface

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x64))); do ADDR=$((0x18070000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x18070000: 0x00028001
0x18070004: 0x00000000
0x18070008: 0x0000000F
0x1807000c: 0x00000002
0x18070010: 0x0000FFFF
0x18070014: 0x0000001F
0x18070018: 0x1F038116
0x1807001c: 0x00001140
0x18070020: 0x0000004D
0x18070024: 0x00000060
0x18070028: 0x00000020
0x1807002c: 0x00000000
0x18070030: 0x00000000
0x18070034: 0x000000A2
0x18070038: 0x00001801
0x1807003c: 0x0000000E
0x18070040: 0x00000000
0x18070044: 0x00000000
0x18070048: 0x00000020
0x1807004c: 0x2396E54A
0x18070050: 0x04E29C45
0x18070054: 0x00000030
0x18070058: 0x0806020F
0x1807005c: 0x00000018
0x18070060: 0x00000000
0x18070064: 0x00000000

OTP

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x2c))); do ADDR=$((0x18131000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x18131000: 0x00000000
0x18131004: 0x00000000
0x18131008: 0x0000007D
0x1813100c: 0x00000001
0x18131010: 0x00000005
0x18131014: 0x00000000
0x18131018: 0x00000004
0x1813101c: 0x00000004
0x18131020: 0x00000007
0x18131024: 0x00000000
0x18131028: 0x00000190
0x1813102c: 0x00000000

GMAC

dump

root@OpenWrt:/# for addr in $(seq 0 4 $((0x5c))); do ADDR=$((0x19000000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x19000000: 0x0000000F
0x19000004: 0x00007215
0x19000008: 0x40605060
0x1900000c: 0x00A1F037
0x19000010: 0x000005F4
0x19000014: 0x00000000
0x19000018: 0x00000000
0x1900001c: 0x00000000
0x19000020: 0x00000006
0x19000024: 0x00000000
0x19000028: 0x0000111F
0x1900002c: 0x00000000
0x19000030: 0x00000000
0x19000034: 0x00000000
0x19000038: 0x00000000
0x1900003c: 0x00000008
0x19000040: 0xD10DE082
0x19000044: 0x66100000
0x19000048: 0x001F1F00
0x1900004c: 0x0010FFFF
0x19000050: 0x015500AA
0x19000054: 0x01F00140
0x19000058: 0x0000FFFF
0x1900005c: 0x000FEFEF
root@OpenWrt:/# devmem 0x1900018c 32
0x00000001
root@OpenWrt:/# for addr in $(seq 0 4 $((0x5c))); do ADDR=$((0x1a000000 + addr)); VAL=$(devmem $ADDR 32); printf "0x%08x: $VAL\n" $ADDR; done
0x1a000000: 0x0000000F
0x1a000004: 0x00007215
0x1a000008: 0x40605060
0x1a00000c: 0x00A1F037
0x1a000010: 0x000005F4
0x1a000014: 0x00000000
0x1a000018: 0x00000000
0x1a00001c: 0x00000000
0x1a000020: 0x00000000
0x1a000024: 0x00000000
0x1a000028: 0x00000000
0x1a00002c: 0x00000000
0x1a000030: 0x00000000
0x1a000034: 0x00000000
0x1a000038: 0x00000000
0x1a00003c: 0x00000000
0x1a000040: 0xD00DE082
0x1a000044: 0x66100000
0x1a000048: 0x001F1F00
0x1a00004c: 0x0010FFFF
0x1a000050: 0x015500AA
0x1a000054: 0x01F00140
0x1a000058: 0x0000FFFF
0x1a00005c: 0x000FEFEF
root@OpenWrt:/# devmem 0x1a00018c 32
0x00000001