Big update for firmware version v2.3.1

this is the verion getting flashed on all v2.0N NESmaker kits
v2.3.0 worked for basic functions, but was never shipped

Majority of effort revolved around testing mapper30 boards with the
smaller v2.0N INLretro with the NES connector alone for NESmaker kits.

added linear feedback shift register for test stream data generated
locally on the device.  I'm not 100% sure if this is any faster than
pushing the actual data via USB though.. :/  It's plenty fast on the
stm32 nearly instantaneous for 32KByte.  But the AVR takes a couple
sec..

Created "stuff" dictionary for things like that were I just want to add
small things and don't want to bother with a whole new dictionary.

Added file verification to the host with files.lua

Have some nes flash algos return post-written data so calling function
can decide if want to retry, fail, etc.

Changed host dictionary calls to assert instead of error because it
really shouldn't continue.  I didn't see an error when sending opcode to
wrong dict and caused head banging..

fwupdate permits bytes to be skipped, or force the update.  Found that
the fwupdater got assigned different addresses of ram depending on what
all other ram gets allocated to the main application

Some clean up of inlretro.lua

TODO:
host learn and keep track of the connected device.
Needed for ciccom right now, or knowing whether ciccom connection
is even present..
In the end maybe ciccom is better placed in firmware, but for small
transfers of only a few bytes it kinda makes sense to keep on the host.
Pinport gets quite messy with these made up pin names when really all I
want to do is toggle a specific pin on the NES connector.  So maybe some
double mappings would actually be okay, need to rethink that..

create different flash modes that either keep going, retry, or error
depending on the goal of the flash operation.  Fanout the return value
from flash algos to all of them.

have fwupdate assigned a specific area of ram so the ram pointer doesn't
change between builds.  Okay to ignore for now.

Realized can have STM32F070C6 devices execute bootloader by erasing all
the flash or perhaps even just the first word of flash according at
AN2606.  This wouldn't work for RB devices though.  This could be done
through the bootloader dict
This commit is contained in:
Paul XPS 2018-12-06 01:07:13 -06:00
parent 542bba7583
commit e4debe5a13
49 changed files with 4789 additions and 6279 deletions

2
.gitignore vendored
View File

@ -5,7 +5,7 @@
*.d
*.swp
*.swo
*.bin
#*.bin
*.bak
*.smc
*.dropbox.attr

Binary file not shown.

View File

