Moved usbMsgPtr to usb_buff ram successfully.

Deleted shared_usb.h because it was a copy of shared_dict_usb.h

This build_stm .hex does include some NROM flash updates to allow
checking if the last byte programmed successfully because was having
weird problems with that.  But not ready to commit all those changes and
they're highly unrelated to this commit.

Now that usb code doesn't use any .data nor .bss need to fully separate
the USB firmware code from the application.  Main way to do this will be
to have usb code be effectively entirely interrupt driven.

Thinking the best way to initialize usb will to have the application
code jump to the USB ISR and maybe use some messaging system with the 2
unused usb_buff indexes (4Bytes).

The USB code will include the vector table, so it will point to the
reset handler, but that will point to the application code's reset
handler, just need to make sure that's at a fixed location.

The USB code is just over 1KByte last I checked, so dedicating 2KByte
should be good.  Erase granularity is 1 page (1KB on C6, 2KB on RB).  So
that will work well.  Write protection granularity is 4KByte, but really
we shouldn't need to use write protection as there will always be the
built in bootloader to save a bricked device.
This commit is contained in:
Paul XPS 2018-11-27 02:00:47 -06:00
parent a8d9fe55bb
commit d0c8ab82fe
10 changed files with 1735 additions and 1675 deletions

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-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o (__aeabi_unwind_cpp_pr0)
C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o (__aeabi_unwind_cpp_pr0)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o) (restore_core_regs)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
@ -49,11 +49,11 @@ c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o) (_exit)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o (__gnu_thumb1_case_uqi)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o)
C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o (__gnu_thumb1_case_shi)
C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o (__gnu_thumb1_case_shi)
c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o (__gnu_thumb1_case_uhi)
Allocating common symbols
Common symbol size file
@ -89,23 +89,23 @@ Discarded input sections
.ARM.exidx 0x00000000 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.ARM.attributes
0x00000000 0x1b c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.text 0x00000000 0x0 source/bootload.o (symbol from plugin)
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.rodata.oper_info
0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x00000000 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.text 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.text 0x00000000 0x0 source/buffer.o (symbol from plugin)
.text 0x00000000 0x0 source/ciccom.o (symbol from plugin)
.text 0x00000000 0x0 source/dump.o (symbol from plugin)
@ -125,12 +125,12 @@ Discarded input sections
.text 0x00000000 0x0 source/usb.o (symbol from plugin)
.text 0x00000000 0x0 source_stm_only/stm_init.o (symbol from plugin)
.text 0x00000000 0x0 source_stm_only/usbstm.o (symbol from plugin)
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.data 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.bss 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.ARM.extab 0x00000000 0x0 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.data 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.bss 0x00000000 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.debug_frame 0x00000000 0x2c4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
@ -367,12 +367,12 @@ Linker script and memory map
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o
LOAD C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
LOAD source/bootload.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
LOAD C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
LOAD source/buffer.o
LOAD source/ciccom.o
LOAD source/dump.o
@ -392,8 +392,8 @@ LOAD source/swim.o
LOAD source/usb.o
LOAD source_stm_only/stm_init.o
LOAD source_stm_only/usbstm.o
LOAD C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
LOAD C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
LOAD C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
LOAD C:\Users\paul\AppData\Local\Temp\cc2herkl.o
START GROUP
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a
@ -407,12 +407,12 @@ END GROUP
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o
LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o
.text 0x08000000 0x4aac
.text 0x08000000 0x4c9c
*(.isr_vector)
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.isr_vector 0x08000000 0xc0 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
0x08000000 __isr_vector
*(.text*)
.text 0x080000c0 0x40 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.text 0x080000c0 0x40 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
0x080000c0 Reset_Handler
0x080000fc TSC_IRQHandler
0x080000fc ADC1_COMP_IRQHandler
@ -452,201 +452,213 @@ LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-
0x080000fc USART1_IRQHandler
0x080000fc TIM1_BRK_UP_TRG_COM_IRQHandler
.text.USB_IRQHandler
0x08000100 0x1a48 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08000100 0x1ac0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x08000100 USB_IRQHandler
.text.pbje_scan
0x08001b48 0x12c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.text.pbje_state_change
0x08001c74 0x98 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.text.write_page
0x08001d0c 0x34 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.text.get_next_buff
0x08001d40 0x54 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.text.jtag_init_pbje
0x08001d94 0xe0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x08001d94 jtag_init_pbje
.text.jtag_run_pbje.part.0
0x08001e74 0xd8 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x08001e74 jtag_run_pbje.part.0
.text.io_reset
0x08001f4c 0x154 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x08001f4c io_reset
.text.startup.main
0x080020a0 0xb8c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x080020a0 main
.text.append_pairity
0x08002c2c 0x1e C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
*fill* 0x08002c4a 0x2
.text.snes_rom_wr
0x08002c4c 0x4c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002c4c snes_rom_wr
.text.snes_rom_rd
0x08002c98 0x40 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002c98 snes_rom_rd
.text.snes_3v_flash_wr
0x08002cd8 0x44 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002cd8 snes_3v_flash_wr
.text.snes_5v_flash_wr
0x08002d1c 0x44 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002d1c snes_5v_flash_wr
.text.nes_cpu_wr
0x08002d60 0x6c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002d60 nes_cpu_wr
0x08001bc0 0x6c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001bc0 nes_cpu_wr
.text.nes_cpu_rd
0x08002dcc 0x40 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002dcc nes_cpu_rd
.text.mmc3_prgrom_flash_wr
0x08002e0c 0x50 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002e0c mmc3_prgrom_flash_wr
0x08001c2c 0x40 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001c2c nes_cpu_rd
.text.disc_push_exp0_prgrom_wr
0x08002e5c 0x48 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002e5c disc_push_exp0_prgrom_wr
.text.discrete_exp0_prgrom_wr
0x08002ea4 0x58 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002ea4 discrete_exp0_prgrom_wr
.text.nrom_prgrom_flash_wr
0x08002efc 0x44 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002efc nrom_prgrom_flash_wr
.text.control_xfr_in.lto_priv.37
0x08002f40 0xbc C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002f40 control_xfr_in.lto_priv.37
.text.HardFault_Handler
0x08002ffc 0x2 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08002ffc HardFault_Handler
*fill* 0x08002ffe 0x2
.text.swim_wotf
0x08003000 0xb4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003000 swim_wotf
.text.swim_rotf
0x080030b4 0xac C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x080030b4 swim_rotf
.text.delay_us
0x08003160 0x16 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003160 delay_us
.text.mmc1_wr 0x08003176 0x38 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003176 mmc1_wr
*fill* 0x080031ae 0x2
.text.nes_dualport_wr
0x080031b0 0x50 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x080031b0 nes_dualport_wr
.text.nes_dualport_rd
0x08003200 0x38 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003200 nes_dualport_rd
0x08001c6c 0x48 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001c6c disc_push_exp0_prgrom_wr
.text.pbje_scan
0x08001cb4 0x12c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.text.pbje_state_change
0x08001de0 0x98 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.text.write_page
0x08001e78 0x34 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.text.get_next_buff
0x08001eac 0x54 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.text.nes_ppu_wr
0x08003238 0x50 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003238 nes_ppu_wr
0x08001f00 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001f00 nes_ppu_wr
.text.nes_ppu_rd
0x08003288 0x38 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003288 nes_ppu_rd
.text.cdream_chrrom_flash_wr
0x080032c0 0x88 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x080032c0 cdream_chrrom_flash_wr
0x08001f50 0x38 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001f50 nes_ppu_rd
.text.discrete_exp0_prgrom_wr
0x08001f88 0x58 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001f88 discrete_exp0_prgrom_wr
.text.jtag_init_pbje
0x08001fe0 0xe0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08001fe0 jtag_init_pbje
.text.jtag_run_pbje.part.0
0x080020c0 0xd8 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x080020c0 jtag_run_pbje.part.0
.text.io_reset
0x08002198 0x154 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x08002198 io_reset
.text.startup.main
0x080022ec 0xb8c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x080022ec main
.text.append_pairity
0x08002e78 0x1e C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
*fill* 0x08002e96 0x2
.text.snes_wr 0x08002e98 0x60 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08002e98 snes_wr
.text.snes_rd 0x08002ef8 0x48 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08002ef8 snes_rd
.text.snes_3v_flash_wr
0x08002f40 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08002f40 snes_3v_flash_wr
.text.snes_5v_flash_wr
0x08002f90 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08002f90 snes_5v_flash_wr
.text.mmc3_chrrom_flash_wr
0x08003348 0x44 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x08003348 mmc3_chrrom_flash_wr
.text.cnrom_chrrom_flash_wr
0x0800338c 0x80 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x0800338c cnrom_chrrom_flash_wr
0x08002fe0 0x44 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08002fe0 mmc3_chrrom_flash_wr
.text.nrom_chrrom_flash_wr
0x0800340c 0x44 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x0800340c nrom_chrrom_flash_wr
.text.write_page_snes.constprop.32
0x08003450 0x180 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x08003450 write_page_snes.constprop.32
.text.write_page_bank.constprop.26
0x080035d0 0xbc C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x080035d0 write_page_bank.constprop.26
.text.snes_rom_page_rd_poll.constprop.23
0x0800368c 0x74 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x0800368c snes_rom_page_rd_poll.constprop.23
.text.nes_cpu_page_rd_poll.constprop.22
0x08003700 0x6c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x08003700 nes_cpu_page_rd_poll.constprop.22
0x08003024 0x44 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003024 nrom_chrrom_flash_wr
.text.cdream_chrrom_flash_wr
0x08003068 0x88 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003068 cdream_chrrom_flash_wr
.text.mmc4_chrrom_flash_wr
0x080030f0 0x74 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x080030f0 mmc4_chrrom_flash_wr
.text.cnrom_chrrom_flash_wr
0x08003164 0x80 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003164 cnrom_chrrom_flash_wr
.text.mmc4_prgrom_sop_flash_wr
0x080031e4 0x54 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x080031e4 mmc4_prgrom_sop_flash_wr
.text.mmc3_prgrom_flash_wr
0x08003238 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003238 mmc3_prgrom_flash_wr
.text.unrom_prgrom_flash_wr
0x08003288 0x64 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003288 unrom_prgrom_flash_wr
.text.mmc1_chrrom_flash_wr
0x080032ec 0x60 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x080032ec mmc1_chrrom_flash_wr
.text.mmc1_prgrom_flash_wr
0x0800334c 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x0800334c mmc1_prgrom_flash_wr
.text.control_xfr_in.lto_priv.38
0x0800339c 0xd8 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x0800339c control_xfr_in.lto_priv.38
.text.HardFault_Handler
0x08003474 0x2 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003474 HardFault_Handler
*fill* 0x08003476 0x2
.text.swim_wotf
0x08003478 0xb4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003478 swim_wotf
.text.swim_rotf
0x0800352c 0xac C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x0800352c swim_rotf
.text.delay_us
0x080035d8 0x16 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x080035d8 delay_us
*fill* 0x080035ee 0x2
.text.nrom_prgrom_flash_wr
0x080035f0 0x44 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x080035f0 nrom_prgrom_flash_wr
.text.nes_dualport_wr
0x08003634 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003634 nes_dualport_wr
.text.nes_dualport_rd
0x08003684 0x38 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x08003684 nes_dualport_rd
.text.write_page_snes.constprop.33
0x080036bc 0x194 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x080036bc write_page_snes.constprop.33
.text.snes_page_rd_poll.constprop.24
0x08003850 0x7c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x08003850 snes_page_rd_poll.constprop.24
.text.nes_cpu_page_rd_poll.constprop.23
0x080038cc 0x6c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x080038cc nes_cpu_page_rd_poll.constprop.23
.text.nes_ppu_page_rd_poll.constprop.21
0x0800376c 0x68 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x0800376c nes_ppu_page_rd_poll.constprop.21
.text 0x080037d4 0x4 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
0x080037d4 jump2addr
*fill* 0x080037d8 0x8
.text 0x080037e0 0x154 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
0x080037e0 swim_xfr
.text 0x08003934 0xa38 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003c04 _Unwind_GetCFA
0x08003c08 __gnu_Unwind_RaiseException
0x08003c5c __gnu_Unwind_ForcedUnwind
0x08003c70 __gnu_Unwind_Resume
0x08003cb8 __gnu_Unwind_Resume_or_Rethrow
0x08003cd4 _Unwind_Complete
0x08003cd8 _Unwind_DeleteException
0x08003ce8 _Unwind_VRS_Get
0x08003d34 _Unwind_VRS_Set
0x08003d80 __gnu_Unwind_Backtrace
0x080040e0 __aeabi_unwind_cpp_pr0
0x080040ec __aeabi_unwind_cpp_pr1
0x080040f8 __aeabi_unwind_cpp_pr2
0x08004104 _Unwind_VRS_Pop
.text 0x0800436c 0x144 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.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 0x3a8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004504 __gnu_unwind_execute
0x08004800 __gnu_unwind_frame
0x08004828 _Unwind_GetRegionStart
0x08004834 _Unwind_GetLanguageSpecificData
0x08004848 _Unwind_GetTextRelBase
0x08004850 _Unwind_GetDataRelBase
.text.abort 0x08004858 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004858 abort
.text.memcpy 0x08004868 0x84 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004868 memcpy
0x08003938 0x68 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x08003938 nes_ppu_page_rd_poll.constprop.21
.text.mmc1_wr.constprop.12
0x080039a0 0x22 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x080039a0 mmc1_wr.constprop.12
*fill* 0x080039c2 0x2
.text 0x080039c4 0x4 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
0x080039c4 jump2addr
*fill* 0x080039c8 0x8
.text 0x080039d0 0x154 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
0x080039d0 swim_xfr
.text 0x08003b24 0xa38 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0x08003df4 _Unwind_GetCFA
0x08003df8 __gnu_Unwind_RaiseException
0x08003e4c __gnu_Unwind_ForcedUnwind
0x08003e60 __gnu_Unwind_Resume
0x08003ea8 __gnu_Unwind_Resume_or_Rethrow
0x08003ec4 _Unwind_Complete
0x08003ec8 _Unwind_DeleteException
0x08003ed8 _Unwind_VRS_Get
0x08003f24 _Unwind_VRS_Set
0x08003f70 __gnu_Unwind_Backtrace
0x080042d0 __aeabi_unwind_cpp_pr0
0x080042dc __aeabi_unwind_cpp_pr1
0x080042e8 __aeabi_unwind_cpp_pr2
0x080042f4 _Unwind_VRS_Pop
.text 0x0800455c 0x144 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(libunwind.o)
0x0800455c __restore_core_regs
0x0800455c restore_core_regs
0x08004588 __gnu_Unwind_Restore_VFP
0x0800458c __gnu_Unwind_Save_VFP
0x08004590 __gnu_Unwind_Restore_VFP_D
0x08004594 __gnu_Unwind_Save_VFP_D
0x08004598 __gnu_Unwind_Restore_VFP_D_16_to_31
0x0800459c __gnu_Unwind_Save_VFP_D_16_to_31
0x080045a0 __gnu_Unwind_Restore_WMMXD
0x080045a4 __gnu_Unwind_Save_WMMXD
0x080045a8 __gnu_Unwind_Restore_WMMXC
0x080045ac __gnu_Unwind_Save_WMMXC
0x080045b0 ___Unwind_RaiseException
0x080045b0 _Unwind_RaiseException
0x080045e0 _Unwind_Resume
0x080045e0 ___Unwind_Resume
0x08004610 _Unwind_Resume_or_Rethrow
0x08004610 ___Unwind_Resume_or_Rethrow
0x08004640 _Unwind_ForcedUnwind
0x08004640 ___Unwind_ForcedUnwind
0x08004670 ___Unwind_Backtrace
0x08004670 _Unwind_Backtrace
.text 0x080046a0 0x3a8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
0x080046f4 __gnu_unwind_execute
0x080049f0 __gnu_unwind_frame
0x08004a18 _Unwind_GetRegionStart
0x08004a24 _Unwind_GetLanguageSpecificData
0x08004a38 _Unwind_GetTextRelBase
0x08004a40 _Unwind_GetDataRelBase
.text.abort 0x08004a48 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-abort.o)
0x08004a48 abort
.text.memcpy 0x08004a58 0x84 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-memcpy-stub.o)
0x08004a58 memcpy
.text._raise_r
0x080048ec 0x5c c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x080048ec _raise_r
.text.raise 0x08004948 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004948 raise
.text._kill_r 0x0800495c 0x28 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x0800495c _kill_r
0x08004adc 0x5c c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004adc _raise_r
.text.raise 0x08004b38 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signal.o)
0x08004b38 raise
.text._kill_r 0x08004b4c 0x28 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004b4c _kill_r
.text._getpid_r
0x08004984 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004984 _getpid_r
.text._getpid 0x0800498c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x0800498c _getpid
.text._kill 0x0800499c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x0800499c _kill
.text._exit 0x080049ac 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x080049ac _exit
.text 0x080049b0 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
0x080049b0 __gnu_thumb1_case_uqi
.text 0x080049c4 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o)
0x080049c4 __gnu_thumb1_case_shi
.text 0x080049d8 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
0x080049d8 __gnu_thumb1_case_uhi
0x08004b74 0x8 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-signalr.o)
0x08004b74 _getpid_r
.text._getpid 0x08004b7c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)
0x08004b7c _getpid
.text._kill 0x08004b8c 0x10 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(kill.o)
0x08004b8c _kill
.text._exit 0x08004b9c 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(_exit.o)
0x08004b9c _exit
.text 0x08004ba0 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
0x08004ba0 __gnu_thumb1_case_uqi
.text 0x08004bb4 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_shi.o)
0x08004bb4 __gnu_thumb1_case_shi
.text 0x08004bc8 0x14 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
0x08004bc8 __gnu_thumb1_case_uhi
*(.init)
.init 0x080049ec 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
0x080049ec _init
.init 0x08004bdc 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
0x08004bdc _init
*(.fini)
.fini 0x080049f0 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
0x080049f0 _fini
.fini 0x08004be0 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
0x08004be0 _fini
*crtbegin.o(.ctors)
*crtbegin?.o(.ctors)
*(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors)
@ -659,54 +671,54 @@ LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-
*(.dtors)
*(.rodata*)
.rodata.config_desc
0x080049f4 0x12 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08004be4 0x12 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.rodata.device_desc
0x08004a06 0x12 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08004bf6 0x12 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.rodata.string0_desc
0x08004a18 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08004c08 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.rodata.string1_desc
0x08004a1c 0x54 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08004c0c 0x54 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.rodata.string2_desc
0x08004a70 0x3c C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x08004c60 0x3c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
*(.eh_frame*)
.glue_7 0x08004aac 0x0
.glue_7 0x08004aac 0x0 linker stubs
.glue_7 0x08004c9c 0x0
.glue_7 0x08004c9c 0x0 linker stubs
.glue_7t 0x08004aac 0x0
.glue_7t 0x08004aac 0x0 linker stubs
.glue_7t 0x08004c9c 0x0
.glue_7t 0x08004c9c 0x0 linker stubs
.vfp11_veneer 0x08004aac 0x0
.vfp11_veneer 0x08004aac 0x0 linker stubs
.vfp11_veneer 0x08004c9c 0x0
.vfp11_veneer 0x08004c9c 0x0 linker stubs
.v4_bx 0x08004aac 0x0
.v4_bx 0x08004aac 0x0 linker stubs
.v4_bx 0x08004c9c 0x0
.v4_bx 0x08004c9c 0x0 linker stubs
.iplt 0x08004aac 0x0
.iplt 0x08004aac 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
.iplt 0x08004c9c 0x0
.iplt 0x08004c9c 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
.ARM.extab 0x08004aac 0x30
.ARM.extab 0x08004c9c 0x30
*(.ARM.extab* .gnu.linkonce.armextab.*)
.ARM.extab 0x08004aac 0x24 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004ad0 0xc c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004adc __exidx_start = .
.ARM.extab 0x08004c9c 0x24 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.extab 0x08004cc0 0xc c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
0x08004ccc __exidx_start = .
.ARM.exidx 0x08004adc 0xd0
.ARM.exidx 0x08004ccc 0xd0
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
.ARM.exidx 0x08004adc 0x8 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.ARM.exidx 0x08004ae4 0x0 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.ARM.exidx 0x08004ccc 0x8 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.ARM.exidx 0x08004cd4 0x0 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
0x10 (size before relaxing)
.ARM.exidx 0x08004ae4 0x98 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
.ARM.exidx 0x08004cd4 0x98 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(unwind-arm.o)
0xd8 (size before relaxing)
.ARM.exidx 0x08004b7c 0x30 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
.ARM.exidx 0x08004d6c 0x30 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(pr-support.o)
0x48 (size before relaxing)
0x08004bac __exidx_end = .
0x08004bac __etext = ALIGN (0x4)
0x08004d9c __exidx_end = .
0x08004d9c __etext = ALIGN (0x4)
.rel.dyn 0x08004bac 0x0
.rel.iplt 0x08004bac 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
.rel.dyn 0x08004d9c 0x0
.rel.iplt 0x08004d9c 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
.data 0x20000000 0x430 load address 0x08004bac
.data 0x20000000 0x430 load address 0x08004d9c
0x20000000 __data_start__ = .
*(vtable)
*(.data*)
@ -734,123 +746,102 @@ LOAD c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-
0x20000430 . = ALIGN (0x4)
0x20000430 __data_end__ = .
.igot.plt 0x20000430 0x0 load address 0x08004fdc
.igot.plt 0x20000430 0x0 load address 0x080051cc
.igot.plt 0x20000430 0x0 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o
.bss 0x20000430 0x308 load address 0x08004fdc
.bss 0x20000430 0x2f0 load address 0x080051cc
0x20000430 . = ALIGN (0x4)
0x20000430 __bss_start__ = .
*(.bss*)
.bss.addrh 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.addrh 0x20000430 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.bss.bank_table
0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000434 0x2 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000434 bank_table
*fill* 0x20000436 0x2
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.buff0 0x20000438 0x14 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000438 buff0
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.buff1 0x2000044c 0x14 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x2000044c buff1
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.buff2 0x20000460 0x14 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000460 buff2
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.buff3 0x20000474 0x14 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000474 buff3
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.cur_bank 0x20000488 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000488 cur_bank
*fill* 0x20000489 0x3
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.cur_buff 0x2000048c 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x2000048c cur_buff
.bss.cur_usb_load_buff
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000490 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.bss.incoming_bytes_remain
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000494 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
*fill* 0x20000495 0x3
.bss.log 0x20000498 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.new_address
0x2000049c 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
*fill* 0x2000049d 0x1
.bss.num_bytes_req.lto_priv.40
0x2000049e 0x2 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x2000049e num_bytes_req.lto_priv.40
.bss.num_bytes_sending.lto_priv.39
0x200004a0 0x2 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004a0 num_bytes_sending.lto_priv.39
.bss.num_bytes_xfrd.lto_priv.38
0x200004a2 0x2 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004a2 num_bytes_xfrd.lto_priv.38
.bss.oper_info_struct
0x200004a4 0x20 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004a4 oper_info_struct
0x20000498 0x20 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000498 oper_info_struct
.bss.pbje_command
0x200004c4 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004c4 pbje_command
0x200004b8 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200004b8 pbje_command
.bss.pbje_data
0x200004c5 0x20 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004c5 pbje_data
0x200004b9 0x20 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200004b9 pbje_data
.bss.pbje_numclk
0x200004e5 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004e5 pbje_numclk
0x200004d9 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200004d9 pbje_numclk
.bss.pbje_status
0x200004e6 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004e6 pbje_status
0x200004da 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200004da pbje_status
.bss.raw_bank_status
0x200004e7 0x10 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
*fill* 0x200004f7 0x1
0x200004db 0x10 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
*fill* 0x200004eb 0x1
.bss.raw_buffer16
0x200004f8 0x200 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.req_dir 0x200006f8 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.reqdir 0x200006f9 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.bss.reqtype 0x200006fa 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
*fill* 0x200006fb 0x1
.bss.rv16.4963
0x200006fc 0x8 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x200004ec 0x200 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.bss.rv16.4995
0x200006ec 0x8 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.bss.swim_base
0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000704 swim_base
.bss.swim_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000708 swim_pin
0x200006f4 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200006f4 swim_base
.bss.swim_pin 0x200006f8 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200006f8 swim_pin
*fill* 0x200006f9 0x3
.bss.tck_base 0x200006fc 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x200006fc tck_base
.bss.tck_pin 0x20000700 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000700 tck_pin
*fill* 0x20000701 0x3
.bss.tdi_base 0x20000704 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000704 tdi_base
.bss.tdi_pin 0x20000708 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000708 tdi_pin
*fill* 0x20000709 0x3
.bss.tck_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x2000070c tck_base
.bss.tck_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000710 tck_pin
.bss.tdo_base 0x2000070c 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x2000070c tdo_base
.bss.tdo_pin 0x20000710 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000710 tdo_pin
*fill* 0x20000711 0x3
.bss.tdi_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000714 tdi_base
.bss.tdi_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000718 tdi_pin
*fill* 0x20000719 0x3
.bss.tdo_base 0x2000071c 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x2000071c tdo_base
.bss.tdo_pin 0x20000720 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000720 tdo_pin
*fill* 0x20000721 0x3
.bss.tms_base 0x20000724 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000724 tms_base
.bss.tms_pin 0x20000728 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x20000728 tms_pin
*fill* 0x20000729 0x3
.bss.usbMsgPtr
0x2000072c 0x4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x2000072c usbMsgPtr
.bss.num_buff.5043
0x20000730 0x1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.bss.tms_base 0x20000714 0x4 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000714 tms_base
.bss.tms_pin 0x20000718 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x20000718 tms_pin
.bss.num_buff.5075
0x20000719 0x1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
*(COMMON)
*fill* 0x20000731 0x3
COMMON 0x20000734 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x20000734 errno
0x20000738 . = ALIGN (0x4)
0x20000738 __bss_end__ = .
*fill* 0x2000071a 0x2
COMMON 0x2000071c 0x4 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libg.a(lib_a-reent.o)
0x2000071c errno
0x20000720 . = ALIGN (0x4)
0x20000720 __bss_end__ = .
.heap 0x20000738 0x0
0x20000738 __end__ = .
0x20000738 PROVIDE (end, .)
.heap 0x20000720 0x0
0x20000720 __end__ = .
0x20000720 PROVIDE (end, .)
*(.heap*)
.heap 0x20000738 0x0 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
0x20000738 __HeapLimit = .
.heap 0x20000720 0x0 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
0x20000720 __HeapLimit = .
.stack_dummy 0x20000738 0xc00
.stack_dummy 0x20000720 0xc00
*(.stack*)
.stack 0x20000738 0xc00 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.stack 0x20000720 0xc00 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM))
0x20000c00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy))
0x20001800 PROVIDE (__stack, __StackTop)
@ -862,19 +853,19 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
.ARM.attributes
0x00000000 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o
.ARM.attributes
0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
0x0000001e 0x1b C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.ARM.attributes
0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x00000039 0x2f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.ARM.attributes
0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x00000068 0x2f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.ARM.attributes
0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x00000097 0x2f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.ARM.attributes
0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x000000c6 0x2f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.ARM.attributes
0x000000f5 0x21 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
0x000000f5 0x21 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.ARM.attributes
0x00000116 0x21 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
0x00000116 0x21 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.ARM.attributes
0x00000137 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uqi.o)
.ARM.attributes
@ -883,82 +874,82 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm)
0x00000173 0x1e c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m\libgcc.a(_thumb1_case_uhi.o)
.comment 0x00000000 0x6e
.comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.comment 0x00000000 0x6e C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x6f (size before relaxing)
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.comment 0x0000006e 0x6f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_line 0x00000000 0x1b32
.debug_line 0x00000000 0x6f C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.debug_line 0x0000006f 0xae1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_line 0x00000b50 0x720 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_line 0x00001270 0x4c5 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_line 0x00001735 0x2c1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_line 0x000019f6 0x49 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.debug_line 0x00001a3f 0xf3 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.debug_line 0x00000000 0x1b68
.debug_line 0x00000000 0x6f C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.debug_line 0x0000006f 0xaf7 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_line 0x00000b66 0x816 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_line 0x0000137c 0x44d C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_line 0x000017c9 0x263 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_line 0x00001a2c 0x49 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.debug_line 0x00001a75 0xf3 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.debug_info 0x00000000 0x4349
.debug_info 0x00000000 0x8b C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.debug_info 0x0000008b 0x185d C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_info 0x000018e8 0x14d6 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_info 0x00002dbe 0xdd0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_info 0x00003b8e 0x6af C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_info 0x0000423d 0x88 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.debug_info 0x000042c5 0x84 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.debug_info 0x00000000 0x46d7
.debug_info 0x00000000 0x9b C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.debug_info 0x0000009b 0x17a1 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_info 0x0000183c 0x175a C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_info 0x00002f96 0xffb C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_info 0x00003f91 0x61a C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_info 0x000045ab 0x98 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.debug_info 0x00004643 0x94 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.debug_abbrev 0x00000000 0xb23
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
.debug_abbrev 0x00000014 0x3b5 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_abbrev 0x000003c9 0x3bf C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_abbrev 0x00000788 0x1c3 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_abbrev 0x0000094b 0x1b0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_abbrev 0x00000afb 0x14 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
.debug_abbrev 0x00000b0f 0x14 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
.debug_abbrev 0x00000000 0xb18
.debug_abbrev 0x00000000 0x14 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.debug_abbrev 0x00000014 0x35d C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_abbrev 0x00000371 0x40f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_abbrev 0x00000780 0x1ce C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_abbrev 0x0000094e 0x1a2 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_abbrev 0x00000af0 0x14 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.debug_abbrev 0x00000b04 0x14 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.debug_aranges 0x00000000 0x1f8
.debug_aranges 0x00000000 0x218
.debug_aranges
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\ccA8zS7I.o
0x00000000 0x20 C:\Users\paul\AppData\Local\Temp\cc6pRmhD.o
.debug_aranges
0x00000020 0x20 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x00000020 0x20 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_aranges
0x00000040 0x58 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x00000040 0x88 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_aranges
0x00000098 0xe0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x000000c8 0xd0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_aranges
0x00000178 0x40 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
0x00000198 0x40 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_aranges
0x000001b8 0x20 C:\Users\paul\AppData\Local\Temp\ccdBPmvz.o
0x000001d8 0x20 C:\Users\paul\AppData\Local\Temp\ccSIjLzW.o
.debug_aranges
0x000001d8 0x20 C:\Users\paul\AppData\Local\Temp\ccgj2WWv.o
0x000001f8 0x20 C:\Users\paul\AppData\Local\Temp\cc2herkl.o
.debug_loc 0x00000000 0x42c1
.debug_loc 0x00000000 0x2767 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_loc 0x00002767 0xda4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_loc 0x0000350b 0x91b C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_loc 0x00003e26 0x49b C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_loc 0x00000000 0x45b6
.debug_loc 0x00000000 0x27eb C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_loc 0x000027eb 0x1095 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_loc 0x00003880 0x922 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_loc 0x000041a2 0x414 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_ranges 0x00000000 0x16b8
.debug_ranges 0x00000000 0x1378 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_ranges 0x00001378 0x220 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_ranges 0x00001598 0xd0 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_ranges 0x00001668 0x50 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_ranges 0x00000000 0x1748
.debug_ranges 0x00000000 0x13c8 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_ranges 0x000013c8 0x270 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_ranges 0x00001638 0xc0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_ranges 0x000016f8 0x50 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.debug_str 0x00000000 0xdd6
.debug_str 0x00000000 0x90a C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
0x96f (size before relaxing)
.debug_str 0x0000090a 0x1f1 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
0x494 (size before relaxing)
.debug_str 0x00000afb 0x1c5 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
0x3c7 (size before relaxing)
.debug_str 0x00000cc0 0x116 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_str 0x00000000 0xdcb
.debug_str 0x00000000 0x872 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
0x8d7 (size before relaxing)
.debug_str 0x00000872 0x268 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
0x52b (size before relaxing)
.debug_str 0x00000ada 0x1d2 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
0x3e8 (size before relaxing)
.debug_str 0x00000cac 0x11f C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
0x39d (size before relaxing)
.debug_frame 0x00000000 0x44c
.debug_frame 0x00000000 0x30 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans0.ltrans.o
.debug_frame 0x00000030 0x100 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans1.ltrans.o
.debug_frame 0x00000130 0x268 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans2.ltrans.o
.debug_frame 0x00000398 0xb4 C:\Users\paul\AppData\Local\Temp\cc6XiCXY.ltrans3.ltrans.o
.debug_frame 0x00000000 0x4c0
.debug_frame 0x00000000 0x30 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans0.ltrans.o
.debug_frame 0x00000030 0x174 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans1.ltrans.o
.debug_frame 0x000001a4 0x26c C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans2.ltrans.o
.debug_frame 0x00000410 0xb0 C:\Users\paul\AppData\Local\Temp\ccKkt1EM.ltrans3.ltrans.o
.stabstr 0x00000000 0x76
.stabstr 0x00000000 0x76 c:/arm/gcc-arm-none-eabi-6_2-2016q4-20161216-win32/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m\libnosys.a(getpid.o)

