Files
kunlun/tools/bee_gdbinit
2024-09-28 14:37:24 +08:00

777 lines
13 KiB
Plaintext

# 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
define fpga_ver
x 0xa6048
end
define dmem_usage
end
define ana_read_gain
set *0x51c00180=1
x/w 0x51c0017c
set *0x51c00180=25
x/w 0x51c0017c
set *0x51c00180=41
x/w 0x51c0017c
end
define ana_read
set *0x51c00180=$arg0*4+1
x/w 0x51c0017c
x/b 0x51c00181
end
define ana_write
set $addr = $arg0
set $value = $arg1
set $mask = $arg2
set *0x51c00178=$mask
set *0x51c00174=$value
set *0x51c00180=$addr*4+3
end
define dump_all
set $phy_reg=0x51800000
set $phy_tx_reg=0x51900000
set $phy_rxtd_reg=0x51a00000
set $phy_rxfd_reg=0x51b00000
set $phy_dfe_reg=0x51c00000
set $mac_sys_reg=0x51000000
set $rgf_rx_reg=0x51000c00
set $ahb_reg=0x50000000
set $apb_reg=0x44000000
set $clk_reg=0x44009000
set $start=0
set $size=0x700/4
set $end=$size
set logging file phy_reg_dump.txt
set logging on
while $start < $end
x $phy_reg+$start*4
set $start++
end
set logging off
set logging file phy_tx_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $phy_tx_reg+$start*4
set $start++
end
set logging off
set logging file phy_rxtd_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $phy_rxtd_reg+$start*4
set $start++
end
set logging off
set logging file phy_rx_fd_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $phy_rxfd_reg+$start*4
set $start++
end
set logging off
set logging file phy_dfe_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $phy_dfe_reg+$start*4
set $start++
end
set logging off
set logging file mac_sys_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $mac_sys_reg+$start*4
set $start++
end
set logging off
set logging file rgf_rx_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $rgf_rx_reg+$start*4
set $start++
end
set logging off
set logging file ahb_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $ahb_reg+$start*4
set $start++
end
set logging off
set logging file apb_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $apb_reg+$start*4
set $start++
end
set logging off
set logging file clk_reg_dump.txt
set logging on
set $start=0
while $start < $end
x $clk_reg+$start*4
set $start++
end
set logging off
# reset fpga
define resetfpga
set *0x00100000=0x6f
set *0x50000004=0xffffffff
end
# Run to appstart and load app
define loadfw
monitor soft_reset_halt
disable_watchdog
load
set_cpu_freq_150
set $sp = &__StackTop
#set $pc = __Vectors[1]
end
#dump uart register
define dump_uart
p *(struct pl011_regs*)0x44001000
p *(struct pl011_regs*)0x44005000
end
define uart_info
p g_uart_info
end
#dump intc register
define dump_intc
p *(struct intc_regs*)0x44004000
end
#dump apb register
define dump_apb
p *(struct apb_regs*)0x44000000
end
#dump gptimer register
define dump_gptmr
p *(struct gpmtr_regs*)0x44003000
end
define cache_disable
set *0x02000028 &= ~(0x1e0000)
set *0x0200002c |= (0x1e0000)
end
define map_flash_core
set *0x4400703c |= 0x30
set *0x44007098 |= 0x30
set *0x44007038 |= 0x30
set *0x44007064 |= 0x30
set *0x44007068 |= 0x30
set *0x44007040 |= 0x30
set *0x4400001c |= 0x4
set *0x44020010 |= 0x1000
set *0x44020014 |= 0x1000
set *0x44020018 |= 0x1000
set *0x4402001c |= 0x1000
end
define map_flash_gpio_ver14
# config pin 23-28 select FUNCTION0
set *0x44007080=0
set *0x44007084=0
set *0x44007088=0
set *0x4400708c=0
set *0x44007090=0
set *0x44007094=0
# enable gpio matrix
set *0x4400001c=0x4
# config gpio matrix in
# SFC INID 4-7 => GPIO 25-28
set *0x44020010=25
set *0x44020014=26
set *0x44020018=27
set *0x4402001c=28
#config gpio matrix out
# SFC OUTID 6-11 => GPIO 25-28
set *0x4402045c=0x6
set *0x44020460=0x7
set *0x44020464=0x8
set *0x44020468=0x9
set *0x4402046c=10
set *0x44020470=11
end
define map_uart2_gpio_mtx
set *0x44007040=0
set *0x44007044=0
set *0x4400001c=0x4
set *0x44020024=0x1000
set *0x4402002c=0x8
set *0x440200f8=15
end
define map_uart2_gpio_ver14
set *0x44007040=0
set *0x44007044=0
set *0x4400001c |= 0x4
set *0x44020024 |= 0x1000
set *0x4402002c=0x8
set *0x44020464=15
end
define map_psram_core_def
set *0x4400001c |= 0x4
set *0x44020000 |= 0x1000
set *0x44020004 |= 0x1000
set *0x44020008 |= 0x1000
set *0x4402000c |= 0x1000
end
define set_cache_buffer_mode
set *0x5000000c=0x10000
set *0x50000008=0x00090010
set *0x50000004=0xe
end
define cache_qspi_enable
set *0x50000004=0x2001A
set *0x50000008=0x90004
# modify
set *0x52000188=0x03057a75
set *0x5200018c=0x100
set *0x52000190=0x08180000
# dual
#set *0x52000188=0x3b057a75
#set *0x5200018c=0x102
#set *0x52000190=0x08180008
#quad
#set *0x52000188=0xeb057a75
#set *0x5200018c=0x115
#set *0x52000190=0x08060204
set *0x52000194=0x100
set *0x52000198=0x08000000
set *0x5200019c=0x100
set *0x520001a0=0x08000000
set *0x520001a4=0x100
set *0x520001a8=0x08000000
#set *0x52000130=0x3
# set cache quad
#set *0x5200020c=0x102
set *0x5200020c=0x1102
set *0x52000208=0x35000000
set *0x52000204=0x80000000
set *0x50000004=0x20002
set *0x50000008=0x9001C
end
define enable_emc
set *0x02000020 |= 0x20
set *0x02000024 |= 0x20
set *0x02000024 &= ~(0x20)
set *0x02000028 |= 0x200
set *0x0200002c |= 0x200
set *0x0200002c &= ~(0x200)
end
define init_flash
set *0x61000140=0x2000
#set *0x61000188=0x03057a75
#set *0x6100018c=0x100
#set *0x61000190=0x08180000
set *0x52000188=0xeb057a75
set *0x5200018c=0x115
set *0x52000190=0x08060204
set *0x61000194=0x100
set *0x61000198=0x08000000
set *0x6100019c=0x100
set *0x610001a0=0x08000000
set *0x610001a4=0x100
set *0x610001a8=0x08000000
end
define psram_qpi_mode
set *0x0150020c=0x1102
set *0x01500210=0x32
set *0x01500208=0x35000000
set *0x01500204=0x80000000
end
define psram_qpi_mode_low
set *0x0150020c=0x1102
set *0x01500210=0x10
set *0x01500208=0x35000000
set *0x01500204=0x80000000
end
define psram_spi_mode
set *0x6100020c=0x1000
set *0x61000208=0xf5000000
set *0x61000204=0x80000000
set *0x6100020c=0x0000
end
define space_cache
set $val = $arg0
set *0x04C00044 = $val
set *0x04C10044 = $val
set *0x04C20044 = $val
set *0x04C30044 = $val
end
define enable_cache
set *0x02000028 = 0x1e0000
set *0x0200002c &= ~(0x1e0000)
end
define cache_cfg_qpi_ver14
enable_emc
#init_flash
psram_qpi_mode
enable_cache
space_cache 0x44
end
define cache_cfg_qpi_ver14_low
enable_emc
#init_flash
psram_qpi_mode_low
enable_cache
space_cache 0x44
end
define cache_cfg_spi_ver14
enable_emc
psram_spi_mode
init_flash
enable_cache
space_cache 0x44
end
define loadfirmware
monitor soft_reset_halt
cache_disable
map_flash_gpio_mtx
map_psram_core_def
map_uart2_gpio_mtx
cache_qspi_enable
load
end
define disable_watchdog
set *0x02000010 |= 0x100
set *0x04900010 |= 0x2
set *0x05c0f080 = 0x57444750
set *0x05c0f008 = 0
set *0x05c0f080 = 0
set *0x0240e080 = 0x57444750
set *0x0240e008 = 0
set *0x04980080 = 0x57444750
set *0x04980008 = 0
set *0x0240e080 = 0
set *0x04980080 = 0
end
define set_cpu_freq_150
set *0x44009004=0x100
set *0x44009000=0x1
end
define set_sfc_clk_75
set *0x61000134=0x10
end
define set_smc_clk_75
set *0x61000210=0x10
end
define load_ver14_qpi
monitor soft_reset_halt
disable_watchdog
cache_disable
if $new == 1
map_flash_core
else
map_flash_gpio_ver14
end
map_psram_core_def
#map_uart2_gpio_ver14
cache_cfg_qpi_ver14
load
set_cpu_freq_150
#set_sfc_clk_75
#set_smc_clk_75
while $a0 != 0x0
set $a0=0x0
end
end
define load_ver14_spi
monitor soft_reset_halt
disable_watchdog
cache_disable
if $new == 1
map_flash_core
else
map_flash_gpio_ver14
end
map_psram_core_def
#map_uart2_gpio_ver14
cache_cfg_spi_ver14
load
set $a0=0x0
end
define snapshot
set *0x52000004=0x10101
set *0x52000008=0x1e007
end
define map_jtag_gpio_mtx
# config pin 00 - 04 select FUCNTION0
set *0x44007024=0
set *0x44007028=0
set *0x4400702c=0
set *0x44007030=0
set *0x44007034=0
# enable gpio matrix
set *0x4400001c=0x4
#in 44 - 47 => 00 01 03 04
set *0x440200b0=00
set *0x440200b4=01
set *0x440200b8=03
set *0x440200bc=04
#out 2 => 66
set *0x44020408=62
end
define map_jtag0_gpio
#config pin 12-15 45 select FUNCTION0
set *0x44007054 = 0
set *0x44007058 = 0
set *0x4400705c = 0
set *0x44007060 = 0
set *0x440070a0 = 0
# enable gpio matrix
set *0x4400001c=0x4
#in 44 TMS 12
set *0x440200b0=12
#in 45 TCK 13
set *0x440200b4=13
#in 46 TDI 15
set *0x440200b8=15
#in 47 RST 45
set *0x440200bc=45
#out 14 => 62
set *0x44020438=62
end
define print_dump_info
set trace-commands off
set $i = 0
while($i < 10)
set $dump = g_exception_dump.ra[$i]
if ($dump != 0x0)
p/a $dump
end
set $i = $i + 1
end
set trace-commands on
end
define map_dmc_psram
set *0x5522a03c = 0x15501
end
define map_emc_flash_kl2
# 48 - 53
set *0x440070c4 &= ~0x30
set *0x440070c8 &= ~0x30
set *0x440070cc &= ~0x30
set *0x440070d0 &= ~0x30
set *0x440070d4 &= ~0x30
set *0x440070d8 &= ~0x30
set *0x440070c4 |= 0x10
set *0x440070c8 |= 0x10
set *0x440070cc |= 0x10
set *0x440070d0 |= 0x10
set *0x440070d4 |= 0x10
set *0x440070d8 |= 0x10
set *0x440070dc |= 0x10
set *0x4400001c |= 0x4
set *0x44020010 |= 0x1000
set *0x44020014 |= 0x1000
set *0x44020018 |= 0x1000
set *0x4402001c |= 0x1000
end
# reg_write reg lowest_bit bit_num value
define reg_write
set $reg = $arg0
set $low = $arg1
set $cnt = $arg2
set $value = $arg3
set $tmp = *(uint32_t *)$reg
set $mask = 0
while($cnt > 0)
set $cnt--
set $mask = (($mask << 1) + 1)
end
set $mask = $mask << $low
set $tmp &= ~$mask
set $tmp |= (($value << $low) & $mask)
set *(uint32_t *)$reg = $tmp
end
define load_bee_psram
#monitor soft_reset_halt
cache_disable
cache_cfg_qpi_ver14
space_cache 0x1004
load
while $a0 != 0x0
set $a0=0x0
end
end
define load_bee_psram_low
#monitor soft_reset_halt
cache_disable
cache_cfg_qpi_ver14_low
space_cache 0x1004
load
while $a0 != 0x0
set $a0=0x0
end
end
define dvp_enable
set *0x50000008 |= 0x800
set *0x50000004 |= 0x800
set *0x50000004 &= ~0x800
end
define dvp_ram_mode
set *0x52300000 = 0x21f21
set *0x52300054 = 0x3
set *0x52300004 = 0x1cc
set *0x52300008 = 0x1
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
set *0x52300100 = 0x1
end
define dvp_ram_mode_no_force
set *0x52300000 = 0x0
set *0x52300054 = 0x3
set *0x52300004 = 0x1cc
set *0x52300008 = 0x1
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
set *0x52300100 = 0x1
set *0x52300000 = 0x01f01
end
define dvp_ram_mode_crop
# dvp data to psram address
set *0x52300018 = 0x00000
set *0x5230010c = 0x100000
set *0x52300000 = 0x0
set *0x52300054 = 0x0
set *0x52300004 = 0x11cc
#set *0x52300008 = 0x1
#set *0x5230000c = 0xff
#set *0x52300010 = 0x02cf04ff
set *0x52300008 = 0x1
set *0x5230000c = 0x1
set *0x52300010 = 0x02cf0400
set *0x52300014 = 0x04000000
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300000 = 0x01f33
end
define dvp_ram_mode_no_crop
# dvp data to psram address
set *0x52300018 = 0x00000
set *0x5230010c = 0x1000000
set *0x52300000 = 0x0
set *0x52300054 = 0x0
set *0x52300004 = 0x11cc
set *0x52300008 = 0x1
set *0x5230000c = 0x1
set *0x52300010 = 0x02cf0400
set *0x52300014 = 0x05000000
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300000 = 0x01f31
end
define dvp_bina_mode
set *0x52300000 = 0x021f21
set *0x52300054 = 0x5
set *0x52300004 = 0x1cc
set *0x52300008 = 0x1
#set *0x52300024 = 720
#set *0x52300028 = 1280
set *0x52300024 = 720
set *0x52300028 = 1024
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
end
define dvp_bina_mode_no_force
set *0x52300000 = 0x0
set *0x52300054 = 0x5
set *0x52300004 = 0x1cc
set *0x52300008 = 0x1
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
set *0x52300000 = 0x001f21
end
define dvp_bina_mode_auto
set *0x52300000 = 0x0
set *0x52300054 = 0x7
set *0x52300004 = 0x11cc
set *0x52300008 = 0x1
set *0x52300024 = 720
set *0x52300028 = 1280
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
set *0x52300000 = 0x001f21
end
# crop 1024 * 720
define dvp_bina_mode_crop
set *0x52300000 = 0x0
# dvp data to psram address
set *0x52300018 = 0x10000
set *0x52300054 = 0x7
set *0x52300004 = 0x11cc
set *0x52300008 = 0x1
set *0x5230000c = 0xff
#set *0x5230000c = 0x0
set *0x52300010 = 0x02d004ff
#set *0x52300010 = 0x02d00400
set *0x52300024 = 720
#set *0x52300028 = 1280
set *0x52300028 = 1024
set *0x52300060 = 0x1
set *0x52300058 = 0x72105
set *0x523000b4 = 0x72ff
set *0x52300000 = 0x001f23
end
define fake_data
set $addr = $arg0
set $size = $arg1
set $offset = $arg2
set $i = 0
while $size > 0
set *$addr = $i
set $i = $i + 0x11111111 + $offset
if ($i == 0xffffffff)
set $i = 0x0
end
set $addr = $addr + 4
set $size = $size - 1
end
end
define clear_cache
set *0x04c00000 |= 0x4
set *0x04c10000 |= 0x4
set *0x04c20000 |= 0x4
set *0x04c30000 |= 0x4
end
define cpu1_enable
set $start_pc = $arg0
set *0x02000124 = $start_pc
set *0x02000028 |= 0x2
set *0x0200002c |= 0x2
set *0x0200002c &= ~0x2
set *0x0200012c |= 0x4
end
define nfc_vm
target remote localhost:3333
set *0x02000104 |= 0x1b
disable_watchdog
end
define vm
target remote localhost:3333
disable_watchdog
end
define bee_vm
vm
monitor reset halt
kill
shell sleep 0.001
vm
end
define bee_target_remote
target remote $arg0
monitor reset halt
kill
shell sleep 0.001
target remote $arg0
disable_watchdog
end