echo Setting up the environment for debugging gdb.\n

set complaints 1
set endian big

dir .
set prompt (ns9xxx) 

# listening for commands on this PC's tcp port 2331
target remote localhost:2331
monitor speed 1000

# Set target to write short/long values in big-endian
monitor endian big

# Set GDB in big-endian 
set endian big

#
# We support 3 different memory configurations.  32 Megs,
# 16 Megs, and 8 Megs.  First try the 32 Megabyte setup.
#
# Reset the chip to get to a known state.
monitor reset 1 0

monitor long 0xA0700000= 0x00000001  
monitor long 0xA0700024= 0x00000006  
monitor long 0xA0700028= 0x00000001  
monitor long 0xA0700030= 0x00000001  
monitor long 0xA0700034= 0x00000003  
monitor long 0xA0700038= 0x00000005  
monitor long 0xA070003C= 0x00000000  
monitor long 0xA0700040= 0x00000004  
monitor long 0xA0700044= 0x00000001  
monitor long 0xA0700048= 0x00000005  
monitor long 0xA070004C= 0x00000005  
monitor long 0xA0700054= 0x00000001  
monitor long 0xA0700058= 0x00000001  
monitor long 0xA0700100= 0x00000680  
monitor long 0xA0700120= 0x00000680  
monitor long 0xA0700140= 0x00000680  
monitor long 0xA0700160= 0x00000680  

monitor long 0xA0700104= 0x00000202  
monitor long 0xA0700124= 0x00000202  
monitor long 0xA0700144= 0x00000202  
monitor long 0xA0700164= 0x00000202  

monitor long 0xA0700020= 0x00000103  

monitor long 0xA0700024= 0x00000001  
#
# Add some dummy writes to give the SDRAM time to settle, it needs two
# AHB clock cycles, here we poke in the debugger flag, this lets
# the software know that we are in the debugger
monitor long 0xA0900000= 0x00000002
monitor long 0xA0900000= 0x00000002
monitor long 0xA0900000= 0x00000002
monitor long 0xA0900000= 0x00000002
monitor long 0xA0900000= 0x00000002
#
monitor long 0xA0900000 
monitor long 0xA0900000 
monitor long 0xA0900000 
monitor long 0xA0900000 
monitor long 0xA0900000 
#
monitor long 0xA0700024 = 0x00000049 
monitor long 0xA0700020 = 0x00000083 
#
# Next we perform a read of RAM.
# mw = move word.
monitor long 0x00023000
#
monitor long 0xA0700020 = 0x00000003   
monitor long 0xA0700100 = 0x00080680   
monitor long 0xA0700120 = 0x00080680   
monitor long 0xA0700140 = 0x00080680   
monitor long 0xA0700160 = 0x00080680   