View File

@ -66,6 +66,10 @@ uint16_t usbFunctionSetup(uint8_t data[8]) {
#ifdef STM_CORE
static uint16_t rv16[RETURN_BUFF_SIZE/2];
uint8_t *rv = (uint8_t*)rv16;
//create a usbMsgPtr variable from the stack which we can use convienently
//but then at end of the function we'll need to copy the value over to usb_buff usbMsgPtr_H/L
usbMsgPtr_t usbMsgPtr;
#else
static uint8_t rv[RETURN_BUFF_SIZE];
#endif
@ -186,6 +190,14 @@ uint16_t usbFunctionSetup(uint8_t data[8]) {
rv[RETURN_ERR_IDX] = ERR_UNKN_DICTIONARY;
}
#ifdef STM_CORE
//now we need to copy usbMsgPtr over to usb_buff so the usb drivers actually get the pointer value
usbMsgPtr_L = (uint32_t)usbMsgPtr;
usbMsgPtr_H = ((uint32_t)usbMsgPtr)>>16;
//this is a hack for stm32 devices only. It allows usb firmware to be mostly separated
//from application code. Usb code doesn't use any .data nor .bss, only the stack and usb_buff
#endif
return rlen;
//need to return USB_NO_MSG for OUT transfers to make usbFunctionWrite called

View File

@ -25,7 +25,6 @@
#include "bootload.h"
#include "ciccom.h"
#include "types.h"
#include "shared_usb.h"
#include "shared_errors.h"
#include "shared_dictionaries.h"

View File

@ -208,8 +208,8 @@ uint16_t volatile (* const usb_buff) = (void*)USB_PMAADDR;
#define num_bytes_req usb_buff[NUM_BYTES_REQ] //place this variable in USB RAM
//static uint16_t num_bytes_sending;
#define num_bytes_sending usb_buff[NUM_BYTES_SENDING] //place this variable in USB RAM
//static uint16_t num_bytes_expecting; //this was never used, so tried to cut it but couldn't..
#define num_bytes_expecting usb_buff[NUM_BYTES_EXPECTING] //place this variable in USB RAM
//static uint16_t num_bytes_expecting; //this was never used, so it was cut
//#define num_bytes_expecting usb_buff[NUM_BYTES_EXPECTING] //place this variable in USB RAM
//static uint16_t num_bytes_xfrd;
#define num_bytes_xfrd usb_buff[NUM_BYTES_XFRD] //place this variable in USB RAM
@ -232,7 +232,10 @@ uint16_t volatile (* const usb_buff) = (void*)USB_PMAADDR;
//static uint8_t req_dir;
#define req_dir usb_buff[VAR_REQ_DIR] //place this variable in USB RAM
usbMsgPtr_t usbMsgPtr;
//move this into USB buffer ram, definition kept in usbstm.h so application code can import it
//usbMsgPtr_t usbMsgPtr;
//#define usbMsgPtr_L usb_buff[USBMSGPTR_L] //place this variable in USB RAM
//#define usbMsgPtr_H usb_buff[USBMSGPTR_H] //place this variable in USB RAM
//#define TSSOP20 //defined when using TSSOP-20 part to get PA11/12 alternate mapping to the pins
@ -244,10 +247,11 @@ void init_usb()
//Don't think most of these actually need to be cleared.. newaddr_reqtype might be only one..
num_bytes_req = 0;
num_bytes_sending = 0;
num_bytes_expecting = 0;
//num_bytes_expecting = 0;
num_bytes_xfrd = 0;
newaddr_reqtype = 0; //two single byte variables stored in single 16bit half word
req_dir = 0;
//usbMsgPtr_H/L shouldn't need pre-initialized
//initialize i/o
// TSSOP-20: On STM32F070x6 devices, pin pair PA11/12 can be remapped instead of pin pair PA9/10 using SYSCFG_CFGR1 register.
@ -477,17 +481,24 @@ static void control_xfr_in(){
//
// return;
// }
//need a usbMsgPtr but want it to be a variable from the stack
usbMsgPtr_t usbMsgPtr_temp;
//copy the actual pointer from usb_buffer ram
//the usb_buffer ram can only be accessed in halfwords (16bits)
//so this assigment respects this and then casts it to the necessary pointer type
usbMsgPtr_temp = (uint16_t *) ((usbMsgPtr_H<<16) | usbMsgPtr_L);
//copy over 8bytes from transmit data to EP0 buffer
//copy data into EP0 buffer table ram
//usb buffer ram is only accessible in halfwords/bytes (16/8bits)
usb_buff[EP0_TX_BASE] = usbMsgPtr[num_bytes_xfrd/2];
usb_buff[EP0_TX_BASE] = usbMsgPtr_temp[num_bytes_xfrd/2];
num_bytes_xfrd += 2;
usb_buff[EP0_TX_BASE+1] = usbMsgPtr[num_bytes_xfrd/2];
usb_buff[EP0_TX_BASE+1] = usbMsgPtr_temp[num_bytes_xfrd/2];
num_bytes_xfrd += 2;
usb_buff[EP0_TX_BASE+2] = usbMsgPtr[num_bytes_xfrd/2];
usb_buff[EP0_TX_BASE+2] = usbMsgPtr_temp[num_bytes_xfrd/2];
num_bytes_xfrd += 2;
usb_buff[EP0_TX_BASE+3] = usbMsgPtr[num_bytes_xfrd/2];
usb_buff[EP0_TX_BASE+3] = usbMsgPtr_temp[num_bytes_xfrd/2];
num_bytes_xfrd += 2;
//if there aren't 8bytes of data to send, junk will be copied into end of EP0 TX buffer
@ -645,19 +656,42 @@ static uint16_t standard_req_in( usbRequest_t *spacket ){
case STD_REQ_GET_DESCRIPTOR:
switch ( (spacket->wValue & DESC_TYPE_MASK)>>8) { //must mask out upper byte and shift to get desc type
case DESC_TYPE_DEVICE:
usbMsgPtr = (uint16_t *)device_desc;
//usbMsgPtr = (uint16_t *)device_desc;
//set the usb_buff[] message ptr instead..
//this works, but requires assingment above
//usbMsgPtr_L = (uint32_t)usbMsgPtr;
//usbMsgPtr_H = ((uint32_t)usbMsgPtr)>>16;
//do the same but without the use of an actual usbMsgPtr
//first the const array (which is actually a pointer), is cast to a
//16bit pointer. Then that pointer is cast to an int and assinged
//to the usb_buff ram/index.
//the upper 16bits needs to get shifted prior to assignment
usbMsgPtr_L = (uint32_t)(uint16_t *)device_desc;
usbMsgPtr_H = ((uint32_t)(uint16_t *)device_desc)>>16;
return device_desc[bLength];
case DESC_TYPE_CONFIG: //Must return all config, interface, and endpoint descriptors in one shot
usbMsgPtr = (uint16_t *)config_desc;
//usbMsgPtr = (uint16_t *)config_desc;
usbMsgPtr_L = (uint32_t)(uint16_t *)config_desc;
usbMsgPtr_H = ((uint32_t)(uint16_t *)config_desc)>>16;
return config_desc[wTotalLength];
case DESC_TYPE_STRING:
//determine which string index
switch ( spacket->wValue & DESC_IDX_MASK ) { //Must mask out index from lower byte
case 0: usbMsgPtr = (uint16_t *)string0_desc;
case 0: //usbMsgPtr = (uint16_t *)string0_desc;
usbMsgPtr_L = (uint32_t)(uint16_t *)string0_desc;
usbMsgPtr_H = ((uint32_t)(uint16_t *)string0_desc)>>16;
return string0_desc[bLength];
case 1: usbMsgPtr = (uint16_t *)string1_desc;
case 1: //usbMsgPtr = (uint16_t *)string1_desc;
usbMsgPtr_L = (uint32_t)(uint16_t *)string1_desc;
usbMsgPtr_H = ((uint32_t)(uint16_t *)string1_desc)>>16;
return string1_desc[bLength];
case 2: usbMsgPtr = (uint16_t *)string2_desc;
case 2: //usbMsgPtr = (uint16_t *)string2_desc;
usbMsgPtr_L = (uint32_t)(uint16_t *)string2_desc;
usbMsgPtr_H = ((uint32_t)(uint16_t *)string2_desc)>>16;
return string2_desc[bLength];
default: //error send stall
return 0;
@ -795,7 +829,10 @@ static void control_xfr_init( usbRequest_t *spacket ) {
//the compiler was cutting it anyway, no need to put in usb_buff[]..
//BUT! When I cut it, USB device descriptor fails..
//IDK why, so just let's just keep it anyway..
num_bytes_expecting = standard_req_out( spacket );
//num_bytes_expecting = standard_req_out( spacket );
//The reason was because that function actually does something required even
//if the return value is ignored you bozo!
standard_req_out( spacket );
break;
// case REQ_TYPE_CLASS:
// //num_bytes_sending = 0;//class_req_in( spacket );

View File

@ -76,12 +76,18 @@
//So let's place those 14Bytes worth of variables in the begining of USB RAM
#define NUM_BYTES_REQ 0 //variable placed in first 16bit index
#define NUM_BYTES_SENDING 1 //variable placed in second index...
#define NUM_BYTES_EXPECTING 2
#define NUM_BYTES_XFRD 3
#define NEWADDR_REQTYPE 4 //two single byte variables stored in this index
#define VAR_REQ_DIR 5 //might be able to combine with above..?
//6 variables above use up 12Bytes of USB buffer RAM
//there's 4Bytes of available space, could be used for usbMsgPtr, but need to ensure half word access is used..
//#define NUM_BYTES_EXPECTING 2 //variable cut
#define NUM_BYTES_XFRD 2
#define NEWADDR_REQTYPE 3 //two single byte variables stored in this index
#define VAR_REQ_DIR 4 //might be able to combine with above..?
//there's 6Bytes of available space, could be used for usbMsgPtr, but need to ensure half word access is used..
#define USBMSGPTR_L 5 //lower 16bit of pointer
#define USBMSGPTR_H 6 //upper 16bit of pointer
//now there's 7 indexes = 14Bytes used for usb_buff ram variables and the usb code shouldn't be using any .data nor .bss
//usbstm only uses the stack and usb_buff ram table
//There are 2 bytes unused, perhaps these can be utilized for initialization flags or other communication between
//usb driver and application code
//buffer table itself is located in 1KB buffer above, but it's location is programmable
//the table must be aligned to an 8Byte boundary
@ -258,7 +264,14 @@ typedef struct usbRequest_t{
#define usbPoll() NOP()
#define usbMsgPtr_t uint16_t *
extern usbMsgPtr_t usbMsgPtr;
//extern usbMsgPtr_t usbMsgPtr; //this variable is defined in usbstm.c
//putting extern here allows any file that imports usbstm.h access to usbMsgPtr
//application code can access the entire usb_buff as well as the usbMsgPtr_H/L
//extern used here to declare usb_buff so other files can use it, definition is in usbstm.c
extern uint16_t volatile (* const usb_buff);
#define usbMsgPtr_L usb_buff[USBMSGPTR_L] //place this variable in USB RAM
#define usbMsgPtr_H usb_buff[USBMSGPTR_H] //place this variable in USB RAM
extern uint16_t usbFunctionSetup(uint8_t data[8]);
extern uint8_t usbFunctionWrite(uint8_t *data, uint8_t len);

View File

@ -15,7 +15,7 @@
//=============================================================================================
// USB DICTIONARY
//
// opcodes contained in this dictionary must be implemented in firmware/source/io.c
// opcodes contained in this dictionary must be implemented in firmware/source/usb.c
//
//=============================================================================================
//=============================================================================================

View File

@ -1,23 +0,0 @@
#ifndef _shared_dict_usb_h
#define _shared_dict_usb_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
#define RETURN_BUFF_SIZE 8 //number of bytes in generic return buffer
#define RETURN_ERR_IDX 0 //index of IN DATA stage that contains SUCCESS/ERROR#
#define RETURN_LEN_IDX 1 //index of IN DATA stage that contains length of return value(s) in bytes (0-125)
#define RETURN_DATA 2 //index of IN DATA stage that contains start of return data
//=============================================================================================
//=============================================================================================
// USB DICTIONARY
//
// opcodes contained in this dictionary must be implemented in firmware/source/io.c
//
//=============================================================================================
//=============================================================================================
#endif