@ -68,8 +68,8 @@ OBJECTS=$(patsubst %.c,%.o,$(SOURCES))
ASM_SRC=$(wildcard source/asm_stm/*.s)
#all: dir shared $(BUILD)/$(PROJ).axf $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
all: dir shared $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
all: dir shared $(BUILD)/$(PROJ).axf $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
#all: dir shared $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
#build axf file output (basically elf with DWARF debug info)
# $@ is shortcut for the target, $^ is shortcut for prereqs

View File

@ -65,8 +65,8 @@ OBJECTS=$(patsubst %.c,%.o,$(SOURCES))
ASM_SRC=$(wildcard source/asm_stm/*.s)
#all: dir shared $(BUILD)/$(PROJ).axf $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
all: dir shared $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
all: dir shared $(BUILD)/$(PROJ).axf $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
#all: dir shared $(BUILD)/$(PROJ).elf $(BUILD)/$(PROJ).hex $(BUILD)/$(PROJ).bin size
#build axf file output (basically elf with DWARF debug info)
# $@ is shortcut for the target, $^ is shortcut for prereqs

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,885 +0,0 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\ccUa15vO.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (__gnu_unwind_execute)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (abort)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) (_global_impure_ptr)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (__libc_init_array)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (memcpy)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o (memset)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (raise)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) (_kill_r)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o) (__call_exitprocs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) (atexit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) (__libc_fini_array)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o) (__retarget_lock_acquire_recursive)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o) (_malloc_r)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (__malloc_lock)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (errno)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (_sbrk_r)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o) (__register_exitproc)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o) (_free_r)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (_getpid)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o) (_kill)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o) (_sbrk)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
buff3 0x14 source/buffer.o (symbol from plugin)
__lock___atexit_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
cur_buff 0x4 source/buffer.o (symbol from plugin)
__lock___arc4random_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
tdo_pin 0x1 source/jtag.o (symbol from plugin)
errno 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
pbje_status 0x1 source/jtag.o (symbol from plugin)
pbje_command 0x1 source/jtag.o (symbol from plugin)
tck_base 0x4 source/jtag.o (symbol from plugin)
tck_pin 0x1 source/jtag.o (symbol from plugin)
bank_table 0x2 source/nes.o (symbol from plugin)
addrh 0x2 source/bootload.o (symbol from plugin)
buff1 0x14 source/buffer.o (symbol from plugin)
incoming_bytes_remain
0x1 source/buffer.o (symbol from plugin)
__lock___env_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
__lock___sinit_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
pbje_cmd_update_flag
0x1 source/jtag.o (symbol from plugin)
tms_pin 0x1 source/jtag.o (symbol from plugin)
__lock___malloc_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
tdi_base 0x4 source/jtag.o (symbol from plugin)
tdo_base 0x4 source/jtag.o (symbol from plugin)
buff2 0x14 source/buffer.o (symbol from plugin)
cur_bank 0x1 source/nes.o (symbol from plugin)
addr_ptr 0x4 source/bootload.o (symbol from plugin)
tdi_pin 0x1 source/jtag.o (symbol from plugin)
buff0 0x14 source/buffer.o (symbol from plugin)
raw_bank_status 0x10 source/buffer.o (symbol from plugin)
oper_info_struct 0x20 source/operation.o (symbol from plugin)
raw_buffer16 0x200 source/buffer.o (symbol from plugin)
tms_base 0x4 source/jtag.o (symbol from plugin)
swim_base 0x4 source/swim.o (symbol from plugin)
swim_pin 0x1 source/swim.o (symbol from plugin)
__lock___at_quick_exit_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
cur_usb_load_buff 0x4 source/buffer.o (symbol from plugin)
pbje_numclk 0x1 source/jtag.o (symbol from plugin)
__lock___dd_hash_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
__lock___tz_mutex 0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
pbje_data 0x20 source/jtag.o (symbol from plugin)
__lock___sfp_recursive_mutex
0x1 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
Discarded input sections
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.text 0x00000000 0x48 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.data 0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.bss 0x00000000 0x1c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.init_array 0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.fini_array 0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.eh_frame 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
.text 0x00000000 0x78 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.extab 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.debug_frame 0x00000000 0xf4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
.debug_frame 0x00000000 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.text.exit 0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.debug_frame 0x00000000 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-exit.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
.rodata._global_impure_ptr
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.text.__libc_init_array
0x00000000 0x48 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.debug_frame 0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-init.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
.debug_frame 0x00000000 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.text.memset 0x00000000 0x9c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.debug_frame 0x00000000 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memset.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text._init_signal_r.part.0
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text._init_signal_r
0x00000000 0x1c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text._signal_r
0x00000000 0x3c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text.__sigtramp_r
0x00000000 0x50 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text.signal 0x00000000 0x18 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text._init_signal
0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text.__sigtramp
0x00000000 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.debug_frame 0x00000000 0xf8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
.debug_frame 0x00000000 0x44 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.text.startup.register_fini
0x00000000 0x18 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.init_array.00000
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.text.__call_exitprocs
0x00000000 0x118 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.data.__atexit_recursive_mutex
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.debug_frame 0x00000000 0x54 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__call_atexit.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.text.atexit 0x00000000 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.debug_frame 0x00000000 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-atexit.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.text.__libc_fini_array
0x00000000 0x34 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.debug_frame 0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-fini.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_init
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_init_recursive
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_close
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_close_recursive
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_acquire
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_acquire_recursive
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_try_acquire
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_try_acquire_recursive
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_release
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text.__retarget_lock_release_recursive
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.debug_frame 0x00000000 0xb0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
COMMON 0x00000000 0x21 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-lock.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.text._malloc_r
0x00000000 0x554 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.bss.__malloc_current_mallinfo
0x00000000 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.bss.__malloc_max_sbrked_mem
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.bss.__malloc_max_total_mem
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.bss.__malloc_top_pad
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.data.__malloc_av_
0x00000000 0x408 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.data.__malloc_sbrk_base
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.data.__malloc_trim_threshold
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.debug_frame 0x00000000 0x3c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mallocr.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.text.__malloc_lock
0x00000000 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.text.__malloc_unlock
0x00000000 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.debug_frame 0x00000000 0x40 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-mlock.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.text.cleanup_glue
0x00000000 0x1c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.text._reclaim_reent
0x00000000 0x94 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.debug_frame 0x00000000 0x48 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.text._sbrk_r 0x00000000 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.debug_frame 0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-sbrkr.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.text.__register_exitproc
0x00000000 0xf4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.debug_frame 0x00000000 0x3c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-__atexit.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.text._malloc_trim_r
0x00000000 0xa0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.text._free_r 0x00000000 0x1d4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.debug_frame 0x00000000 0x58 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-freer.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.stab 0x00000000 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.debug_frame 0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
.stab 0x00000000 0x18 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x24 (size before relaxing)
.debug_frame 0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.text._sbrk 0x00000000 0x1c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.bss.heap_end.4102
0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.debug_frame 0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(sbrk.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
.debug_frame 0x00000000 0x20 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
.eh_frame 0x00000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
.ARM.attributes
0x00000000 0x2c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
.text 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.init 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.fini 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
Memory Configuration
Name Origin Length Attributes
FLASH 0x08000000 0x00008000 xr
RAM 0x20000000 0x00001800 xrw
*default* 0x00000000 0xffffffff
Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
LOAD C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccUa15vO.o
LOAD C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc.a
END GROUP
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a
END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x4fd0
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
0x08000534 SysTick_Handler
0x08000534 PendSV_Handler
0x08000534 NMI_Handler
0x08000534 I2C1_IRQHandler
0x08000534 RCC_CRS_IRQHandler
0x08000534 SPI1_IRQHandler
0x08000534 TIM6_DAC_IRQHandler
0x08000534 USART3_4_IRQHandler
0x08000534 EXTI2_3_IRQHandler
0x08000534 I2C2_IRQHandler
0x08000534 TIM17_IRQHandler
0x08000534 CEC_CAN_IRQHandler
0x08000534 PVD_VDDIO2_IRQHandler
0x08000534 DMA1_Channel4_5_6_7_IRQHandler
0x08000534 TIM16_IRQHandler
0x08000534 TIM3_IRQHandler
0x08000534 EXTI4_15_IRQHandler
0x08000534 DMA1_Channel1_IRQHandler
0x08000534 Default_Handler
0x08000534 TIM14_IRQHandler
0x08000534 TIM7_IRQHandler
0x08000534 TIM15_IRQHandler
0x08000534 EXTI0_1_IRQHandler
0x08000534 SPI2_IRQHandler
0x08000534 SVC_Handler
0x08000534 RTC_IRQHand
0x08000534 WWDG_IRQHandler
0x08000534 TIM2_IRQHandler
0x08000534 DEF_IRQHandler
0x08000534 DMA1_Channel2_3_IRQHandler
0x08000534 USART2_IRQHandler
0x08000534 FLASH_IRQHandler
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
0x08000544 __gnu_thumb1_case_uqi
.ARM.attributes
0x08000558 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
*_thumb1_case_shi.o()
*_thumb1_case_uhi.o()
*fill* 0x08000576 0x2 ff
.text 0x08000578 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
0x08000578 __gnu_thumb1_case_uhi
.ARM.attributes
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x080006fc 0x74 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
0x00000804 . = 0x804
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1888 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*(.text*)
.text.snes_page_rd_poll.constprop.24
0x0800210c 0x7c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.23
0x08002188 0x6c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.20
0x080021f4 0x68 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.append_pairity
0x0800225c 0x1e C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.delay_us
0x0800227a 0x14 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x0800228e 0x2 ff
.text.snes_wr 0x08002290 0x60 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.snes_rd 0x080022f0 0x48 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.write_page_snes.constprop.32
0x08002338 0x194 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.snes_3v_flash_wr
0x080024cc 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.snes_5v_flash_wr
0x0800251c 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_dualport_wr
0x0800256c 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_dualport_rd
0x080025bc 0x38 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_ppu_wr
0x080025f4 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_ppu_rd
0x08002644 0x38 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x0800267c 0x44 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x080026c0 0x44 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_cpu_wr
0x08002704 0x6c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x08002770 0x84 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x080027f4 0x74 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x08002868 0x7c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nes_cpu_rd
0x080028e4 0x40 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc4_prgrom_sop_flash_wr
0x08002924 0x54 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x08002978 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x080029c8 0x48 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x08002a10 0x58 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08002a68 0x64 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08002acc 0x44 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.pbje_scan
0x08002b10 0x10c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.pbje_state_change
0x08002c1c 0x88 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.jtag_init_pbje
0x08002ca4 0xe0 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x08002d84 0xb8 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.io_reset
0x08002e3c 0x15c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.write_page_verify
0x08002f98 0x5c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.write_page
0x08002ff4 0x34 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.get_next_buff
0x08003028 0x54 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc1_wr.constprop.11
0x0800307c 0x22 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x0800309e 0x2 ff
.text.mmc1_chrrom_flash_wr
0x080030a0 0x60 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x08003100 0x50 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.swim_wotf
0x08003150 0xb4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.swim_rotf
0x08003204 0xac C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.text.startup.main
0x080032b0 0xb80 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x080032b0 main
.text 0x08003e30 0x154 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
0x08003e30 swim_xfr
.text 0x08003f84 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004240 _Unwind_GetCFA
0x08004244 __gnu_Unwind_RaiseException
0x08004298 __gnu_Unwind_ForcedUnwind
0x080042ac __gnu_Unwind_Resume
0x080042f4 __gnu_Unwind_Resume_or_Rethrow
0x08004310 _Unwind_Complete
0x08004314 _Unwind_DeleteException
0x08004324 _Unwind_VRS_Get
0x0800436c _Unwind_VRS_Set
0x080043b4 __gnu_Unwind_Backtrace
0x08004704 __aeabi_unwind_cpp_pr0
0x08004710 __aeabi_unwind_cpp_pr1
0x0800471c __aeabi_unwind_cpp_pr2
0x08004728 _Unwind_VRS_Pop
.text 0x0800498c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800498c __restore_core_regs
0x0800498c restore_core_regs
0x080049b8 __gnu_Unwind_Restore_VFP
0x080049bc __gnu_Unwind_Save_VFP
0x080049c0 __gnu_Unwind_Restore_VFP_D
0x080049c4 __gnu_Unwind_Save_VFP_D
0x080049c8 __gnu_Unwind_Restore_VFP_D_16_to_31
0x080049cc __gnu_Unwind_Save_VFP_D_16_to_31
0x080049d0 __gnu_Unwind_Restore_WMMXD
0x080049d4 __gnu_Unwind_Save_WMMXD
0x080049d8 __gnu_Unwind_Restore_WMMXC
0x080049dc __gnu_Unwind_Save_WMMXC
0x080049e0 ___Unwind_RaiseException
0x080049e0 _Unwind_RaiseException
0x08004a10 _Unwind_Resume
0x08004a10 ___Unwind_Resume
0x08004a40 _Unwind_Resume_or_Rethrow
0x08004a40 ___Unwind_Resume_or_Rethrow
0x08004a70 _Unwind_ForcedUnwind
0x08004a70 ___Unwind_ForcedUnwind
0x08004aa0 ___Unwind_Backtrace
0x08004aa0 _Unwind_Backtrace
.text 0x08004ad0 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004b24 __gnu_unwind_execute
0x08004e14 __gnu_unwind_frame
0x08004e3c _Unwind_GetRegionStart
0x08004e48 _Unwind_GetLanguageSpecificData
0x08004e5c _Unwind_GetDataRelBase
0x08004e64 _Unwind_GetTextRelBase
.text.abort 0x08004e6c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004e6c abort
.text.memcpy 0x08004e7c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004e7c memcpy
.text._raise_r
0x08004f04 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004f04 _raise_r
.text.raise 0x08004f60 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004f60 raise
.text._kill_r 0x08004f74 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004f74 _kill_r
.text._getpid_r
0x08004f9c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004f9c _getpid_r
.text._getpid 0x08004fa4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004fa4 _getpid
.text._kill 0x08004fb4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004fb4 _kill
.text._exit 0x08004fc4 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004fc4 _exit
*(.init)
.init 0x08004fc8 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004fc8 _init
*(.fini)
.fini 0x08004fcc 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004fcc _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
*(SORT_BY_NAME(.ctors.*))
*(.ctors)
*crtbegin.o(.dtors)
*crtbegin?.o(.dtors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .dtors)
*(SORT_BY_NAME(.dtors.*))
*(.dtors)
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08004fd0 0x0
.glue_7 0x08004fd0 0x0 linker stubs
.glue_7t 0x08004fd0 0x0
.glue_7t 0x08004fd0 0x0 linker stubs
.vfp11_veneer 0x08004fd0 0x0
.vfp11_veneer 0x08004fd0 0x0 linker stubs
.v4_bx 0x08004fd0 0x0
.v4_bx 0x08004fd0 0x0 linker stubs
.iplt 0x08004fd0 0x0
.iplt 0x08004fd0 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.ARM.extab 0x08004fd0 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08004fd0 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004ff4 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005000 __exidx_start = .
.ARM.exidx 0x08005000 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08005000 0x8 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
0x10 (size before relaxing)
.ARM.exidx 0x08005008 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x080050a0 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x080050d0 __exidx_end = .
0x080050d0 __etext = ALIGN (0x4)
.rel.dyn 0x080050d0 0x0
.rel.iplt 0x080050d0 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.data 0x20000000 0x430 load address 0x080050d0
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
.data._impure_ptr
0x20000000 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
0x20000000 _impure_ptr
*fill* 0x20000004 0x4
.data.impure_data
0x20000008 0x428 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-impure.o)
0x20000430 . = ALIGN (0x4)
0x20000430 PROVIDE (__preinit_array_start = .)
*(.preinit_array)
0x20000430 PROVIDE (__preinit_array_end = .)
0x20000430 . = ALIGN (0x4)
0x20000430 PROVIDE (__init_array_start = .)
*(SORT_BY_NAME(.init_array.*))
*(.init_array)
0x20000430 PROVIDE (__init_array_end = .)
0x20000430 . = ALIGN (0x4)
0x20000430 PROVIDE (__fini_array_start = .)
*(SORT_BY_NAME(.fini_array.*))
*(.fini_array)
0x20000430 PROVIDE (__fini_array_end = .)
0x20000430 . = ALIGN (0x4)
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08005500
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccsrnNLz.o
.bss 0x20000430 0x2f8 load address 0x08005500
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.num_buff.5073
0x20000495 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000496 0x2
.bss.oper_info_struct
0x20000498 0x20 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.pbje_command
0x200004b8 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.pbje_data
0x200004b9 0x20 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004d9 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.pbje_status
0x200004da 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004db 0x10 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x200004eb 0x1
.bss.raw_buffer16
0x200004ec 0x200 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.rv16.4756
0x200006ec 0x8 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.rv16.4993
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.swim_base
0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.swim_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000701 0x3
.bss.tck_base 0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.tck_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000709 0x3
.bss.tdi_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.tdi_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000711 0x3
.bss.tdo_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.tdo_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*fill* 0x20000719 0x3
.bss.tms_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.bss.tms_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
*(COMMON)
*fill* 0x20000721 0x3
COMMON 0x20000724 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000724 errno
0x20000728 . = ALIGN (0x4)
0x20000728 __bss_end__ = .
.heap 0x20000728 0x0
0x20000728 __end__ = .
0x20000728 PROVIDE (end = .)
*(.heap*)
0x20000728 __HeapLimit = .
.stack_dummy 0x20000728 0x0
*(.stack*)
0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM))
0x20001800 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
0x20001800 PROVIDE (__stack = __StackTop)
0x00000001 ASSERT ((__StackLimit >= __HeapLimit), region RAM overflowed with stack)
OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x28
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x4df9
.debug_info 0x00000000 0x4dd3 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_info 0x00004dd3 0x26 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.debug_abbrev 0x00000000 0x686
.debug_abbrev 0x00000000 0x672 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_abbrev 0x00000672 0x14 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.debug_loc 0x00000000 0x511b
.debug_loc 0x00000000 0x511b C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x1c8
.debug_aranges
0x00000000 0x1a8 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_aranges
0x000001a8 0x20 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.debug_ranges 0x00000000 0xcb0
.debug_ranges 0x00000000 0xcb0 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_line 0x00000000 0x189a
.debug_line 0x00000000 0x17a7 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.debug_line 0x000017a7 0xf3 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.debug_str 0x00000000 0x113f
.debug_str 0x00000000 0x10c6 C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
0x11db (size before relaxing)
.debug_str 0x000010c6 0x79 C:\Users\paul\AppData\Local\Temp\ccAbCkC8.o
.debug_frame 0x00000000 0x54c
.debug_frame 0x00000000 0x54c C:\Users\paul\AppData\Local\Temp\ccvII1EV.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -90,6 +90,7 @@ buff2 0x14 source/buffer.o (symbol from plugin)
cur_bank 0x1 source/nes.o (symbol from plugin)
addr_ptr 0x4 source/bootload.o (symbol from plugin)
tdi_pin 0x1 source/jtag.o (symbol from plugin)
lfsr 0x4 source/stuff.o (symbol from plugin)
buff0 0x14 source/buffer.o (symbol from plugin)
raw_bank_status 0x10 source/buffer.o (symbol from plugin)
oper_info_struct 0x20 source/operation.o (symbol from plugin)
@ -128,39 +129,39 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -423,10 +424,10 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
LOAD C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccEEvCO6.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
LOAD C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
LOAD C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc4sAHYU.o
LOAD C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -440,17 +441,17 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x4ec0
.text 0x08000000 0x50e0
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -489,7 +490,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
@ -505,11 +506,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.fw_update 0x080005ac 0x150 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x080006fc 0x74 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -517,169 +518,173 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x1804 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x1994 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*(.text*)
.text.snes_page_rd_poll.constprop.23
0x08002088 0x7c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.22
0x08002104 0x6c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.20
0x08002170 0x68 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.snes_page_rd_poll.constprop.26
0x08002218 0x7c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.25
0x08002294 0x6c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.22
0x08002300 0x68 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.append_pairity
0x080021d8 0x1e C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002368 0x1e C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.delay_us
0x080021f6 0x14 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x0800220a 0x2 ff
.text.snes_wr 0x0800220c 0x60 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.snes_rd 0x0800226c 0x48 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.write_page_snes.constprop.31
0x080022b4 0x194 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002386 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x0800239a 0x2 ff
.text.lfsr_32 0x0800239c 0x30 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_wr 0x080023cc 0x60 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_rd 0x0800242c 0x48 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.write_page_snes.constprop.33
0x08002474 0x194 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_3v_flash_wr
0x08002448 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002608 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.snes_5v_flash_wr
0x08002498 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002658 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_dualport_wr
0x080024e8 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080026a8 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_dualport_rd
0x08002538 0x38 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080026f8 0x38 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_ppu_wr
0x08002570 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002730 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_ppu_rd
0x080025c0 0x38 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002780 0x38 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x080025f8 0x44 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080027b8 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x0800263c 0x44 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080027fc 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_cpu_wr
0x08002680 0x6c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002840 0x6c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x080026ec 0x84 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080028ac 0x84 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x08002770 0x74 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002930 0x74 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x080027e4 0x7c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080029a4 0x7c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nes_cpu_rd
0x08002860 0x40 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002a20 0x40 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x08002a60 0x74 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc4_prgrom_sop_flash_wr
0x080028a0 0x54 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002ad4 0x54 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x080028f4 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002b28 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x08002944 0x48 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002b78 0x48 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x0800298c 0x58 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002bc0 0x58 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x080029e4 0x64 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002c18 0x64 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08002a48 0x44 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002c7c 0x44 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.pbje_scan
0x08002a8c 0x10c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002cc0 0x10c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.pbje_state_change
0x08002b98 0x88 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002dcc 0x88 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.jtag_init_pbje
0x08002c20 0xe0 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002e54 0xe0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x08002d00 0xb8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002f34 0xb8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.io_reset
0x08002db8 0x154 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08002fec 0x174 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.write_page_verify
0x08002f0c 0x5c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08003160 0x5c C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.write_page
0x08002f68 0x34 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080031bc 0x34 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.get_next_buff
0x08002f9c 0x54 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.text.mmc1_wr.constprop.11
0x08002ff0 0x22 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x08003012 0x2 ff
0x080031f0 0x54 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc1_wr.constprop.12
0x08003244 0x22 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x08003266 0x2 ff
.text.mmc1_chrrom_flash_wr
0x08003014 0x60 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08003268 0x60 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x08003074 0x50 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080032c8 0x50 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.swim_wotf
0x080030c4 0xb4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08003318 0xb4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.swim_rotf
0x08003178 0xac C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x080033cc 0xac C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.text.startup.main
0x08003224 0xafc C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x08003224 main
.text 0x08003d20 0x154 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
0x08003d20 swim_xfr
.text 0x08003e74 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004130 _Unwind_GetCFA
0x08004134 __gnu_Unwind_RaiseException
0x08004188 __gnu_Unwind_ForcedUnwind
0x0800419c __gnu_Unwind_Resume
0x080041e4 __gnu_Unwind_Resume_or_Rethrow
0x08004200 _Unwind_Complete
0x08004204 _Unwind_DeleteException
0x08004214 _Unwind_VRS_Get
0x0800425c _Unwind_VRS_Set
0x080042a4 __gnu_Unwind_Backtrace
0x080045f4 __aeabi_unwind_cpp_pr0
0x08004600 __aeabi_unwind_cpp_pr1
0x0800460c __aeabi_unwind_cpp_pr2
0x08004618 _Unwind_VRS_Pop
.text 0x0800487c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800487c __restore_core_regs
0x0800487c restore_core_regs
0x080048a8 __gnu_Unwind_Restore_VFP
0x080048ac __gnu_Unwind_Save_VFP
0x080048b0 __gnu_Unwind_Restore_VFP_D
0x080048b4 __gnu_Unwind_Save_VFP_D
0x080048b8 __gnu_Unwind_Restore_VFP_D_16_to_31
0x080048bc __gnu_Unwind_Save_VFP_D_16_to_31
0x080048c0 __gnu_Unwind_Restore_WMMXD
0x080048c4 __gnu_Unwind_Save_WMMXD
0x080048c8 __gnu_Unwind_Restore_WMMXC
0x080048cc __gnu_Unwind_Save_WMMXC
0x080048d0 ___Unwind_RaiseException
0x080048d0 _Unwind_RaiseException
0x08004900 _Unwind_Resume
0x08004900 ___Unwind_Resume
0x08004930 _Unwind_Resume_or_Rethrow
0x08004930 ___Unwind_Resume_or_Rethrow
0x08004960 _Unwind_ForcedUnwind
0x08004960 ___Unwind_ForcedUnwind
0x08004990 ___Unwind_Backtrace
0x08004990 _Unwind_Backtrace
.text 0x080049c0 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004a14 __gnu_unwind_execute
0x08004d04 __gnu_unwind_frame
0x08004d2c _Unwind_GetRegionStart
0x08004d38 _Unwind_GetLanguageSpecificData
0x08004d4c _Unwind_GetDataRelBase
0x08004d54 _Unwind_GetTextRelBase
.text.abort 0x08004d5c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004d5c abort
.text.memcpy 0x08004d6c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004d6c memcpy
0x08003478 0xac0 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x08003478 main
*fill* 0x08003f38 0x8 ff
.text 0x08003f40 0x154 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x08003f40 swim_xfr
.text 0x08004094 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08004350 _Unwind_GetCFA
0x08004354 __gnu_Unwind_RaiseException
0x080043a8 __gnu_Unwind_ForcedUnwind
0x080043bc __gnu_Unwind_Resume
0x08004404 __gnu_Unwind_Resume_or_Rethrow
0x08004420 _Unwind_Complete
0x08004424 _Unwind_DeleteException
0x08004434 _Unwind_VRS_Get
0x0800447c _Unwind_VRS_Set
0x080044c4 __gnu_Unwind_Backtrace
0x08004814 __aeabi_unwind_cpp_pr0
0x08004820 __aeabi_unwind_cpp_pr1
0x0800482c __aeabi_unwind_cpp_pr2
0x08004838 _Unwind_VRS_Pop
.text 0x08004a9c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x08004a9c __restore_core_regs
0x08004a9c restore_core_regs
0x08004ac8 __gnu_Unwind_Restore_VFP
0x08004acc __gnu_Unwind_Save_VFP
0x08004ad0 __gnu_Unwind_Restore_VFP_D
0x08004ad4 __gnu_Unwind_Save_VFP_D
0x08004ad8 __gnu_Unwind_Restore_VFP_D_16_to_31
0x08004adc __gnu_Unwind_Save_VFP_D_16_to_31
0x08004ae0 __gnu_Unwind_Restore_WMMXD
0x08004ae4 __gnu_Unwind_Save_WMMXD
0x08004ae8 __gnu_Unwind_Restore_WMMXC
0x08004aec __gnu_Unwind_Save_WMMXC
0x08004af0 ___Unwind_RaiseException
0x08004af0 _Unwind_RaiseException
0x08004b20 _Unwind_Resume
0x08004b20 ___Unwind_Resume
0x08004b50 _Unwind_Resume_or_Rethrow
0x08004b50 ___Unwind_Resume_or_Rethrow
0x08004b80 _Unwind_ForcedUnwind
0x08004b80 ___Unwind_ForcedUnwind
0x08004bb0 ___Unwind_Backtrace
0x08004bb0 _Unwind_Backtrace
.text 0x08004be0 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004c34 __gnu_unwind_execute
0x08004f24 __gnu_unwind_frame
0x08004f4c _Unwind_GetRegionStart
0x08004f58 _Unwind_GetLanguageSpecificData
0x08004f6c _Unwind_GetDataRelBase
0x08004f74 _Unwind_GetTextRelBase
.text.abort 0x08004f7c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004f7c abort
.text.memcpy 0x08004f8c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004f8c memcpy
.text._raise_r
0x08004df4 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004df4 _raise_r
.text.raise 0x08004e50 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004e50 raise
.text._kill_r 0x08004e64 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004e64 _kill_r
0x08005014 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005014 _raise_r
.text.raise 0x08005070 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08005070 raise
.text._kill_r 0x08005084 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08005084 _kill_r
.text._getpid_r
0x08004e8c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004e8c _getpid_r
.text._getpid 0x08004e94 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004e94 _getpid
.text._kill 0x08004ea4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004ea4 _kill
.text._exit 0x08004eb4 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004eb4 _exit
0x080050ac 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x080050ac _getpid_r
.text._getpid 0x080050b4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x080050b4 _getpid
.text._kill 0x080050c4 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x080050c4 _kill
.text._exit 0x080050d4 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x080050d4 _exit
*(.init)
.init 0x08004eb8 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004eb8 _init
.init 0x080050d8 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x080050d8 _init
*(.fini)
.fini 0x08004ebc 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004ebc _fini
.fini 0x080050dc 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x080050dc _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -693,42 +698,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08004ec0 0x0
.glue_7 0x08004ec0 0x0 linker stubs
.glue_7 0x080050e0 0x0
.glue_7 0x080050e0 0x0 linker stubs
.glue_7t 0x08004ec0 0x0
.glue_7t 0x08004ec0 0x0 linker stubs
.glue_7t 0x080050e0 0x0
.glue_7t 0x080050e0 0x0 linker stubs
.vfp11_veneer 0x08004ec0 0x0
.vfp11_veneer 0x08004ec0 0x0 linker stubs
.vfp11_veneer 0x080050e0 0x0
.vfp11_veneer 0x080050e0 0x0 linker stubs
.v4_bx 0x08004ec0 0x0
.v4_bx 0x08004ec0 0x0 linker stubs
.v4_bx 0x080050e0 0x0
.v4_bx 0x080050e0 0x0 linker stubs
.iplt 0x08004ec0 0x0
.iplt 0x08004ec0 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.iplt 0x080050e0 0x0
.iplt 0x080050e0 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.ARM.extab 0x08004ec0 0x30
.ARM.extab 0x080050e0 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08004ec0 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004ee4 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004ef0 __exidx_start = .
.ARM.extab 0x080050e0 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08005104 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08005110 __exidx_start = .
.ARM.exidx 0x08004ef0 0xd0
.ARM.exidx 0x08005110 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08004ef0 0x8 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.ARM.exidx 0x08005110 0x8 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
0x10 (size before relaxing)
.ARM.exidx 0x08004ef8 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x08005118 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08004f90 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x080051b0 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08004fc0 __exidx_end = .
0x08004fc0 __etext = ALIGN (0x4)
0x080051e0 __exidx_end = .
0x080051e0 __etext = ALIGN (0x4)
.rel.dyn 0x08004fc0 0x0
.rel.iplt 0x08004fc0 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.rel.dyn 0x080051e0 0x0
.rel.iplt 0x080051e0 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.data 0x20000000 0x430 load address 0x08004fc0
.data 0x20000000 0x430 load address 0x080051e0
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -756,79 +761,84 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x080053f0
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccYRiP7M.o
.igot.plt 0x20000430 0x0 load address 0x08005610
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccodwd7C.o
.bss 0x20000430 0x2f8 load address 0x080053f0
.bss 0x20000430 0x304 load address 0x08005610
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.num_buff.5067
0x20000495 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x20000496 0x2
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000495 0x3
.bss.lfsr 0x20000498 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.num_buff.5087
0x2000049c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000049d 0x3
.bss.oper_info_struct
0x20000498 0x20 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004a0 0x20 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.pbje_command
0x200004b8 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004c0 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.pbje_data
0x200004b9 0x20 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004c1 0x20 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004d9 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004e1 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.pbje_status
0x200004da 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004e2 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004db 0x10 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x200004eb 0x1
0x200004e3 0x10 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x200004f3 0x1
.bss.raw_buffer16
0x200004ec 0x200 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200004f4 0x200 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.rv16.4756
0x200006ec 0x8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.rv16.4987
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.rv16.5007
0x200006fc 0x8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000704 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000705 0x3
.bss.swim_base
0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.swim_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x20000701 0x3
.bss.tck_base 0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.tck_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x20000709 0x3
.bss.tdi_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.tdi_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x20000711 0x3
.bss.tdo_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.tdo_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
*fill* 0x20000719 0x3
.bss.tms_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.bss.tms_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x20000708 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.swim_pin 0x2000070c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000070d 0x3
.bss.tck_base 0x20000710 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tck_pin 0x20000714 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000715 0x3
.bss.tdi_base 0x20000718 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tdi_pin 0x2000071c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x2000071d 0x3
.bss.tdo_base 0x20000720 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tdo_pin 0x20000724 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*fill* 0x20000725 0x3
.bss.tms_base 0x20000728 0x4 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.bss.tms_pin 0x2000072c 0x1 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
*(COMMON)
*fill* 0x20000721 0x3
COMMON 0x20000724 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000724 errno
0x20000728 . = ALIGN (0x4)
0x20000728 __bss_end__ = .
*fill* 0x2000072d 0x3
COMMON 0x20000730 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000730 errno
0x20000734 . = ALIGN (0x4)
0x20000734 __bss_end__ = .
.heap 0x20000728 0x0
0x20000728 __end__ = .
0x20000728 PROVIDE (end = .)
.heap 0x20000734 0x0
0x20000734 __end__ = .
0x20000734 PROVIDE (end = .)
*(.heap*)
0x20000728 __HeapLimit = .
0x20000734 __HeapLimit = .
.stack_dummy 0x20000728 0x0
.stack_dummy 0x20000734 0x0
*(.stack*)
0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM))
0x20001800 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
@ -841,45 +851,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x4cb4
.debug_info 0x00000000 0x4c8e C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_info 0x00004c8e 0x26 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.debug_info 0x00000000 0x501b
.debug_info 0x00000000 0x4ff5 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_info 0x00004ff5 0x26 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_abbrev 0x00000000 0x686
.debug_abbrev 0x00000000 0x672 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_abbrev 0x00000672 0x14 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.debug_abbrev 0x00000000 0x69e
.debug_abbrev 0x00000000 0x68a C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_abbrev 0x0000068a 0x14 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_loc 0x00000000 0x4ef7
.debug_loc 0x00000000 0x4ef7 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_loc 0x00000000 0x503a
.debug_loc 0x00000000 0x503a C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x1c8
.debug_aranges 0x00000000 0x1d8
.debug_aranges
0x00000000 0x1a8 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x00000000 0x1b8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_aranges
0x000001a8 0x20 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
0x000001b8 0x20 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_ranges 0x00000000 0xc80
.debug_ranges 0x00000000 0xc80 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xce8
.debug_ranges 0x00000000 0xce8 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_line 0x00000000 0x17fe
.debug_line 0x00000000 0x170b C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_line 0x0000170b 0xf3 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.debug_line 0x00000000 0x1923
.debug_line 0x00000000 0x1830 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.debug_line 0x00001830 0xf3 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_str 0x00000000 0x110f
.debug_str 0x00000000 0x1096 C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
0x11ab (size before relaxing)
.debug_str 0x00001096 0x79 C:\Users\paul\AppData\Local\Temp\cc6JnGGt.o
.debug_str 0x00000000 0x1187
.debug_str 0x00000000 0x110e C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
0x1233 (size before relaxing)
.debug_str 0x0000110e 0x79 C:\Users\paul\AppData\Local\Temp\ccCeVEpf.o
.debug_frame 0x00000000 0x54c
.debug_frame 0x00000000 0x54c C:\Users\paul\AppData\Local\Temp\cckypYhD.ltrans0.ltrans.o
.debug_frame 0x00000000 0x584
.debug_frame 0x00000000 0x584 C:\Users\paul\AppData\Local\Temp\ccmcEXxC.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
Archive member included to satisfy reference by file (symbol)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\ccSRey5t.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -51,9 +51,9 @@ c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -92,6 +92,7 @@ buff2 0x14 source/buffer.o (symbol from plugin)
cur_bank 0x1 source/nes.o (symbol from plugin)
addr_ptr 0x4 source/bootload.o (symbol from plugin)
tdi_pin 0x1 source/jtag.o (symbol from plugin)
lfsr 0x4 source/stuff.o (symbol from plugin)
buff0 0x14 source/buffer.o (symbol from plugin)
raw_bank_status 0x10 source/buffer.o (symbol from plugin)
oper_info_struct 0x20 source/operation.o (symbol from plugin)
@ -130,39 +131,39 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.stack 0x00000000 0xc00 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.heap 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_line 0x00000000 0x7c C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_info 0x00000000 0x22 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_abbrev 0x00000000 0x12 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_aranges
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
0x00000000 0x28 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_str 0x00000000 0x80 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.debug_ranges 0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.ARM.attributes
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
0x00000000 0x1b C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text 0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.ARM.exidx 0x00000000 0x8 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.debug_line 0x00000000 0x49 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.debug_info 0x00000000 0x26 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.debug_str 0x00000000 0x7d C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.ARM.attributes
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
0x00000000 0x21 C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2b4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -425,10 +426,10 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
LOAD C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc8U0Tu6.o
LOAD C:\Users\paul\AppData\Local\Temp\ccays3OO.o
LOAD C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
LOAD C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccSRey5t.o
LOAD C:\Users\paul\AppData\Local\Temp\ccK626T0.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -442,17 +443,17 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crtn.o
.text 0x08000000 0x4850
.text 0x08000000 0x49b0
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
0x08000000 __isr_vector
*(.usb_driver)
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.usb_driver 0x080000c0 0x3bc C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x08000198 USB_IRQHandler
*(.usb_desc)
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.usb_desc 0x0800047c 0xb8 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*(.hardfault)
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.hardfault 0x08000534 0x2 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
0x08000534 TIM1_CC_IRQHandler
0x08000534 TSC_IRQHandler
0x08000534 ADC1_COMP_IRQHandler
@ -491,7 +492,7 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x08000534 USART1_IRQHandler
0x08000534 TIM1_BRK_UP_TRG_COM_IRQHandler
*fill* 0x08000536 0x2 ff
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.hardfault 0x08000538 0xc C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x08000538 HardFault_Handler
*_thumb1_case_uqi.o()
.text 0x08000544 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
@ -507,11 +508,11 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
0x0800058c 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
*(.fw_update)
*fill* 0x080005aa 0x2 ff
.fw_update 0x080005ac 0x15c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.fw_update 0x080005ac 0x15c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x00000770 . = 0x770
*fill* 0x08000708 0x68 ff
*(.fw_up_main)
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.fw_up_main 0x08000770 0x70 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x00000800 . = 0x800
*fill* 0x080007e0 0x20 ff
*(.appver)
@ -519,159 +520,163 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*fill* 0x08000800 0x4 ff
*(.reset_handler)
.reset_handler
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
0x08000804 0x3c C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
0x08000804 Reset_Handler
*(.usbFuncWrite)
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.usbFuncWrite 0x08000840 0x44 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*(.usbFuncSetup)
.usbFuncSetup 0x08000884 0x13c8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.usbFuncSetup 0x08000884 0x152c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*(.text*)
.text.nes_cpu_page_rd_poll.constprop.17
0x08001c4c 0xc4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.15
0x08001d10 0xbc C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.text.nes_cpu_page_rd_poll.constprop.19
0x08001db0 0xc4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_ppu_page_rd_poll.constprop.17
0x08001e74 0xbc C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.append_pairity
0x08001dcc 0x1e C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08001f30 0x1e C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.delay_us
0x08001dea 0x14 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
*fill* 0x08001dfe 0x2 ff
0x08001f4e 0x14 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x08001f62 0x2 ff
.text.lfsr_32 0x08001f64 0x30 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_dualport_wr
0x08001e00 0x8c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08001f94 0x8c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_dualport_rd
0x08001e8c 0x80 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002020 0x80 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_ppu_wr
0x08001f0c 0x90 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080020a0 0x90 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_ppu_rd
0x08001f9c 0x84 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002130 0x84 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc3_chrrom_flash_wr
0x08002020 0x44 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080021b4 0x44 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nrom_chrrom_flash_wr
0x08002064 0x44 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080021f8 0x44 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_cpu_wr
0x080020a8 0xa8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x0800223c 0xa8 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.cdream_chrrom_flash_wr
0x08002150 0x84 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080022e4 0x84 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc4_chrrom_flash_wr
0x080021d4 0x74 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002368 0x74 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.cnrom_chrrom_flash_wr
0x08002248 0x7c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080023dc 0x7c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nes_cpu_rd
0x080022c4 0x88 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002458 0x88 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.map30_prgrom_flash_wr
0x080024e0 0x74 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc4_prgrom_sop_flash_wr
0x0800234c 0x54 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002554 0x54 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc3_prgrom_flash_wr
0x080023a0 0x50 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080025a8 0x50 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.disc_push_exp0_prgrom_wr
0x080023f0 0x84 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080025f8 0x84 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.discrete_exp0_prgrom_wr
0x08002474 0x8c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x0800267c 0x8c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.unrom_prgrom_flash_wr
0x08002500 0x64 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002708 0x64 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.nrom_prgrom_flash_wr
0x08002564 0x44 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x0800276c 0x44 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.pbje_scan
0x080025a8 0xb0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080027b0 0xb0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.pbje_state_change
0x08002658 0x5c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002860 0x5c C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.jtag_init_pbje
0x080026b4 0x40 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080028bc 0x40 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.jtag_run_pbje.part.0
0x080026f4 0xb8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080028fc 0xb8 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.io_reset
0x080027ac 0x1b0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x080029b4 0x1c4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.write_page_verify
0x0800295c 0x68 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002b78 0x68 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.write_page
0x080029c4 0x34 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002be0 0x34 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.get_next_buff
0x080029f8 0x54 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.text.mmc1_wr.constprop.9
0x08002a4c 0x22 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
*fill* 0x08002a6e 0x2 ff
0x08002c14 0x54 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc1_wr.constprop.10
0x08002c68 0x22 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x08002c8a 0x2 ff
.text.mmc1_chrrom_flash_wr
0x08002a70 0x60 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002c8c 0x60 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.mmc1_prgrom_flash_wr
0x08002ad0 0x50 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002cec 0x50 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.swim_wotf
0x08002b20 0xb4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002d3c 0xb4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.swim_rotf
0x08002bd4 0xac C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002df0 0xac C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.text.startup.main
0x08002c80 0xa30 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x08002c80 main
.text 0x080036b0 0x154 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
0x080036b0 swim_xfr
.text 0x08003804 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003ac0 _Unwind_GetCFA
0x08003ac4 __gnu_Unwind_RaiseException
0x08003b18 __gnu_Unwind_ForcedUnwind
0x08003b2c __gnu_Unwind_Resume
0x08003b74 __gnu_Unwind_Resume_or_Rethrow
0x08003b90 _Unwind_Complete
0x08003b94 _Unwind_DeleteException
0x08003ba4 _Unwind_VRS_Get
0x08003bec _Unwind_VRS_Set
0x08003c34 __gnu_Unwind_Backtrace
0x08003f84 __aeabi_unwind_cpp_pr0
0x08003f90 __aeabi_unwind_cpp_pr1
0x08003f9c __aeabi_unwind_cpp_pr2
0x08003fa8 _Unwind_VRS_Pop
.text 0x0800420c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800420c __restore_core_regs
0x0800420c restore_core_regs
0x08004238 __gnu_Unwind_Restore_VFP
0x0800423c __gnu_Unwind_Save_VFP
0x08004240 __gnu_Unwind_Restore_VFP_D
0x08004244 __gnu_Unwind_Save_VFP_D
0x08004248 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800424c __gnu_Unwind_Save_VFP_D_16_to_31
0x08004250 __gnu_Unwind_Restore_WMMXD
0x08004254 __gnu_Unwind_Save_WMMXD
0x08004258 __gnu_Unwind_Restore_WMMXC
0x0800425c __gnu_Unwind_Save_WMMXC
0x08004260 ___Unwind_RaiseException
0x08004260 _Unwind_RaiseException
0x08004290 _Unwind_Resume
0x08004290 ___Unwind_Resume
0x080042c0 _Unwind_Resume_or_Rethrow
0x080042c0 ___Unwind_Resume_or_Rethrow
0x080042f0 _Unwind_ForcedUnwind
0x080042f0 ___Unwind_ForcedUnwind
0x08004320 ___Unwind_Backtrace
0x08004320 _Unwind_Backtrace
.text 0x08004350 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080043a4 __gnu_unwind_execute
0x08004694 __gnu_unwind_frame
0x080046bc _Unwind_GetRegionStart
0x080046c8 _Unwind_GetLanguageSpecificData
0x080046dc _Unwind_GetDataRelBase
0x080046e4 _Unwind_GetTextRelBase
.text.abort 0x080046ec 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x080046ec abort
.text.memcpy 0x080046fc 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x080046fc memcpy
0x08002e9c 0x970 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x08002e9c main
*fill* 0x0800380c 0x4 ff
.text 0x08003810 0x154 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
0x08003810 swim_xfr
.text 0x08003964 0xa08 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003c20 _Unwind_GetCFA
0x08003c24 __gnu_Unwind_RaiseException
0x08003c78 __gnu_Unwind_ForcedUnwind
0x08003c8c __gnu_Unwind_Resume
0x08003cd4 __gnu_Unwind_Resume_or_Rethrow
0x08003cf0 _Unwind_Complete
0x08003cf4 _Unwind_DeleteException
0x08003d04 _Unwind_VRS_Get
0x08003d4c _Unwind_VRS_Set
0x08003d94 __gnu_Unwind_Backtrace
0x080040e4 __aeabi_unwind_cpp_pr0
0x080040f0 __aeabi_unwind_cpp_pr1
0x080040fc __aeabi_unwind_cpp_pr2
0x08004108 _Unwind_VRS_Pop
.text 0x0800436c 0x144 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800436c __restore_core_regs
0x0800436c restore_core_regs
0x08004398 __gnu_Unwind_Restore_VFP
0x0800439c __gnu_Unwind_Save_VFP
0x080043a0 __gnu_Unwind_Restore_VFP_D
0x080043a4 __gnu_Unwind_Save_VFP_D
0x080043a8 __gnu_Unwind_Restore_VFP_D_16_to_31
0x080043ac __gnu_Unwind_Save_VFP_D_16_to_31
0x080043b0 __gnu_Unwind_Restore_WMMXD
0x080043b4 __gnu_Unwind_Save_WMMXD
0x080043b8 __gnu_Unwind_Restore_WMMXC
0x080043bc __gnu_Unwind_Save_WMMXC
0x080043c0 ___Unwind_RaiseException
0x080043c0 _Unwind_RaiseException
0x080043f0 _Unwind_Resume
0x080043f0 ___Unwind_Resume
0x08004420 _Unwind_Resume_or_Rethrow
0x08004420 ___Unwind_Resume_or_Rethrow
0x08004450 _Unwind_ForcedUnwind
0x08004450 ___Unwind_ForcedUnwind
0x08004480 ___Unwind_Backtrace
0x08004480 _Unwind_Backtrace
.text 0x080044b0 0x39c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004504 __gnu_unwind_execute
0x080047f4 __gnu_unwind_frame
0x0800481c _Unwind_GetRegionStart
0x08004828 _Unwind_GetLanguageSpecificData
0x0800483c _Unwind_GetDataRelBase
0x08004844 _Unwind_GetTextRelBase
.text.abort 0x0800484c 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x0800484c abort
.text.memcpy 0x0800485c 0x88 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x0800485c memcpy
.text._raise_r
0x08004784 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004784 _raise_r
.text.raise 0x080047e0 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080047e0 raise
.text._kill_r 0x080047f4 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x080047f4 _kill_r
0x080048e4 0x5c c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080048e4 _raise_r
.text.raise 0x08004940 0x14 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004940 raise
.text._kill_r 0x08004954 0x28 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004954 _kill_r
.text._getpid_r
0x0800481c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x0800481c _getpid_r
.text._getpid 0x08004824 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004824 _getpid
.text._kill 0x08004834 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004834 _kill
.text._exit 0x08004844 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004844 _exit
0x0800497c 0x8 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x0800497c _getpid_r
.text._getpid 0x08004984 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004984 _getpid
.text._kill 0x08004994 0x10 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004994 _kill
.text._exit 0x080049a4 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x080049a4 _exit
*(.init)
.init 0x08004848 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x08004848 _init
.init 0x080049a8 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x080049a8 _init
*(.fini)
.fini 0x0800484c 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x0800484c _fini
.fini 0x080049ac 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
0x080049ac _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -685,42 +690,42 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.rodata*)
*(.eh_frame*)
.glue_7 0x08004850 0x0
.glue_7 0x08004850 0x0 linker stubs
.glue_7 0x080049b0 0x0
.glue_7 0x080049b0 0x0 linker stubs
.glue_7t 0x08004850 0x0
.glue_7t 0x08004850 0x0 linker stubs
.glue_7t 0x080049b0 0x0
.glue_7t 0x080049b0 0x0 linker stubs
.vfp11_veneer 0x08004850 0x0
.vfp11_veneer 0x08004850 0x0 linker stubs
.vfp11_veneer 0x080049b0 0x0
.vfp11_veneer 0x080049b0 0x0 linker stubs
.v4_bx 0x08004850 0x0
.v4_bx 0x08004850 0x0 linker stubs
.v4_bx 0x080049b0 0x0
.v4_bx 0x080049b0 0x0 linker stubs
.iplt 0x08004850 0x0
.iplt 0x08004850 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.iplt 0x080049b0 0x0
.iplt 0x080049b0 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.ARM.extab 0x08004850 0x30
.ARM.extab 0x080049b0 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08004850 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004874 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004880 __exidx_start = .
.ARM.extab 0x080049b0 0x24 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x080049d4 0xc c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080049e0 __exidx_start = .
.ARM.exidx 0x08004880 0xd0
.ARM.exidx 0x080049e0 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08004880 0x8 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.ARM.exidx 0x080049e0 0x8 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
0x10 (size before relaxing)
.ARM.exidx 0x08004888 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x080049e8 0x98 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08004920 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x08004a80 0x30 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08004950 __exidx_end = .
0x08004950 __etext = ALIGN (0x4)
0x08004ab0 __exidx_end = .
0x08004ab0 __etext = ALIGN (0x4)
.rel.dyn 0x08004950 0x0
.rel.iplt 0x08004950 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.rel.dyn 0x08004ab0 0x0
.rel.iplt 0x08004ab0 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.data 0x20000000 0x430 load address 0x08004950
.data 0x20000000 0x430 load address 0x08004ab0
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -748,68 +753,73 @@ LOAD c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eab
*(.fastrun)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08004d80
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccWIXuss.o
.igot.plt 0x20000430 0x0 load address 0x08004ee0
.igot.plt 0x20000430 0x0 C:\Users\paul\AppData\Local\Temp\ccG8tUSZ.o
.bss 0x20000430 0x2d8 load address 0x08004d80
.bss 0x20000430 0x2e4 load address 0x08004ee0
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.addr_ptr 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.addrh 0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.bank_table
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x20000436 0x2 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.exp_byte 0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.exp_byte 0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000495 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.num_buff.5060
0x20000496 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
*fill* 0x20000497 0x1
0x20000495 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x20000496 0x2
.bss.lfsr 0x20000498 0x4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.num_buff.5080
0x2000049c 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x2000049d 0x3
.bss.oper_info_struct
0x20000498 0x20 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004a0 0x20 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.pbje_command
0x200004b8 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004c0 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.pbje_data
0x200004b9 0x20 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004c1 0x20 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.pbje_numclk
0x200004d9 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004e1 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.pbje_status
0x200004da 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004e2 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.raw_bank_status
0x200004db 0x10 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
*fill* 0x200004eb 0x1
0x200004e3 0x10 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x200004f3 0x1
.bss.raw_buffer16
0x200004ec 0x200 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200004f4 0x200 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.rv16.4747
0x200006ec 0x8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.rv16.4980
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x200006f4 0x8 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.rv16.5000
0x200006fc 0x8 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.stm_debug_disable
0x20000704 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*fill* 0x20000705 0x3
.bss.swim_base
0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.bss.swim_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x20000708 0x4 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.bss.swim_pin 0x2000070c 0x1 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
*(COMMON)
*fill* 0x20000701 0x3
COMMON 0x20000704 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000704 errno
0x20000708 . = ALIGN (0x4)
0x20000708 __bss_end__ = .
*fill* 0x2000070d 0x3
COMMON 0x20000710 0x4 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000710 errno
0x20000714 . = ALIGN (0x4)
0x20000714 __bss_end__ = .
.heap 0x20000708 0x0
0x20000708 __end__ = .
0x20000708 PROVIDE (end = .)
.heap 0x20000714 0x0
0x20000714 __end__ = .
0x20000714 PROVIDE (end = .)
*(.heap*)
0x20000708 __HeapLimit = .
0x20000714 __HeapLimit = .
.stack_dummy 0x20000708 0x0
.stack_dummy 0x20000714 0x0
*(.stack*)
0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM))
0x20001800 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
@ -822,45 +832,45 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x0000001e 0x2f C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.ARM.attributes
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
0x0000004d 0x21 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.comment 0x00000000 0x7f
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.comment 0x00000000 0x7f C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x80 (size before relaxing)
.debug_info 0x00000000 0x42d3
.debug_info 0x00000000 0x42ad C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_info 0x000042ad 0x26 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.debug_info 0x00000000 0x44f6
.debug_info 0x00000000 0x44d0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_info 0x000044d0 0x26 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.debug_abbrev 0x00000000 0x670
.debug_abbrev 0x00000000 0x65c C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_abbrev 0x0000065c 0x14 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.debug_abbrev 0x00000000 0x693
.debug_abbrev 0x00000000 0x67f C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_abbrev 0x0000067f 0x14 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.debug_loc 0x00000000 0x445f
.debug_loc 0x00000000 0x445f C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_loc 0x00000000 0x4377
.debug_loc 0x00000000 0x4377 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_aranges 0x00000000 0x198
.debug_aranges 0x00000000 0x1a8
.debug_aranges
0x00000000 0x178 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x00000000 0x188 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_aranges
0x00000178 0x20 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
0x00000188 0x20 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.debug_ranges 0x00000000 0xab0
.debug_ranges 0x00000000 0xab0 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_ranges 0x00000000 0xad0
.debug_ranges 0x00000000 0xad0 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_line 0x00000000 0x14eb
.debug_line 0x00000000 0x13f8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_line 0x000013f8 0xf3 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.debug_line 0x00000000 0x155c
.debug_line 0x00000000 0x1469 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.debug_line 0x00001469 0xf3 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.debug_str 0x00000000 0xfc0
.debug_str 0x00000000 0xf47 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
0x104a (size before relaxing)
.debug_str 0x00000f47 0x79 C:\Users\paul\AppData\Local\Temp\ccays3OO.o
.debug_str 0x00000000 0x1008
.debug_str 0x00000000 0xf8f C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
0x10a2 (size before relaxing)
.debug_str 0x00000f8f 0x79 C:\Users\paul\AppData\Local\Temp\ccK626T0.o
.debug_frame 0x00000000 0x4d8
.debug_frame 0x00000000 0x4d8 C:\Users\paul\AppData\Local\Temp\ccMR9izX.ltrans0.ltrans.o
.debug_frame 0x00000000 0x510
.debug_frame 0x00000000 0x510 C:\Users\paul\AppData\Local\Temp\ccazLwyO.ltrans0.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-7-2018-q2-update-win32/bin/../lib/gcc/arm-none-eabi/7.3.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

Binary file not shown.

Binary file not shown.

View File

@ -4,7 +4,7 @@ uint8_t write_page( uint8_t addrH, buffer *buff, write_funcptr wr_func )
{
uint16_t cur = buff->cur_byte;
uint8_t n = buff->cur_byte;
uint8_t read;
// uint8_t read;
while ( cur <= buff->last_idx ) {
@ -20,6 +20,42 @@ uint8_t write_page( uint8_t addrH, buffer *buff, write_funcptr wr_func )
return SUCCESS;
}
uint8_t write_page_verify( uint8_t addrH, buffer *buff, write_rv_funcptr wr_func )
{
uint16_t cur = buff->cur_byte;
uint8_t n = buff->cur_byte;
uint8_t read;
while ( cur <= buff->last_idx ) {
//only works for NROM right now..
read = wr_func( ((addrH<<8)| n), buff->data[n] );
//write function returns read back data post flash attempt
//TODO create flag/static variable to determine what behavior to have
//if write fails
if ( read != buff->data[n] ) {
LED_OP();
LED_HI();
}
else { //next byte
LED_IP_PU();
//LED_LO();
//if there's a WDT the device should reset if get stuck here
n++;
cur++;
}
//put this increment only in pass case if want to retry
//n++;
//cur++;
}
buff->cur_byte = n;
//TODO error check/report
return SUCCESS;
}
//only used by cninja currently..
uint8_t write_page_cninja( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t unlock2, buffer *buff, write_funcptr wr_func, read_funcptr rd_func )
{
@ -72,47 +108,6 @@ uint8_t write_page_mm2( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t
return SUCCESS;
}
uint8_t write_page_bank_map30( uint8_t bank, uint8_t addrH, uint16_t unlock1, uint16_t unlock2, buffer *buff, write_funcptr wr_func, read_funcptr rd_func )
{
uint16_t cur = buff->cur_byte;
uint8_t n = buff->cur_byte;
uint8_t read;
while ( cur <= buff->last_idx ) {
//select first bank for unlock sequence
//wr_func( 0x5555, 0xAA );
nes_cpu_wr( 0xC000, 0x01 );
wr_func( unlock1, 0xAA );
//wr_func( 0x2AAA, 0x55 );
nes_cpu_wr( 0xC000, 0x00 );
wr_func( unlock2, 0x55 );
//wr_func( 0x5555, 0xA0 );
nes_cpu_wr( 0xC000, 0x01 );
wr_func( unlock1, 0xA0 );
//now need to select bank for the actual write!
nes_cpu_wr( 0xC000, bank );
wr_func( ((addrH<<8)| n), buff->data[n] );
do {
usbPoll();
read = rd_func((addrH<<8)|n);
} while( read != rd_func((addrH<<8)|n) );
if (read == buff->data[n]) {
n++;
cur++;
LED_IP_PU();
LED_LO();
} else {
LED_OP();
LED_HI();
}
}
buff->cur_byte = n;
return SUCCESS;
}
uint8_t write_page_a53( uint8_t bank, uint8_t addrH, buffer *buff, write_funcptr wr_func, read_funcptr rd_func )
{
@ -396,7 +391,7 @@ uint8_t flash_buff( buffer *buff ) {
if (buff->mapper == NROM) {
//used by other 32KB PRG bank discrete mappers like BNROM, CNROM, & color dreams
write_page( (0x80+addrH), buff, nrom_prgrom_flash_wr);
write_page_verify( (0x80+addrH), buff, nrom_prgrom_flash_wr);
}
if (buff->mapper == MMC1) {
write_page( (0x80+addrH), buff, mmc1_prgrom_flash_wr);
@ -405,7 +400,7 @@ uint8_t flash_buff( buffer *buff ) {
write_page( (0x80+addrH), buff, unrom_prgrom_flash_wr);
}
if (buff->mapper == MMC3) {
write_page( (0x80+addrH), buff, mmc3_prgrom_flash_wr);
write_page_verify( (0x80+addrH), buff, mmc3_prgrom_flash_wr);
}
if (buff->mapper == MMC4) {
write_page( (0x80+addrH), buff, mmc4_prgrom_sop_flash_wr);
@ -421,14 +416,7 @@ uint8_t flash_buff( buffer *buff ) {
write_page_mm2( bank, addrH, 0x5555, 0x2AAA, buff, disc_push_exp0_prgrom_wr, nes_cpu_rd );
}
if (buff->mapper == MAP30) {
//addrH &= 0b1011 1111 A14 must always be low
addrH &= 0x3F;
addrH |= 0x80;
//write bank value
//page_num shift by 6 bits A14 >> A8(0)
bank = buff->page_num >> 6;
//bank gets written inside flash algo
write_page_bank_map30( bank, addrH, 0x9555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd );
write_page_verify( (0x80+addrH), buff, map30_prgrom_flash_wr);
}
if (buff->mapper == CNINJA) {
//addrH &= 0b1001 1111 A14-13 must always be low

View File

@ -1,5 +1,9 @@
#include "io.h"
#ifdef STM_CORE
uint8_t stm_debug_disable = 0;
#endif
//=================================================================================================
//
// I/O operations
@ -26,7 +30,12 @@ uint8_t io_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rd
#define BYTE_LEN 1
#define HWORD_LEN 2
switch (opcode) {
case IO_RESET: io_reset(); break;
case IO_RESET:
#ifdef STM_CORE
//operand sets whether to disable SWCLK/SWDIO on subequent io_reset calls
stm_debug_disable = operand;
#endif
io_reset(); break;
#ifdef NES_CONN
case NES_INIT: nes_init(); break;
#endif
@ -82,6 +91,15 @@ void io_reset()
//enable the GPIO blocks before can access them
CTL_ENABLE();
#ifdef STM_CORE
if (stm_debug_disable == DISABLE_STM_DEBUG){
//make the SWC/SWD pins like other GPIO
GPIOA->MODER = 0;
GPIOA->OSPEEDR = 0;
GPIOA->PUPDR = 0;
}
#endif
#ifndef C16nodef
//First set gameboy/GBA power, default to 3v (safe for both)
//pull up the GB power control pin

View File

@ -84,7 +84,6 @@ int main(void)
// 5. Wait for the registers to be updated (IWDG_SR = 0x00000000).
while( IWDG->SR ) { /* forever */ }
// 6. Refresh the counter value with IWDG_RLR (IWDG_KR = 0x0000 AAAA)
#define wdt_reset() IWDG->KR = 0x0000AAAA
wdt_reset();
//call this function atleast once a second to keep the device from resetting