#
# Now let's see if we really have 32 Megs of RAM
#                               
set *0x0=0
set *0x1000000=0x1
if (*0x0 == *0x1000000)
    #
    # If we ended up here, then the test for 32 Megs of 
    # memory failed.  So, let's try the 16 Meg configuration.
    #
    # Reset the chip to get to a known state.
    monitor reset 1 0
    
    monitor long 0xA0700000= 0x00000001  
    monitor long 0xA0700024= 0x00000006  
    monitor long 0xA0700028= 0x00000001  
    monitor long 0xA0700030= 0x00000001  
    monitor long 0xA0700034= 0x00000003  
    monitor long 0xA0700038= 0x00000005  
    monitor long 0xA070003C= 0x00000000  
    monitor long 0xA0700040= 0x00000004  
    monitor long 0xA0700044= 0x00000001  
    monitor long 0xA0700048= 0x00000005  
    monitor long 0xA070004C= 0x00000005  
    monitor long 0xA0700054= 0x00000001  
    monitor long 0xA0700058= 0x00000001  
    monitor long 0xA0700100= 0x00000480  
    monitor long 0xA0700120= 0x00000480  
    monitor long 0xA0700140= 0x00000480  
    monitor long 0xA0700160= 0x00000480  
    
    monitor long 0xA0700104= 0x00000202  
    monitor long 0xA0700124= 0x00000202  
    monitor long 0xA0700144= 0x00000202  
    monitor long 0xA0700164= 0x00000202  
    
    monitor long 0xA0700020= 0x00000103  
    
    monitor long 0xA0700024= 0x00000001  
    #
    # Add some dummy writes to give the SDRAM time to settle, it needs two
    # AHB clock cycles, here we poke in the debugger flag, this lets
    # the software know that we are in the debugger
    monitor long 0xA0900000= 0x00000002
    monitor long 0xA0900000= 0x00000002
    monitor long 0xA0900000= 0x00000002
    monitor long 0xA0900000= 0x00000002
    monitor long 0xA0900000= 0x00000002
    #
    monitor long 0xA0900000 
    monitor long 0xA0900000 
    monitor long 0xA0900000 
    monitor long 0xA0900000 
    monitor long 0xA0900000 
    #
    monitor long 0xA0700024 = 0x00000049 
    monitor long 0xA0700020 = 0x00000083 
    #
    # Next we perform a read of RAM.
    # mw = move word.
    monitor long 0x00023000
    #
    monitor long 0xA0700020 = 0x00000003   
    #monitor long 0xA0700100 = 0x00080280   
    #monitor long 0xA0700120 = 0x00080280   
    #monitor long 0xA0700140 = 0x00080280   
    #monitor long 0xA0700160 = 0x00080280   
    monitor long 0xA0700100 = 0x00080480   
    monitor long 0xA0700120 = 0x00080480   
    monitor long 0xA0700140 = 0x00080480   
    monitor long 0xA0700160 = 0x00080480   
    
    #
    # Now test memory and see if we really have 16 megs of RAM.
    # The 16 Meg chip has one more column bit than then 8 Meg
    # chip, so if we have an 8 Meg chip, then it will alias memory
    # at address 0x200 to address 0x0.  Let's see if that is 
    # happenning.
    #
    set *0x0=0
    set *0x200=1
    if (*0x0 == *0x200)
        # if we end up here, then we do not have 16M of SD RAM.
        # That only leaves the 8M option, so set it up.
        #
        # Reset the chip to get to a known state.
        monitor reset 1 0
        
        monitor long 0xA0700000= 0x00000001  
        monitor long 0xA0700024= 0x00000006  
        monitor long 0xA0700028= 0x00000001  
        monitor long 0xA0700030= 0x00000001  
        monitor long 0xA0700034= 0x00000003  
        monitor long 0xA0700038= 0x00000005  
        monitor long 0xA070003C= 0x00000000  
        monitor long 0xA0700040= 0x00000004  
        monitor long 0xA0700044= 0x00000001  
        monitor long 0xA0700048= 0x00000005  
        monitor long 0xA070004C= 0x00000005  
        monitor long 0xA0700054= 0x00000001  
        monitor long 0xA0700058= 0x00000001  
        monitor long 0xA0700100= 0x00000280  
        monitor long 0xA0700120= 0x00000280  
        monitor long 0xA0700140= 0x00000280  
        monitor long 0xA0700160= 0x00000280  
        
        monitor long 0xA0700104= 0x00000202  
        monitor long 0xA0700124= 0x00000202  
        monitor long 0xA0700144= 0x00000202  
        monitor long 0xA0700164= 0x00000202  
        
        monitor long 0xA0700020= 0x00000103  
        
        monitor long 0xA0700024= 0x00000001  
        #
        # Add some dummy writes to give the SDRAM time to settle, it needs two
        # AHB clock cycles, here we poke in the debugger flag, this lets
        # the software know that we are in the debugger
        monitor long 0xA0900000= 0x00000002
        monitor long 0xA0900000= 0x00000002
        monitor long 0xA0900000= 0x00000002
        monitor long 0xA0900000= 0x00000002
        monitor long 0xA0900000= 0x00000002
        #
        monitor long 0xA0900000 
        monitor long 0xA0900000 
        monitor long 0xA0900000 
        monitor long 0xA0900000 
        monitor long 0xA0900000 
        #
        monitor long 0xA0700024 = 0x00000049 
        monitor long 0xA0700020 = 0x00000083 
        #
        # Next we perform a read of RAM.
        # mw = move word.
        monitor long 0x00011800
        #
        monitor long 0xA0700020 = 0x00000003   
        monitor long 0xA0700100 = 0x00080280   
        monitor long 0xA0700120 = 0x00080280   
        monitor long 0xA0700140 = 0x00080280   
        monitor long 0xA0700160 = 0x00080280   
    end
end

# set CPU speed doubling bit
monitor long 0xa090017c = 0x0201683f

# Set the processor mode
monitor reg cpsr = 0xd3
monitor reg cpsr

# Setup GDB FOR FASTER DOWNLOADS
set remote memory-write-packet-size 1024
set remote memory-write-packet-size fixed
monitor speed 15000

# Load the program executable called "image.elf"
# load image.elf
# Load the symbols for the program.

load  ./image.elf 
# set some magic values in register to tell software not to reinitialize and
# test RAM because we are running in a debugger
set $r6=0xcafebabe
set $r7=0xcafebabe
set $r8=1

# set SVC mode with interrupts disabled
#monitor reg cpsr = 0xd3
#monitor reg cpsr
source C:/netos75/debugger_files/.gdbinit.threadx
source C:/netos75/debugger_files/.gdbinit.eclipse
source C:/netos75/debugger_files/.gdbinit.ns9215
source C:/netos75/debugger_files/.gdbinit.treck
