mirror of
https://github.com/pvvx/RTL00_HelloWorld.git
synced 2024-11-21 12:04:16 +00:00
198 lines
5.8 KiB
Text
198 lines
5.8 KiB
Text
# GDB script for loading ram.bin process
|
|
|
|
#===============================================================================
|
|
#set GDB connection
|
|
set remotetimeout 100000
|
|
target remote :10000
|
|
|
|
#===============================================================================
|
|
#set file path
|
|
set $BINFILE = "./application/Debug/bin/ram_all.bin"
|
|
|
|
#===============================================================================
|
|
#Message display setting
|
|
#disable all messages
|
|
|
|
set verbose off
|
|
set complaints 0
|
|
set confirm off
|
|
set exec-done-display off
|
|
show exec-done-display
|
|
set trace-commands off
|
|
#set debug aix-thread off
|
|
#set debug dwarf2-die 0
|
|
set debug displaced off
|
|
set debug expression 0
|
|
set debug frame 0
|
|
set debug infrun 0
|
|
set debug observer 0
|
|
set debug overload 0
|
|
set debugvarobj 0
|
|
set pagination off
|
|
set print address off
|
|
set print symbol-filename off
|
|
set print symbol off
|
|
set print pretty off
|
|
set print object off
|
|
#set debug notification off
|
|
set debug parser off
|
|
set debug remote 0
|
|
|
|
#===============================================================================
|
|
#set JTAG and external SRAM
|
|
monitor reset init
|
|
monitor halt
|
|
monitor sleep 20
|
|
#===============================================================================
|
|
#Variables declaration (1)
|
|
#binary file size
|
|
set $RamFileSize = 0x0000
|
|
source fwsize.gdb
|
|
printf "-------------------------------\n"
|
|
printf "RamFileSize: %x\n",$RamFileSize
|
|
printf "-------------------------------\n"
|
|
|
|
#===============================================================================
|
|
set $FLASHDATBUFSIZE = 0x800
|
|
|
|
#===============================================================================
|
|
#define PERI_ON_BASE 0x40000000
|
|
set $PERI_ON_BASE = 0x40000000
|
|
#define REG_SOC_PERI_FUNC0_EN 0x0218
|
|
set $REG_SOC_PERI_FUNC0_EN = 0x0210
|
|
|
|
#define SPI_FLASH_BASE 0x4000000
|
|
set $SPI_FLASH_BASE = 0x98000000
|
|
|
|
#------------------------------------------------------------------
|
|
set $Temp = 0x0
|
|
|
|
#===============================================================================
|
|
#Load flash download file
|
|
file ../../../component/soc/realtek/8195a/misc/gcc_utility/target_NORMAL.axf
|
|
|
|
#Load the file
|
|
lo
|
|
|
|
printf "Load flash controller.\n"
|
|
#===============================================================================
|
|
#Set for executing flash controller funciton
|
|
set $Temp = {int}($PERI_ON_BASE+$REG_SOC_PERI_FUNC0_EN)
|
|
p /x $Temp
|
|
|
|
set $Temp = ($Temp | (0x01 << 27))
|
|
p /x $Temp
|
|
|
|
set {int}($PERI_ON_BASE+$REG_SOC_PERI_FUNC0_EN) = $Temp
|
|
printf "....\n"
|
|
printf "wakeup bit(%x):%x\n", ($PERI_ON_BASE+$REG_SOC_PERI_FUNC0_EN), {int}($PERI_ON_BASE+$REG_SOC_PERI_FUNC0_EN)
|
|
#===============================================================================
|
|
#Direct the startup wake function to flash program function
|
|
#the function pointer address
|
|
#set $testpointer = 0x200006b4
|
|
#set $testpointer2 = 0x200006b8
|
|
#set $FuntionPointer = 0x200006c4
|
|
#set $FPTemp = 0x200a08e9
|
|
#set {int}($FuntionPointer) = $FPTemp
|
|
#printf "testpointer(%x):%x\n", $testpointer, {int}$testpointer
|
|
#printf "testpointer2(%x):%x\n", $testpointer2, {int}$testpointer2
|
|
#printf "FuntionPointer(%x):%x\n", $FuntionPointer, {int}$FuntionPointer
|
|
|
|
#===============================================================================
|
|
#Load file
|
|
# restore filename [binary] bias start end
|
|
# Restore the contents of file filename into memory.
|
|
# The restore command can automatically recognize any known bfd file format, except for raw binary.
|
|
# To restore a raw binary file you must specify the optional keyword binary after the filename.
|
|
#===============================================================================
|
|
|
|
set $LoopNum = ($RamFileSize / $FLASHDATBUFSIZE)
|
|
printf "LoopNum = %x\n", $LoopNum
|
|
set $TailSize = ($RamFileSize % $FLASHDATBUFSIZE)
|
|
printf "TailSize = %x\n", $TailSize
|
|
|
|
printf "global variables\n"
|
|
|
|
set $FLASHDATSRC = 0x0
|
|
set $FILESTARTADDR = 0X0
|
|
set $FILEENDADDR = $FILESTARTADDR + $FLASHDATBUFSIZE
|
|
|
|
#b RtlFlashProgram:StartOfFlashBlockWrite
|
|
b rtl_flash_download.c:489
|
|
b rtl_flash_download.c:524
|
|
#b Rtl_flash_control.c:RtlFlashProgram
|
|
|
|
#continue to 489
|
|
c
|
|
|
|
# Mode 0: erase full chip, Mode 1: skip calibration section and erase to firmware size
|
|
set EraseMode=1
|
|
print EraseMode
|
|
set FirmwareSize=$RamFileSize
|
|
print FirmwareSize
|
|
|
|
#continue to 524
|
|
c
|
|
|
|
#printf "...\n"
|
|
set $FLASHDATSRC = FlashDatSrc
|
|
printf "FlashDatSrc:%x\n", $FLASHDATSRC
|
|
|
|
printf "FlashBlockWriteSize "
|
|
set FlashBlockWriteSize = $FLASHDATBUFSIZE
|
|
#p /x FlashBlockWriteSize
|
|
printf "FlashBlockWriteSize:%x\n", FlashBlockWriteSize
|
|
|
|
printf "FlashAddrForWrite"
|
|
set FlashAddrForWrite = 0x0
|
|
|
|
|
|
|
|
printf "Flash write start...\n"
|
|
set $LoopCnt = 0
|
|
while ($LoopCnt < $LoopNum)
|
|
p /x FlashAddrForWrite
|
|
restore ./application/Debug/bin/ram_all.bin binary ($FLASHDATSRC-$FILESTARTADDR) $FILESTARTADDR $FILEENDADDR
|
|
c
|
|
|
|
printf "FILEENDADDR"
|
|
p /x $FILEENDADDR
|
|
set FlashBlockWriteSize = $FLASHDATBUFSIZE
|
|
set FlashAddrForWrite = $FILEENDADDR
|
|
set $FILESTARTADDR = $FILEENDADDR
|
|
set $FILEENDADDR = $FILESTARTADDR + $FLASHDATBUFSIZE
|
|
|
|
set $LoopCnt = $LoopCnt + 0x01
|
|
end
|
|
|
|
#set FlashBlockWriteSize = $FLASHDATBUFSIZE
|
|
#set FlashAddrForWrite = $FILEENDADDR
|
|
#set $FILESTARTADDR = $FILEENDADDR
|
|
set $FILEENDADDR = $FILESTARTADDR + $TailSize
|
|
restore ./application/Debug/bin/ram_all.bin binary ($FLASHDATSRC-$FILESTARTADDR) $FILESTARTADDR $FILEENDADDR
|
|
c
|
|
|
|
#Set complete flas
|
|
set FlashWriteComplete = 0x1
|
|
|
|
printf "dump for check\n"
|
|
|
|
set $LoopCnt = 0
|
|
set $dumpaddr = 0
|
|
|
|
set $dumpstartaddr = $SPI_FLASH_BASE
|
|
set $dumpendaddr = $SPI_FLASH_BASE + $RamFileSize
|
|
printf "start addr of dumping"
|
|
p /x $dumpstartaddr
|
|
printf "end addr of dumping"
|
|
p /x $dumpendaddr
|
|
dump binary memory ./application/Debug/bin/dump.bin $dumpstartaddr $dumpendaddr
|
|
|
|
|
|
delete
|
|
b rtl_flash_download.c:556
|
|
c
|
|
|
|
quit
|
|
#===============================================================================
|
|
|