View File

@ -101,6 +101,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
case CDREAM_CHR_FLASH_WR:
cdream_chrrom_flash_wr( operand, miscdata );
break;
case MAP30_PRG_FLASH_WR:
map30_prgrom_flash_wr( operand, miscdata );
break;
//8bit return values:
@ -133,6 +136,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r
rdata[RD0] = bank_table;
rdata[RD1] = bank_table>>8;
break;
case PPU_PAGE_WR_LFSR:
ppu_page_wr_lfsr( operand, miscdata );
break;
default:
//macro doesn't exist
return ERR_UNKN_NES_OPCODE;
@ -828,6 +834,57 @@ uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8
return i;
}
/* Desc:NES PPU Page Write Random from LFSR
* decode A13 from addrH to set /A13 as expected
* NOTE: this is a /WE controlled write
* Pre: nes_init() setup of io pins
* Post:address left on bus
* data bus left clear
* Rtn: Index of last byte read
*/
void ppu_page_wr_lfsr( uint16_t addr, uint8_t data )
//TODO give other data sources
{
uint16_t i;
//addr with PPU /A13
if (addr < 0x2000) { //below $2000 A13 clear, /A13 set
addr |= PPU_A13N_WORD;
} //above PPU $1FFF, A13 set, /A13 clear
//get the first byte of data
data = lfsr_32();
for (i=0; i<256; i++) {
ADDR_SET( addr ); //returns data bus to input on AHL devices..
DATA_OP();
//put data on bus
DATA_SET(data);
NOP();
//set CHR /RD and /WR
CSWR_LO();
//do some things that take time
data = lfsr_32();
addr++;
//latch data to memory
CSWR_HI();
}
//clear data bus
DATA_IP();
}
/* Desc:NES DUAL PORT PPU Page Read with optional USB polling
* /A13 ignored
@ -926,7 +983,7 @@ void mmc1_wr( uint16_t addr, uint8_t data, uint8_t reset )
* Post:Byte written and ready for another write
* Rtn: None
*/
void nrom_prgrom_flash_wr( uint16_t addr, uint8_t data )
uint8_t nrom_prgrom_flash_wr( uint16_t addr, uint8_t data )
{
uint8_t rv;
@ -941,9 +998,11 @@ void nrom_prgrom_flash_wr( uint16_t addr, uint8_t data )
rv = nes_cpu_rd(addr);
usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data
} while (rv != nes_cpu_rd(addr));
//TODO handle timeout
return;
//return the post-written value
//may not be the desired value if there was a problem
//or if the byte wasn't erased enough..
return rv;
}
@ -1121,7 +1180,7 @@ void cnrom_chrrom_flash_wr( uint16_t addr, uint8_t data )
* Post:Byte written and ready for another write
* Rtn: None
*/
void mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data )
uint8_t mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data )
{
uint8_t rv;
@ -1139,9 +1198,8 @@ void mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data )
rv = nes_cpu_rd(addr);
usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data
} while (rv != nes_cpu_rd(addr));
//TODO handle timeout
return;
return rv;
}
@ -1301,4 +1359,34 @@ void cdream_chrrom_flash_wr( uint16_t addr, uint8_t data )
}
/* Desc:NES MAPPER30 PRG-ROM FLASH Write
* Pre: nes_init() setup of io pins
* cur_bank global var must be set to desired mapper register value
* bank_table global var must be set to base address of the bank table
* Post:Byte written and ready for another write
* Rtn: None
*/
uint8_t map30_prgrom_flash_wr( uint16_t addr, uint8_t data )
{
uint8_t rv;
//unlock the flash
nes_cpu_wr(0xC000, 0x01); nes_cpu_wr(0x9555, 0xAA);
nes_cpu_wr(0xC000, 0x00); nes_cpu_wr(0xAAAA, 0x55);
nes_cpu_wr(0xC000, 0x01); nes_cpu_wr(0x9555, 0xA0);
//select desired bank and write data
nes_cpu_wr(0xC000, cur_bank);
nes_cpu_wr(addr, data);
do {
rv = nes_cpu_rd(addr);
usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data
} while (rv != nes_cpu_rd(addr));
return rv;
}
#endif //NES_CONN

