diff --git a/DTK.700.350.175.087-192.NSIH.txt b/DTK.700.350.175.087-192.NSIH.txt new file mode 100755 index 0000000..1edfd31 --- /dev/null +++ b/DTK.700.350.175.087-192.NSIH.txt @@ -0,0 +1,229 @@ +//------------------------------------------------------------------------------ +// Magiceyes Boot Header Format +//------------------------------------------------------------------------------ + +4648424D // 0x000 : Header ID = 0x4648424D ("MBHF") + +00200000 // 0x004 : Bootcode size +80000000 // 0x008 : Bootcode Load address +80000000 // 0x00C : Bootcode Excute address + +//------------------------------------------------------------------------------ +// OPTION +//------------------------------------------------------------------------------ +// [0] : Update DRAM configuration +// [1] : PHYZQENB +// [2] : PHYDLOCK +// [3] : Update Fast Channel Arbiter +// [4] : Update Slow Channel Arbiter +// [5] : Change PLL +// [6] : Update MCUS +// [7] : Writes memories : Addr, Data, Addr, Data, .... , 0 (End) +// [31:8] : Reserved for future use. must be 0 +//------------------------------------------------------------------------------ +//000000C0 // 0x010 : OPTION +000000E7 // 0x010 : OPTION +00000000 // 0x014 : DELAY - Delay counter, 0 ~ 0xFFFFFFFE + +//------------------------------------------------------------------------------ +// MCU-D registers +//------------------------------------------------------------------------------ +//02C00134 // 0x018 : CONFIG ; // 0x00 +//32A11055 // 0x01C : TIME0 ; // 0x04 +////00008002 // 0x020 : ENABLE ; // 0x08 +////00008007 // 0x020 : ENABLE ; // 0x08 +//00008003 // 0x020 : ENABLE ; // 0x08 +//65220100 // 0x024 : TIME1 ; // 0x10 +//20184200 // 0x028 : FASTCH[0] ; // 0x20 +//21080A10 // 0x02C : FASTCH[1] ; // 0x24 +//00084210 // 0x030 : FASTCH[2] ; // 0x28 +//06D1040C // 0x034 : SLOWCH[0] ; // 0x2C +//107338A4 // 0x038 : SLOWCH[1] ; // 0x30 +//0005A92F // 0x03C : SLOWCH[2] ; // 0x34 +//00000000 // 0x040 : DQSOFFSET ; // 0x94 +//F001D9DE // 0x044 : PHYDLL ; // 0x98 +//00000000 // 0x048 : PHYMODE ; // 0x9C +//00000003 // 0x04C : DLLLOCKSTART; // 0xA0 +//0000003B // 0x050 : DLLLOCKFORCE; // 0xA4 +//00000002 // 0x054 : ZQSTART ; // 0xAC - for Manul ZQ +//00000015 // 0x058 : ZQFORCE ; // 0xB0 - for Manul ZQ +//00000075 // 0x05C : ZQENB ; // 0xB4 +//00000001 // 0x060 : UPDATE ; // 0xB8 + +// 400 Mhz +02c10134 // 0x018 : CONFIG ; // 0x00 +3200f055 // 0x01C : TIME0 ; // 0x04 +00008003 // 0x020 : ENABLE ; // 0x08 +85223b00 // 0x024 : TIME1 ; // 0x10 +20184200 // 0x028 : FASTCH[0] ; // 0x20 +21080A10 // 0x02C : FASTCH[1] ; // 0x24 +00084210 // 0x030 : FASTCH[2] ; // 0x28 +06D1040C // 0x034 : SLOWCH[0] ; // 0x2C +107338A4 // 0x038 : SLOWCH[1] ; // 0x30 +0005A92F // 0x03C : SLOWCH[2] ; // 0x34 +00000000 // 0x040 : DQSOFFSET ; // 0x94 +7000A0A6 // 0x044 : PHYDLL ; // 0x98 +00000000 // 0x048 : PHYMODE ; // 0x9C +00000003 // 0x04C : DLLLOCKSTART; // 0xA0 +00000014 // 0x050 : DLLLOCKFORCE; // 0xA4 +00000002 // 0x054 : ZQSTART ; // 0xAC - for Manul ZQ +00000015 // 0x058 : ZQFORCE ; // 0xB0 - for Manul ZQ +00000074 // 0x05C : ZQENB ; // 0xB4 +00000001 // 0x060 : UPDATE ; // 0xB8 + + +//------------------------------------------------------------------------------ +// CLKPWR registers +//------------------------------------------------------------------------------ +//00000F01 // 0x064 : U32 CLKMODE[0] ; PLL0 / 2 / 16 +//00000700 // 0x064 : U32 CLKMODE[0] ; PLL0 / 0 / 8 +//00000300 // 0x064 : U32 CLKMODE[0] ; PLL0 / 0 / 4 +//00000103 // 0x064 : U32 CLKMODE[0] ; PLL0 / 4 / 2 +//00000101 // 0x064 : U32 CLKMODE[0] ; PLL0 / 2 / 2 +//00000400 // 0x064 : U32 CLKMODE[0] ; PLL0 / 1 / 5 +00000300 // 0x064 : U32 CLKMODE[0] ; PLL0 / 1 / 4 + +//00001733 // 0x068 : U32 CLKMODE[1] ; FCLK / 4 / 8 / 2 +00001131 // 0x068 : U32 CLKMODE[1] ; FCLK / 2 / 2 / 2 +//00001137 // 0x068 : U32 CLKMODE[1] ; FCLK / 4 / 1 / 2 +//00001101 // 0x068 : U32 CLKMODE[1] ; PLL0 / 2 / 2 / 2 + +000d5E01 // 0x06C : U32 PLLSET[0] ; @700Mhz +//000D0801 // 0x06C : U32 PLLSET[0] ; P=3, M=264, S=1 +//000C8501 // 0x06C : U32 PLLSET[0] ; P=3, M=133, S=1 +//000d5E01 // 0x06C : U32 PLLSET[0] ; P=3, M=350, S=1 -> 700 Mhz + +//000D2703 // 0x070 : U32 PLLSET[1] ; P=3, M=295, S=3 -> 147.500000 Mhz +00090003 // 0x070 : U32 PLLSET[1] ; P=2, M=256, S=3 -> 192.000000 Mhz + + +//------------------------------------------------------------------------------ +// MCUS +//------------------------------------------------------------------------------ +// static1 : 3-3-16-3-3 +4000039E // 0x074 : MEMBW +2F222220 // 0x078 : MEMTIMEACS[0] +0000F000 // 0x07C : MEMTIMEACS[1] +2F222220 // 0x080 : MEMTIMECOS[0] +00000300 // 0x084 : MEMTIMECOS[1] +0F0F0F05 // 0x088 : MEMTIMEACC[0] +0F010F0F // 0x08C : MEMTIMEACC[1] +04000000 // 0x090 : MEMTIMEACC[2] +0F0F0F05 // 0x094 : MEMTIMESACC[0] +0F010F0F // 0x098 : MEMTIMESACC[1] +00000000 // 0x09C : MEMTIMESACC[2] +00000000 // 0x0A0 : MEMTIMEWACC[0] +00000000 // 0x0A4 : MEMTIMEWACC[1] +00000000 // 0x0A8 : MEMTIMEWACC[2] +2F222220 // 0x0AC : MEMTIMECOH[0] +00000300 // 0x0B0 : MEMTIMECOH[1] +2F222220 // 0x0B4 : MEMTIMECAH[0] +00000300 // 0x0B8 : MEMTIMECAH[1] +00000000 // 0x0BC : MEMBURST +00000000 // 0x0C0 : Reserved +00005555 // 0x0C4 : MEMWAIT + +// static1 : 1-1-3-1-1 +//4000039E // 0x074 : MEMBW +//2F222200 // 0x078 : MEMTIMEACS[0] +//0000F000 // 0x07C : MEMTIMEACS[1] +//2F222200 // 0x080 : MEMTIMECOS[0] +//00000300 // 0x084 : MEMTIMECOS[1] +//0F0F0205 // 0x088 : MEMTIMEACC[0] +//0F010F0F // 0x08C : MEMTIMEACC[1] +//04000000 // 0x090 : MEMTIMEACC[2] +//0F0F0205 // 0x094 : MEMTIMESACC[0] +//0F010F0F // 0x098 : MEMTIMESACC[1] +//00000000 // 0x09C : MEMTIMESACC[2] +//00000000 // 0x0A0 : MEMTIMEWACC[0] +//00000000 // 0x0A4 : MEMTIMEWACC[1] +//00000000 // 0x0A8 : MEMTIMEWACC[2] +//2F222200 // 0x0AC : MEMTIMECOH[0] +//00000300 // 0x0B0 : MEMTIMECOH[1] +//2F222200 // 0x0B4 : MEMTIMECAH[0] +//00000300 // 0x0B8 : MEMTIMECAH[1] +//00000000 // 0x0BC : MEMBURST +//00000000 // 0x0C0 : Reserved +//00005555 // 0x0C4 : MEMWAIT + +//------------------------------------------------------------------------------ +// Reserved : +//------------------------------------------------------------------------------ +C000A0E4 // 0x0C8 : GPIOD ALTH +55554000 // 0x0CC : GPIOD[31:23] = { SA[8], SD[15:8] } +C000A120 // 0x0D0 : GPIOE ALTL +00055555 // 0x0D4 : GPIOE[ 9: 0] = { SA[18:9] } +00000000 // 0x0D8 +00000000 // 0x0DC +00000000 // 0x0E0 +00000000 // 0x0E4 +00000000 // 0x0E8 +00000000 // 0x0EC +00000000 // 0x0F0 +00000000 // 0x0F4 +00000000 // 0x0F8 +00000000 // 0x0FC +00000000 // 0x100 +00000000 // 0x104 +00000000 // 0x108 +00000000 // 0x10C +00000000 // 0x110 +00000000 // 0x114 +00000000 // 0x118 +00000000 // 0x11C +00000000 // 0x120 +00000000 // 0x124 +00000000 // 0x128 +00000000 // 0x12C +00000000 // 0x130 +00000000 // 0x134 +00000000 // 0x138 +00000000 // 0x13C +00000000 // 0x140 +00000000 // 0x144 +00000000 // 0x148 +00000000 // 0x14C +00000000 // 0x150 +00000000 // 0x154 +00000000 // 0x158 +00000000 // 0x15C +00000000 // 0x160 +00000000 // 0x164 +00000000 // 0x168 +00000000 // 0x16C +00000000 // 0x170 +00000000 // 0x174 +00000000 // 0x178 +00000000 // 0x17C +00000000 // 0x180 +00000000 // 0x184 +00000000 // 0x188 +00000000 // 0x18C +00000000 // 0x190 +00000000 // 0x194 +00000000 // 0x198 +00000000 // 0x19C +00000000 // 0x1A0 +00000000 // 0x1A4 +00000000 // 0x1A8 +00000000 // 0x1AC +00000000 // 0x1B0 +00000000 // 0x1B4 +00000000 // 0x1B8 +00000000 // 0x1BC +00000000 // 0x1C0 +00000000 // 0x1C4 +00000000 // 0x1C8 +00000000 // 0x1CC +00000000 // 0x1D0 +00000000 // 0x1D4 +00000000 // 0x1D8 +00000000 // 0x1DC +00000000 // 0x1E0 +00000000 // 0x1E4 +00000000 // 0x1E8 +00000000 // 0x1EC +00000000 // 0x1F0 +00000000 // 0x1F4 +00000000 // 0x1F8 +00000000 // 0x1FC diff --git a/README.md b/README.md new file mode 100644 index 0000000..5348265 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +Webconn에서 사용하는 tools + diff --git a/usb-downloader b/usb-downloader new file mode 100755 index 0000000000000000000000000000000000000000..b00a765c353752a65dc84fd75ac44f0edbcf5e66 GIT binary patch literal 38421 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 Kr}?XM_J0ATI7ssV literal 0 HcmV?d00001