# These are some useful functions to add to your ~/.xt-gdbinit file # Standard gdb debug settings set history filename ~/.gdb_history set history save on set print pretty on set print object on set print vtbl on set pagination off set output-radix 16 set $new=1 ######## mtd function ######## define emc_enable # disable emc set *(0x50019000 + 0x08) &= ~(1 << 11) # reset emc set *(0x50019000 + 0x04) |= (1 << 11) set *(0x50019000 + 0x04) &= ~(1 << 11) # enable emc set *(0x50019000 + 0x08) |= (1 << 11) end define mtd_io_share_disable end define mtd_io_share_enable end define smc_init # set qspi mode set *(0x58080200 + 0x0c) = 0x01201102 set *(0x58080200 + 0x3c) |= 0x11 # enable smc and cfg clk set *(0x58080200 + 0x10) |= 0x10 end define psram_init # enter qpi mode set *(0x58080200 + 0x08) = (0x35 << 24) + 0x00 set *(0x58080200 + 0x04) &= 0xFE00FFFC set *(0x58080200 + 0x0c) &= ~(1 << 12) set *(0x58080200 + 0x04) |= (1 << 31) end define sfc_init end define flash_init end define cache_enable # cache init step: disable, reset, enable, set space # icache0 set *(0x50019000 + 0x04) |= (1 << 4) set *(0x50019000 + 0x04) &= ~(1 << 4) set *(0x50019000 + 0x08) |= (1 << 4) set *(0x58000000 + 0x44) = 0x0804 while !((*(0x58000000 + 0x00)) & (1 << 6)) end # icache1 set *(0x50019000 + 0x04) |= (1 << 5) set *(0x50019000 + 0x04) &= ~(1 << 5) set *(0x50019000 + 0x08) |= (1 << 5) set *(0x58000000 + 0x44) = 0x0804 while !((*(0x58010000 + 0x00)) & (1 << 6)) end # icache2 set *(0x50019000 + 0x04) |= (1 << 6) set *(0x50019000 + 0x04) &= ~(1 << 6) set *(0x50019000 + 0x08) |= (1 << 6) set *(0x58000000 + 0x44) = 0x0804 while !((*(0x58020000 + 0x00)) & (1 << 6)) end # dcache0 set *(0x50019000 + 0x04) |= (1 << 7) set *(0x50019000 + 0x04) &= ~(1 << 7) set *(0x50019000 + 0x08) |= (1 << 7) set *(0x58030000 + 0x44) = 0x0804 while !((*(0x58030000 + 0x00)) & (1 << 6)) end # dcache1 set *(0x50019000 + 0x04) |= (1 << 8) set *(0x50019000 + 0x04) &= ~(1 << 8) set *(0x50019000 + 0x08) |= (1 << 8) set *(0x58030000 + 0x44) = 0x0804 while !((*(0x58040000 + 0x00)) & (1 << 6)) end end define mtd_init emc_enable psram_init smc_init cache_enable sfc_init flash_init end define disable_watchdog set *0x40040080 = 0x57444750 set *0x40040008 = 0 set *0x40040080 = 0 set *0x40041080 = 0x57444750 set *0x40041008 = 0 set *0x40041080 = 0 set *0x40042080 = 0x57444750 set *0x40042008 = 0 set *0x40042080 = 0 end define disable_tick_int # disable tick int0 set *0x40030054 = 0x0 # clear tick int0 set *0x40030058 = 0x1 # disable tick int1 set *0x40031054 = 0x0 # clear tick int1 set *0x40031058 = 0x1 # disable tick int2 set *0x40032054 = 0x0 # clear tick int2 set *0x40032058 = 0x1 end define reset_chip set *0x4000003c = 0x125A3410 set *0x40000038 = 0x1 end define ram_test set $offset = 0 set $addr = 0 set $value = 0 set $value_r = 0 while $offset < 0x70000 set $addr = 0x10000000 + $offset * 4 #p $addr set $value = ($offset << 8) | $offset #p $value set *$addr = $value set $value_r = *(uint32_t *)$addr #p *(uint32_t *)$addr #p $value_r if $value_r != $value p $value p $value_r end set $offset = $offset + 4 if $offset % 0x100 == 0 p $offset end end end ######## system function ######## define vm target remote localhost:3333 disable_tick_int disable_watchdog end define vm1 target remote localhost:3334 disable_tick_int disable_watchdog end