View File

@ -5,6 +5,7 @@
#include "buffer.h" //TODO remove this junk when get rid of FALSE
#include "shared_dictionaries.h"
#include "shared_errors.h"
#include "stuff.h"
uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata );
@ -26,17 +27,19 @@ uint8_t nes_dualport_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first,
void mmc1_wr( uint16_t addr, uint8_t data, uint8_t reset );
void nrom_prgrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t nrom_prgrom_flash_wr( uint16_t addr, uint8_t data );
void nrom_chrrom_flash_wr( uint16_t addr, uint8_t data );
void mmc1_prgrom_flash_wr( uint16_t addr, uint8_t data );
void mmc1_chrrom_flash_wr( uint16_t addr, uint8_t data );
void unrom_prgrom_flash_wr( uint16_t addr, uint8_t data );
void cnrom_chrrom_flash_wr( uint16_t addr, uint8_t data );
void mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data );
void mmc3_chrrom_flash_wr( uint16_t addr, uint8_t data );
void mmc4_prgrom_sop_flash_wr( uint16_t addr, uint8_t data );
void mmc4_chrrom_flash_wr( uint16_t addr, uint8_t data );
void cdream_chrrom_flash_wr( uint16_t addr, uint8_t data );
uint8_t map30_prgrom_flash_wr( uint16_t addr, uint8_t data );
void ppu_page_wr_lfsr( uint16_t addr, uint8_t data );

View File

@ -35,6 +35,7 @@
//STM32 GPIO ports are effectively 16bits wide
//Use this type when need an int to hold pin mask
#define GPIO_PinMask uint16_t
#define wdt_reset() IWDG->KR = 0x0000AAAA
#endif
//This file contains pinout translations from AVR names to "kazzo" names
@ -1491,10 +1492,10 @@ void software_AXL_CLK();
#ifdef STM_NES
//TODO BLINDLY COPIED FROM STM6, will not work AS-IS
// PE0 "A0" mcupinC0
// PE0 "A0" mcupinB2
// TODO!!!
#define E0bank GPIOC
#define E0 (0U)
#define E0bank GPIOB
#define E0 (2U)
// PE1 "D0" mcupinB2
#define E1bank GPIOB
@ -1598,21 +1599,21 @@ void software_AXL_CLK();
#endif //STM_CORE
#ifdef STM_NES //TODO
#define EXT_IP_PU(bank, pin) //bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR |= (PUPDR_PU<<(pin*2))
#define EXT_IP_FL(bank, pin) //bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR &= ~(PUPDR_PU<<(pin*2))
#define EXT_OP(bank, pin) //bank->MODER |= (MODER_OP<<(pin*2))
#define EXT_OD(bank, pin) //bank->OTYPER |= (OTYPER_OD<<(pin)) //open drain has no effect when pin is input
#define EXT_PP(bank, pin) //bank->OTYPER &= ~(OTYPER_OD<<(pin))
#define EXT_SET_LO(bank, pin) //bank->BRR = 1<<pin
#define EXT_SET_HI(bank, pin) //bank->BSRR = 1<<pin
#define EXT_RD(bank, pin, val) //val = (bank->IDR & (1<<pin))
#ifdef STM_NES
#define EXT_IP_PU(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR |= (PUPDR_PU<<(pin*2))
#define EXT_IP_FL(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR &= ~(PUPDR_PU<<(pin*2))
#define EXT_OP(bank, pin) bank->MODER |= (MODER_OP<<(pin*2))
#define EXT_OD(bank, pin) bank->OTYPER |= (OTYPER_OD<<(pin)) //open drain has no effect when pin is input
#define EXT_PP(bank, pin) bank->OTYPER &= ~(OTYPER_OD<<(pin))
#define EXT_SET_LO(bank, pin) bank->BRR = 1<<pin
#define EXT_SET_HI(bank, pin) bank->BSRR = 1<<pin
#define EXT_RD(bank, pin, val) val = (bank->IDR & (1<<pin))
//NOTE: STM registers are 16bit "halfwords" so must provide a 16bit val
//each pin needs it's own enable macro
#define EXT_A0_ENABLE() //ADDR_EN_CLK() //unnecessarily enables both GPIO banks for STM adapter, oh well
#define EXT_D0_ENABLE() //DATA_EN_CLK()
#define EXT_D8_10_ENABLE() //DATA_EN_CLK()
#define EXT_A0_ENABLE() ADDR_EN_CLK() //unnecessarily enables both GPIO banks for STM adapter, oh well
#define EXT_D0_ENABLE() DATA_EN_CLK()
#define EXT_D8_10_ENABLE() DATA_EN_CLK()
#endif

View File

@ -0,0 +1,45 @@
#ifndef _ramfuncs_h
#define _ramfuncs_h
#include "pinport.h"
//#define RAMFUNC __attribute__ ((long_call, section (".ramfunctions")))
//#define RAMFUNC __attribute__ ((long_call, section (".data")))
//void ledRAM(void ) __attribute__ ((section(".data")))
//__attribute__ ((section(".ram"))) void ledRAM(void )
//__attribute__ ((section(".fastrun"), noinline, noclone)) void ledRAM() //david
//__attribute__ ((section(".ramfunctions"), noinline, noclone )) void ledRAM() //paul works! if in nokeep.ld
//__attribute__ ((section(".ramfunctions"), noinline)) void ledRAM() //paul works! if in nokeep.ld
//noinline seems to be required, I guess gcc optimizes it out of ram negating our effort..
//noclone seems like a good idea too based on what it appears to mean: The function attribute noinline no longer prevents GCC from cloning the function. A new attribute noclone has been introduced for this purpose. Cloning a function means that it is duplicated and the new copy is specialized for certain contexts (for example when a parameter is a known constant).
//void ledRAM()
//void ledRAM()
//#define RAMFUNC (__attribute__ ((section(".fastrun"), noinline, noclone))) //void ledRAM() //david
//#define RAMFUNC __attribute__ ((long_call, section (".ramfunctions")))
//#define RAMFUNC __attribute__ ((noinline, noclone, section (".fastrun")))
//This site helped me understand basics of sections and linker script:
// https://ez.analog.com/dsp/software-and-development-tools/gnu-toolchain-blackfin/f/q-a/68624/run-a-specific-function-from-sram-gnu-gcc-compilation-tools
//David Viens of Plogue helped me with the tip on noinline which was keeping things from working for me
//
//Here's how ez.analog.com recommends setting up assembly functions:
//.section ".ramfunctions"
//.align 8
//.global PutOneChar
//.thumb
//.thumb_func
//.type PutOneChar, %function
//NOTE executing code from SRAM does seem to break arm-none-eabi-size as it pushes all .data to .text
//you can determine data size based on .map file __data_end__ location
#define RAMFUNC __attribute__ ((section (".fastrun"), noinline, noclone))
RAMFUNC void ledRAM();
#endif

83
firmware/source/stuff.c Normal file
View File

@ -0,0 +1,83 @@
#include "stuff.h"
uint32_t lfsr; //all bits set is an invalid state, initialize to a valid state
uint8_t stuff_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata )
{
#define RD_LEN 0
#define RD0 1
#define RD1 2
#define BYTE_LEN 1
#define HWORD_LEN 2
switch (opcode) {
case SET_LFSR_H_CLR_L:
lfsr = operand;
lfsr = lfsr<<16;
break;
case SET_LFSR_L:
lfsr = (lfsr & 0xFFFF0000) | operand;
break;
case RESET_LFSR:
lfsr = 1;
break;
default:
//opcode doesn't exist
return ERR_UNKN_MISC_OPCODE;
}
return SUCCESS;
}
void set_lfsr(uint32_t seed)
{
lfsr = seed;
}
//32bit linear feedback shift register
//has a total of 4Gbit random stream / 8bit = 512MByte
//call to get the next random byte from the lfsr
//http://www.xilinx.com/support/documentation/application_notes/xapp052.pdf
uint8_t lfsr_32()
{
//taps are LFSR bits 32, 22, 2, 1 when counting from 1
//taps are LFSR bits 31, 21, 1, 0 when counting from 0
uint8_t lsb;
uint8_t temp;
uint8_t count = 7;
while (count) {
count--;
//get bit0
lsb = lfsr;
//get bit1
temp = lfsr>>1;
//xor bits 0 & 1
lsb = lsb ^ temp;
//get bit21
temp = lfsr>>21;
//xor bits 0, 1, 21
lsb = lsb ^ temp;
//get bit31
temp = lfsr>>31;
//xor bits 0, 1, 21, 31
lsb = lsb ^ temp;
//shift the register and OR in the lsbit
lfsr = lfsr<<1 | (lsb&0x01);
}
//8bit return value
return lfsr;
}

12
firmware/source/stuff.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _stuff_h
#define _stuff_h
#include "pinport.h"
#include "shared_dictionaries.h"
#include "shared_errors.h"
uint8_t stuff_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rdata );
void set_lfsr(uint32_t seed);
uint8_t lfsr_32();
#endif

View File

@ -15,6 +15,7 @@ typedef struct setup_packet{
//typedef void (*write_funcptr) ( uint8_t addrH, uint8_t addrL, uint8_t data );
//typedef uint8_t (*read_funcptr) ( uint8_t addrH, uint8_t addrL );
typedef void (*write_funcptr) ( uint16_t addr, uint8_t data );
typedef uint8_t (*write_rv_funcptr) ( uint16_t addr, uint8_t data );
typedef uint8_t (*read_funcptr) ( uint16_t addr );
typedef void (*write_snes_funcptr) ( uint16_t addr, uint8_t data, uint8_t romsel );
typedef uint8_t (*read_snes_funcptr) ( uint16_t addr, uint8_t romsel );

View File

@ -165,6 +165,9 @@ USBSETUP uint16_t usbFunctionSetup(uint8_t data[8]) {
case DICT_CICCOM:
rv[RETURN_ERR_IDX] = ciccom_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] );
break;
case DICT_STUFF:
rv[RETURN_ERR_IDX] = stuff_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] );
break;
case DICT_BUFFER:

View File

@ -24,6 +24,7 @@
#include "swim.h"
#include "bootload.h"
#include "ciccom.h"
#include "stuff.h"
#include "types.h"
#include "shared_errors.h"
#include "shared_dictionaries.h"

View File

@ -4,18 +4,26 @@ local ciccom = {}
-- import required modules
local dict = require "scripts.app.dict"
local time = require "scripts.app.time"
-- file constants
--local resetpin = "AFL" --v2.0
--local datapin = "GBP" --v2.0
local resetpin = "SWC" --v2.0N
local datapin = "FREE" --v2.0N
-- local functions
local function start( debug )
--CIC reset & clock needs to be low to start
dict.pinport( "CTL_OP", "AFL")
dict.pinport( "CTL_SET_LO", "AFL") --CIC RESET LOW
--need to disable alternate function on SWCLK for STM_NES
dict.io( "IO_RESET", "DISABLE_STM_DEBUG")
dict.pinport( "CTL_OP", "GBP")
dict.pinport( "CTL_SET_LO", "GBP") --INL CIC DATA LOW
--CIC reset & clock needs to be low to start
dict.pinport( "CTL_OP", resetpin)
dict.pinport( "CTL_SET_LO", resetpin) --CIC RESET LOW
dict.pinport( "CTL_OP", datapin)
dict.pinport( "CTL_SET_LO", datapin) --INL CIC DATA LOW
--[[
@ -29,7 +37,7 @@ local function start( debug )
--now the CIC should be restarting
--takes ~0.5msec for it to get through boot sequence
jtag.sleep(0.01) --10msec to be overly safe
time.sleep(0.01) --10msec to be overly safe
--after that time it's waiting for a CIC reset pulse to wake it
--]]
@ -52,7 +60,7 @@ local function start( debug )
dict.pinport( "ADDR_SET", 0) --CIC CLK
dict.pinport( "CTL_SET_HI", "AFL")
dict.pinport( "CTL_SET_HI", resetpin)
--CIC is now waiting for data to be clocked in using CIC CLK & KEY_DATA_OUT
@ -67,40 +75,40 @@ local function set_opcode(opcode)
--MSbit is latched first
if opcode == "M" then
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
end
--now that "M" is written to CIC, end OPCODE write sequence by taking CIC RESET LO
dict.pinport( "CTL_SET_LO", "AFL")
dict.pinport( "CTL_SET_LO", resetpin)
end
@ -112,26 +120,26 @@ local function write(data)
if data == "H" then
--HORIZONTAL
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
@ -144,34 +152,34 @@ local function write(data)
elseif data == "V" then
--VERTICAL
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_HI", "GBP")
dict.pinport( "CTL_SET_HI", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
dict.pinport( "CTL_SET_LO", "GBP")
dict.pinport( "CTL_SET_LO", datapin)
dict.pinport( "ADDR_SET", 1)
dict.pinport( "ADDR_SET", 0)
end
@ -179,12 +187,6 @@ local function write(data)
end
local clock = os.clock
local function sleep(n) -- seconds
local t0 = clock()
while clock() - t0 <= n do end
end
-- global variables so other modules can use them
@ -197,7 +199,6 @@ ciccom.set_opcode = set_opcode
ciccom.write = write
ciccom.wotf = wotf
ciccom.rotf = rotf
ciccom.sleep = sleep
-- return the module's table
return ciccom

View File

@ -162,18 +162,12 @@ RETURN_DATA = 3
-- external call for pinport dictionary
local function pinport( opcode, operand, misc, data )
if not op_pinport[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_pinport.h")
return nil
end
assert ( op_pinport[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_pinport.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_pinport[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_pinport.h")
return nil
end
assert ( op_pinport[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_pinport.h")
--decode string operands into
operand = op_pinport[operand]
end
@ -194,7 +188,7 @@ local function pinport( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -213,18 +207,12 @@ end
-- external call for io dictionary
local function io( opcode, operand, misc, data )
if not op_io[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_io.h")
return nil
end
assert ( op_io[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_io.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_io[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_io.h")
return nil
end
assert ( op_io[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_io.h")
--decode string operands into
operand = op_io[operand]
end
@ -244,7 +232,7 @@ local function io( opcode, operand, misc, data )
data_len = data:byte(RETURN_LEN_IDX)
end
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -263,18 +251,12 @@ end
-- external call for nes dictionary
local function nes( opcode, operand, misc, data )
if not op_nes[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_nes.h")
return nil
end
assert ( op_nes[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_nes.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_nes[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_nes.h")
return nil
end
assert ( op_nes[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_game.h")
--decode string operands into
operand = op_nes[operand]
end
@ -295,7 +277,7 @@ local function nes( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -315,18 +297,12 @@ end
-- external call for snes dictionary
local function snes( opcode, operand, misc, data )
if not op_snes[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_snes.h")
return nil
end
assert ( op_snes[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_snes.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_snes[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_snes.h")
return nil
end
assert ( op_snes[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_snes.h")
--decode string operands into
operand = op_snes[operand]
end
@ -347,7 +323,7 @@ local function snes( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -366,18 +342,12 @@ end
-- external call for gameboy dictionary
local function gameboy( opcode, operand, misc, data )
if not op_gameboy[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_gameboy.h")
return nil
end
assert ( op_gameboy[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_gameboy.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_gameboy[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_gameboy.h")
return nil
end
assert ( op_gameboy[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_gameboy.h")
--decode string operands into
operand = op_gameboy[operand]
end
@ -398,7 +368,7 @@ local function gameboy( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -418,18 +388,12 @@ end
-- external call for gba dictionary
local function gba( opcode, operand, misc, data )
if not op_gba[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_gba.h")
return nil
end
assert ( op_gba[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_gba.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_gba[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_gba.h")
return nil
end
assert ( op_gba[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_gba.h")
--decode string operands into
operand = op_gba[operand]
end
@ -450,7 +414,7 @@ local function gba( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -470,18 +434,12 @@ end
-- external call for sega dictionary
local function sega( opcode, operand, misc, data )
if not op_sega[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_sega.h")
return nil
end
assert ( op_sega[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_sega.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_sega[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_sega.h")
return nil
end
assert ( op_sega[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_sega.h")
--decode string operands into
operand = op_sega[operand]
end
@ -502,7 +460,7 @@ local function sega( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -522,18 +480,12 @@ end
-- external call for n64 dictionary
local function n64( opcode, operand, misc, data )
if not op_n64[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_n64.h")
return nil
end
assert ( op_n64[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_n64.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_n64[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_n64.h")
return nil
end
assert ( op_n64[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_n64.h")
--decode string operands into
operand = op_n64[operand]
end
@ -554,7 +506,7 @@ local function n64( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -573,18 +525,12 @@ end
-- external call for swim dictionary
local function swim( opcode, operand, misc, data )
if not op_swim[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_swim.h")
return nil
end
assert ( op_swim[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_swim.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_swim[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_swim.h")
return nil
end
assert ( op_swim[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_swim.h")
--decode string operands into
operand = op_swim[operand]
end
@ -605,7 +551,7 @@ local function swim( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -629,18 +575,12 @@ end
-- external call for jtag dictionary
local function jtag( opcode, operand, misc, data )
if not op_jtag[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_jtag.h")
return nil
end
assert ( op_jtag[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_jtag.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_jtag[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_jtag.h")
return nil
end
assert ( op_jtag[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_jtag.h")
--decode string operands into
operand = op_jtag[operand]
end
@ -661,7 +601,7 @@ local function jtag( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -681,18 +621,12 @@ end
-- external call for bootload dictionary
local function bootload( opcode, operand, misc, data )
if not op_bootload[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_bootload.h")
return nil
end
assert ( op_bootload[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_bootload.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_bootload[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_bootload.h")
return nil
end
assert ( op_bootload[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_bootload.h")
--decode string operands into
operand = op_bootload[operand]
end
@ -713,7 +647,7 @@ local function bootload( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -735,18 +669,12 @@ end
-- external call for firmware update dictionary
local function fwupdate( opcode, operand, misc, data )
if not op_fwupdate[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_fwupdate.h")
return nil
end
assert ( op_fwupdate[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_fwupdate.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_fwupdate[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_fwupdate.h")
return nil
end
assert ( op_fwupdate[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_fwupdate.h")
--decode string operands into
operand = op_fwupdate[operand]
end
@ -767,7 +695,7 @@ local function fwupdate( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -788,18 +716,12 @@ end
-- external call for ciccom dictionary
local function ciccom( opcode, operand, misc, data )
if not op_ciccom[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_ciccom.h")
return nil
end
assert ( op_ciccom[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_ciccom.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_ciccom[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_ciccom.h")
return nil
end
assert ( op_ciccom[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_ciccom.h")
--decode string operands into
operand = op_ciccom[operand]
end
@ -820,7 +742,54 @@ local function ciccom( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
end
--process the return data string and return it to calling function
if data_len then
return string_to_int( data:sub(RETURN_DATA, data_len+RETURN_DATA), data_len)
else
return nil
end
end
-- external call for misc dictionary
local function stuff( opcode, operand, misc, data )
assert ( op_stuff[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_stuff.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
assert ( op_stuff[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_stuff.h")
--decode string operands into
operand = op_stuff[operand]
end
if not misc then misc = 0 end
local wLength, ep = default_rlen_1_in(op_stuff[opcode.."rlen"])
local count
count, data = usb_vend_xfr(
-- ep, dictionary wValue[misc:opcode] wIndex wLength data
ep, dict["DICT_STUFF"], ( misc<<8 | op_stuff[opcode]), operand, wLength, data)
--print(count)
local error_code, data_len
if ep == USB_IN then
error_code = data:byte(RETURN_ERR_IDX)
data_len = data:byte(RETURN_LEN_IDX)
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -903,18 +872,12 @@ end
-- external call for buffer dictionary
local function buffer( opcode, operand, misc, data, stringout )
if not op_buffer[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_buffer.h")
return nil
end
assert ( op_buffer[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_buffer.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_buffer[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_buffer.h")
return nil
end
assert ( op_buffer[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_buffer.h")
--decode string operands into
operand = op_buffer[operand]
end
@ -935,7 +898,7 @@ local function buffer( opcode, operand, misc, data, stringout )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -956,18 +919,12 @@ end
-- external call for operation dictionary
local function operation( opcode, operand, misc, data )
if not op_operation[opcode] then
print("ERROR undefined opcode:", opcode, "must be defined in shared_dict_operation.h")
return nil
end
assert ( op_operation[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_operation.h")
if not operand then
operand = 0
elseif type(operand) == "string" then
if not op_operation[operand] then
print("ERROR undefined operand:", operand, "must be defined in shared_dict_operation.h")
return nil
end
assert ( op_operation[operand] ,"\nERROR undefined operand: " .. operand .. " must be defined in shared_dict_operation.h")
--decode string operands into
operand = op_operation[operand]
end
@ -988,7 +945,7 @@ local function operation( opcode, operand, misc, data )
end
--print("error:", error_code, "data_len:", data_len)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " device error code: " .. error_code)
assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code)
if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then
print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX)
@ -1022,6 +979,7 @@ op_jtag = {}
op_bootload = {}
op_fwupdate = {}
op_ciccom = {}
op_stuff = {}
err_codes = {}
-- Dictionary table definitions initialized by calling parser
@ -1042,6 +1000,7 @@ create_dict_tables( op_jtag, "../shared/shared_dict_jtag.h")
create_dict_tables( op_bootload,"../shared/shared_dict_bootload.h")
create_dict_tables( op_fwupdate,"../shared/shared_dict_fwupdate.h")
create_dict_tables( op_ciccom, "../shared/shared_dict_ciccom.h")
create_dict_tables( op_stuff, "../shared/shared_dict_stuff.h")
create_dict_tables( err_codes, "../shared/shared_errors.h")
-- functions other modules are able to call
@ -1062,6 +1021,7 @@ dict.buffer_payload_in = buffer_payload_in
dict.buffer_payload_out = buffer_payload_out
dict.operation = operation
dict.fwupdate = fwupdate
dict.stuff = stuff
-- return the module's table
return dict

View File

@ -0,0 +1,98 @@
-- create the module's table
local files = {}
-- import required modules
local help = require "scripts.app.help"
-- file constants
-- local functions
--compare the two files return true if identical
--files should be closed prior to calling, files are closed after compared
local function compare(filename1, filename2, size_must_equal, debug)
file1 = assert(io.open(filename1, "rb"))
file2 = assert(io.open(filename2, "rb"))
local byte_str1
local byte_str2
local buffsize = 1
local byte_num = 0
local rv = true
while true do --exit when end of file 1 reached
--read next byte from the file and convert to binary
--gotta be a better way to read a half word (16bits) at a time but don't care right now...
byte_str1 = file1:read(buffsize)
byte_str2 = file2:read(buffsize)
if byte_str1 and byte_str2 then
--compare byte string from each file
if byte_str1 == byte_str2 then
--bytes matched count the bytes
byte_num = byte_num + 1
--print(filename1, "was:", help.hex(data1), filename2, "was:", help.hex(data2))
else
local data1 = string.unpack("B", byte_str1, 1)
local data2 = string.unpack("B", byte_str2, 1)
print("failed to verify byte number:", string.format("0x%X", byte_num))
print(filename1, "was:", help.hex(data1), filename2, "was:", help.hex(data2))
rv = false
break
end
elseif byte_str1 and not byte_str2 then
print("end of file:", filename2, "reached, it's smaller than", filename1 )
if size_must_equal then
print("files were not the same size")
rv = false
else
rv = "FILE2 larger than FILE1"
end
break
elseif byte_str2 and not byte_str1 then
print("end of file:", filename1, "reached, it's smaller than", filename2 )
if size_must_equal then
print("files were not the same size")
rv = false
else
rv = "FILE1 larger than FILE2"
end
break
else
--end of both files reached, they must have matched
break
rv = true
end
end
--close the files
assert(file1:close())
assert(file2:close())
return rv
end
-- global variables so other modules can use them
-- call functions desired to run when script is called/imported
-- functions other modules are able to call
files.compare = compare
-- return the module's table
return files

View File

@ -41,7 +41,9 @@ local function erase_main()
end
local function update_firmware(newbuild)
--skip is used because there is a ram pointer that often varies between builds
--we're never going back to main so this mismatch is allowed
local function update_firmware(newbuild, skip, forceup)
local error = false
@ -109,13 +111,19 @@ local function update_firmware(newbuild)
-- print("read data:", string.format("%X", readdata) )
if readdata ~= data then
print("\n\nERROR!!!! verifying byte number", help.hex(byte_num),
print("\n\nUnable to verify byte number", help.hex(byte_num),
" to flash expected:", help.hex(data), "was:", help.hex(readdata))
print("exiting because it's not safe to proceed...")
print("no changes to device flash were made\n\n")
error = true
break
if forceup then
print("continuing anyway because force update was set...")
elseif byte_num == skip then
print("there was an expected mismatch at byte:", help.hex(byte_num))
else
print("\n\nPROBLEM! with firmware updater verification exiting")
print("exiting because it's not safe to proceed...")
print("no changes to device flash were made\n\n")
error = true
break
end
--else
-- print("verified byte number", help.hex(byte_num),
-- " of flash ", help.hex(data), help.hex(readdata))

View File

@ -617,3 +617,53 @@ swim.stop_and_reset = stop_and_reset
-- return the module's table
return swim
-- NOTES old code that was once used to flash STM8 CICs from inlretro.lua
--Check for SWIM on A0
--[[
dict.io("IO_RESET")
print("start swim")
dict.io("SWIM_INIT", "SWIM_ON_A0")
----[[
if swim.start(true) then
--SWIM is now established and running at HIGH SPEED
snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead
swim.swim_test()
--swim.write_optn_bytes( true, true ) -- enable ROP, debug
--check if ROP set, allow clearing ROP and erasing CIC
--blindly erase STM8 CIC for now by disabling ROP
swim.disable_ROP_erase(true)
--open CIC file
local cic_file = assert(io.open("stm8_8KB_zero.bin", "rb"))
--local cic_file = assert(io.open("stm8_8KB_0xff.bin", "rb"))
--local cic_file = assert(io.open("stm8_8KB_testpattern.bin", "rb"))
--local cic_file = assert(io.open("NESCIC.bin", "rb"))
--local cic_file = assert(io.open("LIZv1.bin", "rb"))
--write CIC file
swim.write_flash( cic_file )
--close CIC file
assert(cic_file:close())
--set ROP & AFR0
swim.write_optn_bytes( true, true ) -- ROP not set, debug set
-- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
swim.stop_and_reset()
else
print("ERROR problem with STM8 CIC")
end
print("done flashing STM8 on A0")
dict.io("IO_RESET")
--]]

View File

@ -17,9 +17,13 @@ end
--send the number of KBytes flashed so it can report KBps
local function report(sizeKB)
local time = os.clock() - tstart
print("total time:", time, "seconds, average speed:", (sizeKB/time), "KBps")
print("total time:", time, "seconds, average speed:", string.format("%.2f", (sizeKB/time)), "KBps")
end
local function sleep(n) -- seconds
local t0 = os.clock()
while os.clock() - t0 <= n do end
end
-- global variables so other modules can use them
@ -30,6 +34,7 @@ end
-- functions other modules are able to call
time.start = start
time.report = report
time.sleep = sleep
-- return the module's table
return time

View File

@ -44,10 +44,6 @@ function main ()
local cart = require "scripts.app.cart"
local nes = require "scripts.app.nes"
local snes = require "scripts.app.snes"
-- local gameboy = require "scripts.app.gameboy"
-- local gba = require "scripts.app.gba"
-- local sega = require "scripts.app.sega"
-- local n64 = require "scripts.app.n64"
local dump = require "scripts.app.dump"
local erase = require "scripts.app.erase"
local flash = require "scripts.app.flash"
@ -55,8 +51,7 @@ function main ()
local jtag = require "scripts.app.jtag"
local ciccom = require "scripts.app.ciccom"
local fwupdate = require "scripts.app.fwupdate"
-- local bootload = require "scripts.app.bootload"
-- local crc32 = require "scripts.app.crc32"
local files = require "scripts.app.files"
-- =====================================================
@ -64,7 +59,9 @@ function main ()
-- The -- comments out a line, so you can add/remove the -- to select/deselect mapper scripts
-- =====================================================
--cart/mapper specific scripts
--local curcart = require "scripts.nes.nrom"
--NES mappers
local curcart = require "scripts.nes.nrom"
--local curcart = require "scripts.nes.mmc1"
--local curcart = require "scripts.nes.unrom"
--local curcart = require "scripts.nes.cnrom"
@ -72,7 +69,8 @@ function main ()
--local curcart = require "scripts.nes.mmc2"
--local curcart = require "scripts.nes.mmc4"
--local curcart = require "scripts.nes.mm2"
--local curcart = require "scripts.nes.mapper30"
--local curcart = require "scripts.nes.mapper30" --old version supported by v2.1
--local curcart = require "scripts.nes.mapper30v2" --has things required by v2.3.1
--local curcart = require "scripts.nes.bnrom"
--local curcart = require "scripts.nes.cdream"
--local curcart = require "scripts.nes.cninja"
@ -81,21 +79,25 @@ function main ()
--local curcart = require "scripts.nes.easyNSF"
--local curcart = require "scripts.nes.fme7"
--local curcart = require "scripts.nes.dualport"
--local curcart = require "scripts.snes.v3" --and GAMEBOY for now
--SNES boards
--local curcart = require "scripts.snes.v3"
--local curcart = require "scripts.snes.lorom_5volt" --catskull design
--local curcart = require "scripts.snes.v2proto"
--local curcart = require "scripts.snes.v2proto_hirom" --quickly becoming the master SNES script...
--local curcart = require "scripts.snes.v2proto_hirom" --becoming the master SNES script...
--GAMEBOY boards
--local curcart = require "scripts.gb.romonly"
local curcart = require "scripts.gb.mbc1"
--local curcart = require "scripts.gb.mbc1"
-- =====================================================
-- USERS: set cart_console to the to point to the mapper script you would like to use here.
-- =====================================================
--local cart_console = "NES" --includes Famicom
local cart_console = "NES" --includes Famicom
--local cart_console = "SNES"
--local cart_console = "SEGA"
--local cart_console = "N64"
local cart_console = "DMG"
--local cart_console = "DMG"
--local cart_console = "GBA"
--local cart_console = "SMS"
@ -113,10 +115,10 @@ function main ()
verify = false,
dumpram = false,
writeram = false,
dumpfile = "ignore/dump.bin",
flashfile = "",
verifyfile = "",
dumpram_filename = "",
dump_filename = "ignore/dump.bin",
flash_filename = "ignore/flash.bin",
verify_filename = "ignore/verifyout.bin",
dumpram_filename = "ignore/ramdump.bin",
writeram_filename = "",
}
-- =====================================================
@ -124,75 +126,29 @@ function main ()
-- These options can vary from cartridge to cartridge depending on specific hardware it contains.
-- =====================================================
local console_opts = {
mirror = "V", -- Only used by NROM, also possible to set to "H"
prg_rom_size_kb = 128, -- Size of NES PRG-ROM in kb
chr_rom_size_kb = 128, -- Size of NES CHR-ROM in kb
wram_size_kb = 0, -- Size of NES wram in kb
mirror = nil, -- Only used by latest INL discrete flash boards, set to "H" or "V" to change board mirroring
prg_rom_size_kb = 32, -- Size of NES PRG-ROM in KByte
chr_rom_size_kb = 8, -- Size of NES CHR-ROM in KByte
wram_size_kb = 0, -- Size of NES PRG-RAM/WRAM in KByte
}
local rv
-- rv = dict.pinport( "DATA_SET", 0xAA )
-- rv = dict.pinport( "DATA_RD" )
-- rv = dict.io("IO_RESET")
--[[ --TEST GB power
rv = dict.pinport( "CTL_ENABLE", "CIN" )
rv = dict.pinport( "CTL_OP", "CIN")
rv = dict.pinport( "CTL_SET_LO", "CIN")
print("CIN low 5v GB")
jtag.sleep(5)
rv = dict.pinport( "CTL_SET_HI", "CIN")
print("CIN high 3v GBA")
jtag.sleep(90)
rv = dict.pinport( "CTL_SET_LO", "CIN")
print("CIN low 5v GB")
jtag.sleep(10)
rv = dict.pinport( "CTL_SET_HI", "CIN")
print("CIN high 3v GBA")
jtag.sleep(10)
--]]
--if rv then
-- print(string.format("%X", rv))
--end
-- print(dict.io("EXP0_PULLUP_TEST"))
--
--BOOTLOADER TEST
-- print("jumping...")
--jump to 0xDEADBEEF
--dict.bootload("LOAD_ADDRH", 0xDEAD)
--dict.bootload("JUMP_ADDR", 0xBEEF) --for ARM LSbit must be odd (Thumb mode)
-- dict.bootload("LOAD_ADDRH", 0x1FFF)
-- dict.bootload("JUMP_ADDR", 0xCAC5)
-- dict.bootload("LOAD_ADDRH", 0x0800)
-- dict.bootload("JUMP_ADDR", 0x00C1)
--
-- dict.bootload("LOAD_ADDRH", 0x2000)
-- dict.bootload("JUMP_ADDR", 0x0430)
-- dict.bootload("JUMP_BL")
-- dict.bootload("JUMP_TEST")
-- print("jumped")
--
--Firmware update testing
--active development path (based on makefile in use)
--fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin")
--fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", nil, true ) --Know what I'm doing? force the update
--fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6DC, false) --INL6 skip ram pointer
--fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6E8, false) --INL_NES skip ram pointer
--released INL6 path (big square boards)
--fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV00.bin")
--fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV01.bin", 0x6DC, false) --INL6 skip ram pointer
--released INL_N path (smaller NESmaker boards)
--fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV00.bin")
--fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV01.bin", 0x6E8, false) --INL_NES skip ram pointer
-- debug = true
-- rv = cart.detect(debug)
--DETECT WHICH CART IS INSERTED,
--or take user input for manual override
@ -209,116 +165,6 @@ function main ()
dict.io("IO_RESET")
dict.io("NES_INIT")
---[[
--NES detect mirroring to gain mapper info
nes.detect_mapper_mirroring(true)
--[[
--NES detect memories to gain more mapper/board info
--check for CHR-RAM
nes.ppu_ram_sense(0x1000, true)
--check CHR-ROM flash ID
nes.read_flashID_chrrom_8K(true)
--check for EXP0 pullup..?
print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST"))
--try to read flash ID
--setup to fail if 16KB banks
print("32KB banks:")
dict.nes("NES_CPU_WR", 0x8000, 0xFF)
nes.read_flashID_prgrom_exp0(true)
--setup to pass if 16KB banks
print("16KB banks:")
dict.nes("NES_CPU_WR", 0x8000, 0x00)
nes.read_flashID_prgrom_exp0(true)
--try mapper 30 flash ID
print("\n")
--]]
-- jtag.run_jtag()
--Check for SWIM on A0
--[[
dict.io("IO_RESET")
print("start swim")
dict.io("SWIM_INIT", "SWIM_ON_A0")
----[[
if swim.start(true) then
--SWIM is now established and running at HIGH SPEED
snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead
swim.swim_test()
--swim.write_optn_bytes( true, true ) -- enable ROP, debug
--check if ROP set, allow clearing ROP and erasing CIC
--blindly erase STM8 CIC for now by disabling ROP
swim.disable_ROP_erase(true)
--open CIC file
local cic_file = assert(io.open("stm8_8KB_zero.bin", "rb"))
--local cic_file = assert(io.open("stm8_8KB_0xff.bin", "rb"))
--local cic_file = assert(io.open("stm8_8KB_testpattern.bin", "rb"))
--local cic_file = assert(io.open("NESCIC.bin", "rb"))
--local cic_file = assert(io.open("LIZv1.bin", "rb"))
--write CIC file
swim.write_flash( cic_file )
--close CIC file
assert(cic_file:close())
--set ROP & AFR0
swim.write_optn_bytes( true, true ) -- ROP not set, debug set
-- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
swim.stop_and_reset()
else
print("ERROR problem with STM8 CIC")
end
print("done flashing STM8 on A0")
dict.io("IO_RESET")
--]]
--[[
ciccom.start()
ciccom.set_opcode("M")
--now send operand "V" (0x56) or "H" (0x48)
ciccom.write("H")
dict.io("IO_RESET")
jtag.sleep(0.01) --10msec to be overly safe
---[[
--the CIC won't update the H/V stack flag unless it's reset
--reset caused during swim init doesn't count either bc it halts at reset vector
--test reading back CIC version
dict.io("SWIM_INIT", "SWIM_ON_A0")
--dict.io("SWIM_INIT", "SWIM_ON_EXP0")
if swim.start(true) then
swim.read_stack()
else
print("ERROR trying to read back CIC signature stack data")
end
swim.stop_and_reset()
print("done reading STM8 stack on A0\n")
dict.io("IO_RESET")
--]]
--determined all that could about mapper board
--set rom types and sizes
@ -328,35 +174,9 @@ function main ()
-- Perform requested operations with provided options.
curcart.process(process_opts, console_opts)
--[[
--FLASHING:
--erase cart
erase.erase_nes( true )
--open file
local file
--file = assert(io.open("inltest.bin", "rb"))
--file = assert(io.open("ignore/ddug2.bin", "rb"))
file = assert(io.open("ignore/lizard_v1.bin", "rb"))
--determine if auto-doubling, deinterleaving, etc,
--needs done to make board compatible with rom
--flash cart
flash.flash_nes( file, true )
--close file
assert(file:close())
--DUMPING:
--create new file
local file
file = assert(io.open("dump.bin", "wb"))
--dump cart into file
dump.dump_nes( file, true )
--close file
assert(file:close())
--]]
-- dict.io("IO_RESET")
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "SNES" then
@ -376,161 +196,20 @@ function main ()
--curcart.process( false, false, false, false, false, nil, nil, nil, true, true, "ignore/ramdump.bin", "ignore/dkc_paul.bin")
-- --old SNES code
--
-- snes_swimcart = nil
-- dict.io("IO_RESET")
-- print("start swim")
--
-- dict.io("SWIM_INIT", "SWIM_ON_A0")
-- --[[
-- if swim.start(true) then
-- --SWIM is now established and running at HIGH SPEED
-- snes_swimcart = false --don't want to use SWIM pin to control flash /OE, use SNES RESET (EXP0) instead
-- print("swim prgm mode")
--
-- --check if ROP set, allow clearing ROP and erasing CIC
-- --blindly erase STM8 CIC for now by disabling ROP
-- swim.disable_ROP_erase(true)
--
-- --open CIC file
-- local cic_file = assert(io.open("SNESCIC_flashmode.bin", "rb"))
--
-- --write CIC file
-- swim.write_flash( cic_file )
--
-- --close CIC file
-- assert(cic_file:close())
--
-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
-- swim.stop_and_reset()
-- else
-- print("ERROR problem with STM8 CIC")
-- end
-- --]]
--
-- dict.io("IO_RESET")
-- dict.io("SNES_INIT")
--
--
-- --SNES detect HiROM or LoROM
-- --nes.detect_mapper_mirroring(true)
-- local snes_mapping = "LOROM"
-- --SNES detect if there's save ram and size
--
-- ---[[
-- --SNES detect if able to read flash ID's
-- if not snes.read_flashID(true) then
-- print("ERROR unable to read flash ID")
-- return
-- end
--
-- erase.erase_snes( false )
-- --quick lame check to see if chip erased
-- ---[[
-- if snes.read_reset_vector(0, true) ~= 0xFFFF then
-- erase.erase_snes( false )
-- end
-- if snes.read_reset_vector( 1, true) ~= 0xFFFF then
-- erase.erase_snes( false )
-- end
-- if snes.read_reset_vector( 20, true) ~= 0xFFFF then
-- erase.erase_snes( false )
-- end
-- if snes.read_reset_vector( 63, true) ~= 0xFFFF then
-- erase.erase_snes( false )
-- end
-- --]]
--
-- --FLASHING:
-- --erase cart
---- erase.erase_snes( false )
-- --open file
-- local file
-- ---[[ file = assert(io.open("flash.bin", "rb"))
-- --file = assert(io.open("SF2_PTdump_capcomFINAL.bin", "rb"))
-- file = assert(io.open("ignore/MMXdump.bin", "rb"))
--
-- --calculate checksum
-- --local data = file:read("*all")
-- --print(crc32.hash(data))
--
-- --determine if auto-doubling, deinterleaving, etc,
-- --needs done to make board compatible with rom
-- --flash cart
-- flash.flash_snes( file, true )
-- --close file
-- assert(file:close())
-- --]]
--
-- dict.io("IO_RESET")
-- dict.io("SNES_INIT")
-- print("start swim")
--
-- --[[
-- dict.io("SWIM_INIT", "SWIM_ON_A0")
-- --flash final CIC code
-- if swim.start(true) then
-- --SWIM is now established and running at HIGH SPEED
-- --swim.printCSR()
-- --snes_swimcart = false
-- --print("main swimcart", snes_swimcart)
--
-- print("swimming")
-- swim.swim_test()
--
-- --check if ROP set, allow clearing ROP and erasing CIC
-- --blindly erase STM8 CIC for now by disabling ROP
-- -- swim.disable_ROP_erase(true)
--
-- --open CIC file
-- local cic_file = assert(io.open("SNESCIC.bin", "rb"))
--
-- --write CIC file
---- swim.write_flash( cic_file )
--
-- --close CIC file
-- assert(cic_file:close())
--
-- --write option bytes
-- -- enable ROP, debug
---- swim.write_optn_bytes( false, true )
--
-- --read stack
-- swim.read_stack(true)
--
-- -- reset STM8 CIC and end SWIM comms to it can execute what we just flashed
-- swim.stop_and_reset()
--
-- else
-- print("ERROR problem with STM8 CIC")
-- end
-- --]]
--
--
-- --DUMPING:
-- --create new file
-- print("dumping SNES")
-- snes.read_reset_vector(0, true)
-- local file
-- file = assert(io.open("snesdump.bin", "wb"))
-- --dump cart into file
-- -- swim.start()
-- dump.dump_snes( file, snes_mapping, true )
--
-- --close file
-- assert(file:close())
--trick to do this at end while debugging so don't have to wait for it before starting
-- erase.erase_snes( false )
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "SEGA" then
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "N64" then
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "DMG" then
print("testing gameboy")
@ -554,12 +233,18 @@ function main ()
print("GBP reset (pullup) = 3v")
--]]
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "GBA" then
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
elseif cart_console == "SMS" then
--always end with and gpio reset incase the script didn't
dict.io("IO_RESET")
end
end

View File

@ -133,7 +133,6 @@ local function dump_prgrom( file, rom_size_KB, debug )
end
--host flash one byte/bank at a time...
--this is controlled from the host side one bank at a time
--but requires mapper specific firmware flashing functions
local function flash_prgrom(file, rom_size_KB, debug)

View File

@ -0,0 +1,571 @@
-- create the module's table
local mapper30v2 = {}
-- import required modules
local dict = require "scripts.app.dict"
local nes = require "scripts.app.nes"
local dump = require "scripts.app.dump"
local flash = require "scripts.app.flash"
local time = require "scripts.app.time"
local files = require "scripts.app.files"
local ciccom = require "scripts.app.ciccom"
local time = require "scripts.app.time"
local swim = require "scripts.app.swim"
-- file constants & variables
local mapname = "MAP30"
-- local functions
--read PRG-ROM flash ID
local function prgrom_manf_id( debug )
if debug then print("reading PRG-ROM manf ID") end
--no bus conflicts
--$8000-BFFF writes to flash
--$C000-FFFF writes to mapper
--ROM A14 is mapper controlled
--
--A15 14 - 13 12
-- 1 1 0 1 : 0x5555 -> bank1, $9555
-- 1 0 1 0 : 0x2AAA -> bank0, $AAAA
dict.nes("NES_CPU_WR", 0xC000, 0x01)
dict.nes("NES_CPU_WR", 0x9555, 0xAA)
dict.nes("NES_CPU_WR", 0xC000, 0x00)
dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xC000, 0x01)
dict.nes("NES_CPU_WR", 0x9555, 0x90)
rv = dict.nes("NES_CPU_RD", 0x8000)
if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end
rv = dict.nes("NES_CPU_RD", 0x8001)
if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end
--exit software
dict.nes("NES_CPU_WR", 0x8000, 0xF0)
end
--select different chr-ram banks and verify all 4 banks are present
local function map30_chrbank_test()
dict.nes("NES_CPU_WR", 0xC000, 0x00) --CHR bank 0
dict.nes("NES_PPU_WR", 0x0000, 0xAA)
dict.nes("NES_CPU_WR", 0xC000, 0x20) --CHR bank 1
dict.nes("NES_PPU_WR", 0x0000, 0x55)
dict.nes("NES_CPU_WR", 0xC000, 0x40) --CHR bank 2
dict.nes("NES_PPU_WR", 0x0000, 0xCC)
dict.nes("NES_CPU_WR", 0xC000, 0x60) --CHR bank 3
dict.nes("NES_PPU_WR", 0x0000, 0x33)
--read back
local test = true
dict.nes("NES_CPU_WR", 0xC000, 0x00) --CHR bank 0
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0xAA then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("bank0 read:", string.format("%X", rv))
test = false
end
dict.nes("NES_CPU_WR", 0xC000, 0x20) --CHR bank 1
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0x55 then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("bank1 read:", string.format("%X", rv))
test = false
end
dict.nes("NES_CPU_WR", 0xC000, 0x40) --CHR bank 2
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0xCC then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("bank2 read:", string.format("%X", rv))
test = false
end
dict.nes("NES_CPU_WR", 0xC000, 0x60) --CHR bank 3
rv = dict.nes("NES_PPU_RD", 0x0000)
if rv ~= 0x33 then
print( "\nFAIL CHR-RAM BANKING TEST!!!\n")
print("bank3 read:", string.format("%X", rv))
test = false
end
if test then
print("CHR-RAM BANKING TEST PASSED")
return true
else
print("CHR-RAM BANKING TEST FAILED")
return false
end
end
--dump the CHR ROM
local function dump_chrrom( file, rom_size_KB, debug )
--CHR-ROM dump all 8KB, most of this code is overkill for NROM.
-- but follows same format as banked mappers
local KB_per_read = 8
local num_reads = rom_size_KB / KB_per_read
local read_count = 0
local addr_base = 0x00 -- $0000
while ( read_count < num_reads ) do
if debug then print( "dump CHR part ", read_count, " of ", num_reads) end
dump.dumptofile( file, KB_per_read, addr_base, "NESPPU_PAGE", false )
read_count = read_count + 1
end
end
local function exercise_chrram(debug)
if debug then print("exercising CHR-RAM") end
dict.stuff("RESET_LFSR") --sets it to 1
-- dict.stuff("SET_LFSR_L", 0) --lock it up to clear ram
-- dict.stuff("SET_LFSR_L", 2) --give different seed for testing fails
--write random data to all 4 banks
local bank = 0x00
while (bank<=0x60) do
--select the bank
dict.nes("NES_CPU_WR", 0xC000, bank )
bank = bank + 0x20
local addr = 0x0000
while (addr<0x2000) do
dict.nes("PPU_PAGE_WR_LFSR", addr)
addr = addr + 256
end
end
local filename = "ignore/chrramdump.bin"
local file = assert(io.open(filename, "wb"))
bank = 0x00
while (bank<=0x60) do
--select the bank
dict.nes("NES_CPU_WR", 0xC000, bank )
bank = bank + 0x20
dump_chrrom(file, 8)
end
--close the file
assert(file:close())
--re-open & compare dump with known lsfr bitstream
local goodfile = "ignore/lfsr_32KB.bin"
--compare the flash file vs post dump file
if ( files.compare( filename, goodfile, true ) ) then
print("CHR-RAM test verified")
return true
else
print("FAILURE! CHR-RAM test failed")
return false
end
end
local function test_soft_mir_switch( debug )
--set to Horiz
if debug then print("test setting soft mir switch to Horiz") end
ciccom.start()
ciccom.set_opcode("M")
--now send operand "V" (0x56) or "H" (0x48)
ciccom.write("H")
dict.io("IO_RESET")
time.sleep(0.05) --10msec to be overly safe
--the CIC won't update the H/V stack flag unless it's reset
--reset caused during swim init doesn't count either bc it halts at reset vector
--test reading back CIC version
dict.io("SWIM_INIT", "SWIM_ON_A0")
--dict.io("SWIM_INIT", "SWIM_ON_EXP0")
if swim.start() then
swim.read_stack()
else
print("ERROR trying to read back CIC signature stack data")
end
swim.stop_and_reset()
time.sleep(0.05) --10msec to be overly safe
dict.io("NES_INIT")
if ( nes.detect_mapper_mirroring() == "HORZ" ) then
if debug then print("pass Horiz soft mirror switch") end
else
print("\n\n\nFAIL HORZ SOFT MIRROR SWITCH TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n")
--don't continue
return false
end
dict.io("IO_RESET")
--set to Vert
ciccom.start()
ciccom.set_opcode("M")
--now send operand "V" (0x56) or "H" (0x48)
ciccom.write("V")
dict.io("IO_RESET")
time.sleep(0.05) --10msec to be overly safe
--the CIC won't update the H/V stack flag unless it's reset
--reset caused during swim init doesn't count either bc it halts at reset vector
--test reading back CIC version
dict.io("SWIM_INIT", "SWIM_ON_A0")
--dict.io("SWIM_INIT", "SWIM_ON_EXP0")
if swim.start() then
swim.read_stack()
else
print("ERROR trying to read back CIC signature stack data")
end
swim.stop_and_reset()
--print("done reading STM8 stack on A0\n")
dict.io("NES_INIT")
if ( nes.detect_mapper_mirroring() == "VERT" ) then
if debug then print("pass Vert soft mirror switch") end
else
print("\n\n\nFAIL VERT SOFT MIRROR SWITCH TEST!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n")
--don't continue
return false
end
dict.io("IO_RESET")
dict.io("NES_INIT")
print("Software mirroring switch operation verified working")
return true
end
--dump the PRG ROM
local function dump_prgrom( file, rom_size_KB, debug )
local KB_per_read = 16
local num_reads = rom_size_KB / KB_per_read
local read_count = 0
local addr_base = 0x80 -- $8000
while ( read_count < num_reads ) do
if debug then print( "dump PRG part ", read_count, " of ", num_reads) end
--select desired bank(s) to dump
--mapper 30 bank register is $C000-FFFF
dict.nes("NES_CPU_WR", 0xFC80, read_count) --16KB @ CPU $8000
dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false )
read_count = read_count + 1
end
end
--REQ: addr must be in the first bank $8000-BFFF
local function wr_prg_flash_byte(addr, value, bank, debug)
if (addr < 0x8000 or addr > 0xBFFF) then
print("\n ERROR! flash write to PRG-ROM", string.format("$%X", addr), "must be $8000-BFFF \n\n")
return
end
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0xAA)
dict.nes("NES_CPU_WR", 0xC000, 0x00) dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0xA0)
dict.nes("NES_CPU_WR", 0xC000, bank)
dict.nes("NES_CPU_WR", addr, value)
local rv = dict.nes("NES_CPU_RD", addr)
local i = 0
while ( rv ~= value ) do
rv = dict.nes("NES_CPU_RD", addr)
i = i + 1
end
if debug then print(i, "naks, done writing byte.") end
--TODO report error if write failed
end
--this is controlled from the host side one bank at a time
--but requires mapper specific firmware flashing functions
local function flash_prgrom(file, rom_size_KB, debug)
--init_mapper()
--test some bytes
--wr_prg_flash_byte(0x0000, 0xA5, 0, true)
--wr_prg_flash_byte(0xFFFF, 0x5A, 1, true)
print("\nProgramming PRG-ROM flash")
local base_addr = 0x8000 --writes occur $8000-9FFF
local bank_size = 16*1024 --UNROM 16KByte per PRG bank
local buff_size = 1 --number of bytes to write at a time
local cur_bank = 0
local total_banks = rom_size_KB*1024/bank_size
local byte_num --byte number gets reset for each bank
local byte_str, data, readdata
--set the bank table address
dict.nes("SET_BANK_TABLE", banktable_base)
if debug then print("get banktable:", string.format("%X", dict.nes("GET_BANK_TABLE"))) end
while cur_bank < total_banks do
if (cur_bank %4 == 0) then
print("writting PRG bank: ", cur_bank, " of ", total_banks-1)
end
--select bank to flash
dict.nes("SET_CUR_BANK", cur_bank)
if debug then print("get bank:", dict.nes("GET_CUR_BANK")) end
--program the entire bank's worth of data
--[[ This version of the code programs a single byte at a time but doesn't require
-- mapper specific functions in the firmware
print("This is slow as molasses, but gets the job done")
byte_num = 0 --current byte within the bank
while byte_num < bank_size do
--read next byte from the file and convert to binary
byte_str = file:read(buff_size)
data = string.unpack("B", byte_str, 1)
--write the data
--SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo:
--wr_prg_flash_byte(base_addr+byte_num, data, cur_bank, false) --0.7KBps
--EASIEST FIRMWARE SPEEDUP: 5x faster, create MMC3 write byte function:
--can use same write function as NROM
dict.nes("MAP30_PRG_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above)
if (verify) then
readdata = dict.nes("NES_CPU_RD", base_addr+byte_num)
if readdata ~= data then
print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata)
end
end
byte_num = byte_num + 1
end
--]]
--Have the device write a banks worth of data
flash.write_file( file, bank_size/1024, mapname, "PRGROM", false )
cur_bank = cur_bank + 1
end
print("Done Programming PRG-ROM flash")
end
--Cart should be in reset state upon calling this function
--this function processes all user requests for this specific board/mapper
local function process(process_opts, console_opts)
local test = process_opts["test"]
local read = process_opts["read"]
local erase = process_opts["erase"]
local program = process_opts["program"]
local verify = process_opts["verify"]
local dumpfile = process_opts["dump_filename"]
local flashfile = process_opts["flash_filename"]
local verifyfile = process_opts["verify_filename"]
local rv = nil
local file
-- TODO: Cleanup needed here, support chrrom, make this look more like other mapper scripts.
local prg_size = console_opts["prg_rom_size_kb"]
--local filetype = "nes"
local filetype = "bin"
--initialize device i/o for NES
dict.io("IO_RESET")
dict.io("NES_INIT")
--test cart by reading manf/prod ID
if test then
print("Testing ", mapname)
nes.detect_mapper_mirroring(true)
nes.ppu_ram_sense(0x1000, true)
print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST"))
prgrom_manf_id( debug )
--test CHR-RAM banking
rv = map30_chrbank_test()
--exit script if test fails
if not rv then return end
--test CHR-RAM
rv = exercise_chrram()
--exit script if test fails
if not rv then return end
--test software mirroring switch
rv = test_soft_mir_switch()
if not rv then return end
end
--dump the cart to dumpfile
if read then
print("\nDumping PRG-ROM...")
file = assert(io.open(dumpfile, "wb"))
--dump cart into file
time.start()
dump_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
print("DONE Dumping PRG-ROM")
end
--erase the cart
if erase then
print("\nerasing", mapname);
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0xAA)
dict.nes("NES_CPU_WR", 0xC000, 0x00) dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0x80)
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0xAA)
dict.nes("NES_CPU_WR", 0xC000, 0x00) dict.nes("NES_CPU_WR", 0xAAAA, 0x55)
dict.nes("NES_CPU_WR", 0xC000, 0x01) dict.nes("NES_CPU_WR", 0x9555, 0x10)
local i = 0
--TODO create some function to pass the read value
--that's smart enough to figure out if the board is actually erasing or not
rv = 0xFF
while ( rv ~= dict.nes("NES_CPU_RD", 0x8000)) do
rv = dict.nes("NES_CPU_RD", 0x8000)
i = i + 1
end
--TODO verify erase
--for now we'll just report an error if naks isn't sizable
--AVR is slower so naks are lower, tested was ~60
if (i < 10) then
print("ERROR flash did not appear to accept erase command, naks:", i)
return
else
print(i, "naks, done erasing prg.");
end
end
--program flashfile to the cart
if program then
--open file
file = assert(io.open(flashfile, "rb"))
--determine if auto-doubling, deinterleaving, etc,
--needs done to make board compatible with rom
if filetype == "nes" then
--advance past the 16byte header
--TODO set mirroring bit via ciccom
local buffsize = 1
local byte
local count = 1
for byte in file:lines(buffsize) do
local data = string.unpack("B", byte, 1)
--print(string.format("%X", data))
count = count + 1
if count == 17 then break end
end
end
--flash cart
time.start()
flash_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
end
--verify flashfile is on the cart
if verify then
--for now let's just dump the file and verify manually
file = assert(io.open(verifyfile, "wb"))
--dump cart into file
time.start()
dump_prgrom(file, prg_size, false)
time.report(prg_size)
--close file
assert(file:close())
--compare the flash file vs post dump file
if (files.compare( verifyfile, flashfile, true ) ) then
print("\nSUCCESS! Flash verified")
else
print("\n\n\n FAILURE! Flash verification did not match")
end
end
dict.io("IO_RESET")
return
end
-- global variables so other modules can use them
-- call functions desired to run when script is called/imported
-- functions other modules are able to call
mapper30v2.process = process
-- return the module's table
return mapper30v2

View File

@ -265,7 +265,6 @@ local function dump_wram( file, rom_size_KB, debug )
end
--write a single byte to PRG-ROM flash
--PRE: assumes mapper is initialized and bank is selected as prescribed in mapper_init
--REQ: addr must be in the first bank $8000-9FFF
local function wr_prg_flash_byte(addr, value, debug)

View File

@ -197,7 +197,6 @@ local function wr_bank_table(base, entries, numtables)
end
--host flash one byte/bank at a time...
--this is controlled from the host side one bank at a time
--but requires mapper specific firmware flashing functions
local function flash_prgrom(file, rom_size_KB, debug)

View File

@ -21,7 +21,15 @@
//goal to be safe state for all hardware
//LED is pulled up (DIM) to help indicate this io state
//FFs are disabled due to pull up on /OE
#define IO_RESET 0
#define IO_RESET 0
//operand: 1-disable STM SW DEBUG PORT in the process
//SWD & SWC pins have default GPIO settings different from all others
//this sets a static variable so anytime the firmware calls io_reset
//the debug remains disabled. But if the host calls IO_RESET
//whatever operand is provided is set.
#define DISABLE_STM_DEBUG 0x10
//sending no operand (0) clears the disable debug setting in firmware
//NES cartridge interfacing setup
//set outputs as required
@ -71,6 +79,8 @@
#define GB_POWER_3V 10
//Test EXP0 drive with pull up
//This is an important test if reling on pulling up EXP0 pin to drive the cart's pin.
//EXP0 is used for various things and may have pull up/down of it's own or significant load

View File

@ -47,7 +47,7 @@
#define DISC_PUSH_EXP0_PRGROM_WR 0x06
#define MMC3_PRG_FLASH_WR 0x07
#define MMC3_PRG_FLASH_WR 0x07 //TODO set return lengths for all these functions
#define MMC3_CHR_FLASH_WR 0x08
#define NROM_PRG_FLASH_WR 0x09
#define NROM_CHR_FLASH_WR 0x0A
@ -58,14 +58,20 @@
#define MMC1_CHR_FLASH_WR 0x0F //needs cur_bank set prior to calling
#define MMC4_PRG_SOP_FLASH_WR 0x10 //current bank must be selected, & needs cur_bank set prior to calling
#define MMC4_CHR_FLASH_WR 0x11 //needs cur_bank set prior to calling
#define MAP30_PRG_FLASH_WR 0x12 //needs cur_bank set prior to calling
#define SET_CUR_BANK 0x20
#define SET_BANK_TABLE 0x21
#define NES_M2_LOW_WR 0x22 //like CPU WR, but M2 stays low
//write a page worth of random data to ppu
//make sure the LSFR is initialized first in misc dict
//send start address in operand, doesn't have to be page boundary
//but A13 and /A13 get set once based on provided address.
#define PPU_PAGE_WR_LFSR 0x23
//=============================================================================================
// OPCODES WITH OPERAND AND RETURN VALUE plus SUCCESS/ERROR_CODE
//=============================================================================================

View File

@ -111,6 +111,7 @@
#define SWD_ 17
// PC18 "SWC" mcu debug
#define C18_ 18
#define SWC_ 18
// PC19 "AFL" flipflop addr expansion for FF0-7 (also CIC RESET on NES)
#define C19_ 19
#define AFL_ 19

View File

@ -0,0 +1,28 @@
#ifndef _shared_dict_stuff_h
#define _shared_dict_stuff_h
//define dictionary's reference number in the shared_dictionaries.h file
//then include this dictionary file in shared_dictionaries.h
//The dictionary number is literally used as usb transfer request field
//the opcodes and operands in this dictionary are fed directly into usb setup packet's wValue wIndex fields
//=============================================================================================
//=============================================================================================
// STUFF DICTIONARY
//
// opcodes contained in this dictionary must be implemented in firmware/source/stuff.c
//
//=============================================================================================
//=============================================================================================
//clear the LOWER half word, and set the upper
//should do this one first if you want to set > 16bit seed
#define SET_LFSR_H_CLR_L 1 //operand = upper half word of LFSR
//set the LOWER half word of LFSR
#define SET_LFSR_L 2 //operand = lower half word of LFSR
//if you don't use these setters, the seed value starts with 1
#define RESET_LFSR 3 //sets seed to 1
#endif

View File

@ -281,5 +281,15 @@
//=============================================================================================
//=============================================================================================
//=============================================================================================
//=============================================================================================
#define DICT_STUFF 17
#include "shared_dict_stuff.h"
//miscelaneous stuff dictionary if you just need a few small calls that
//you don't want to create a specific dictionary for you can stuff
//them here.
//=============================================================================================
//=============================================================================================
#endif

View File

@ -9,6 +9,7 @@
#define ERR_UNKN_DICTIONARY 128
#define ERR_UNKN_SWIM_OPCODE 130
#define ERR_UNKN_MISC_OPCODE 131
#define ERR_UNKN_JTAG_OPCODE 135
#define ERR_UNKN_CICCOM_OPCODE 136