diff --git a/firmware/Make_avr b/firmware/Make_avr index 8b386d1..e3e1d2a 100644 --- a/firmware/Make_avr +++ b/firmware/Make_avr @@ -14,7 +14,7 @@ BUILD = build_avr #SOURCES=$(wildcard source/**/*.c source/*.c) SOURCES=$(wildcard source/*.c) -CFLAGS = -Iusbdrv_Vusb -Isource -DDEBUG_LEVEL=0 -DAVR_CORE +CFLAGS = -Iusbdrv_Vusb -Isource -DDEBUG_LEVEL=0 -DAVR_CORE -DAVR_KAZZO USBOBJ = usbdrv_Vusb/usbdrv.o usbdrv_Vusb/usbdrvasm.o usbdrv_Vusb/oddebug.o OBJECTS=$(patsubst %.c,%.o,$(SOURCES)) $(USBOBJ) diff --git a/firmware/Make_stm b/firmware/Make_stm index b5c3338..235ad5e 100644 --- a/firmware/Make_stm +++ b/firmware/Make_stm @@ -49,11 +49,11 @@ LDSCRIPTS=-L. -L$(BASE)/include_stm -T nokeep.ld LFLAGS=$(USE_NANO) $(USE_NOHOST) $(LDSCRIPTS) $(GC) $(MAP) DEFINE+=\ - -DSTM32F070xB \ + -DSTM32F070x6 \ -DF_CPU=16000000 \ - -DSTM_CORE -#128KB version of all packages (LQFP-48,64,100) - + -DSTM_CORE \ + -DSTM_ADAPTER #stm32 to kazzo adapter board +# -DSTM_INL6 #inlretro 6connector # -DSTM32F072x8 \ #64KB version of all packages (LQFP-48,64,100) # -DSTM32F070xB \ #128KB version of both packages (LQFP-48,64) # -DSTM32F070x6 \ #32KB version of both packages (TSSOP-20,LQFP-48) diff --git a/firmware/avr_kazzo.elf b/firmware/avr_kazzo.elf deleted file mode 100644 index dffad8d..0000000 Binary files a/firmware/avr_kazzo.elf and /dev/null differ diff --git a/firmware/avr_kazzo.hex b/firmware/avr_kazzo.hex deleted file mode 100644 index a0b2e2f..0000000 --- a/firmware/avr_kazzo.hex +++ /dev/null @@ -1,96 +0,0 @@ -:100000000C9476000C94B8010C9493000C9493001B -:100010000C9493000C9493000C9493000C94930014 -:100020000C9493000C9493000C9493000C94930004 -:100030000C9493000C9493000C9493000C949300F4 -:100040000C9493000C9493000C9493000C949300E4 -:100050000C9493000C9493000C9493000C949300D4 -:100060000C9493000C9493000C9493000C949300C4 -:100070000C9493000C9493000C94930009021200CA -:10008000010100806409040000000000000012016A -:100090001001FF000008C016DC050002010200018B -:1000A0001E0349004E004C00200052006500740001 -:1000B00072006F002D00500072006F0067002A036D -:1000C00049006E00660069006E00690074006500FA -:1000D0004E00650073004C006900760065007300F7 -:1000E0002E0063006F006D000403090411241FBE7D -:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0E8ED8E -:10010000F5E002C005900D92A230B107D9F721E0C9 -:10011000A2E0B1E001C01D92AD32B207E1F70E944A -:10012000CC020C94EA020C94000080E0089580E078 -:100130000895CF93DF9360911301635067FD91C0E1 -:1001400080911001CCE0D0E0C81BD109C95EDE4F20 -:1001500080910F018D3209F0CFC0683009F07FC067 -:1001600083EC809303018AE58093010110920201E0 -:100170008881807679F0CE010E9495008F3F09F446 -:1001800066C09F81911169C09E81981708F065C073 -:10019000892F63C02A8110920C01998191110AC0A4 -:1001A00010920D012CE031E082E030931201209397 -:1001B0001101E7CF953029F4209314012CE031E0B0 -:1001C000F4CF963099F59B81913059F48EE890E008 -:1001D000909312018093110182E190E490930201C7 -:1001E000D0CF923019F48CE790E0F2CF9330A9F79A -:1001F000211108C088EE90E09093120180931101C4 -:1002000084E0EBCF213041F48EEB90E0909312012B -:10021000809311018AE2E1CF2230F9F680EA90E082 -:1002200090931201809311018EE1D7CF983059F04D -:10023000993019F420931601C1CF81E09A3009F466 -:10024000BDCF80E0BBCF26E131E081E0AECF988129 -:1002500097FD8E8190E890930201809300011092A7 -:1002600013018091010184FF3AC0809100018F3F0A -:10027000B1F1C82F893008F0C8E08C1B80930001D1 -:100280008091030198E8892780930301CC23D1F062 -:1002900080911101909112012091020126FF3FC02F -:1002A000A4E0B1E0FC012C2F34913D933196215014 -:1002B000D9F701962FEF2C0F820F911D9093120109 -:1002C000809311016C2F84E091E00E94B401CC5F17 -:1002D000CC3019F08FEF80930001C093010184E1CD -:1002E00099B1947131F48150D9F7109214011092A0 -:1002F0000E01DF91CF9108958091020187FFAFCF6A -:10030000CE010E9497008F3F21F48EE1809301017E -:10031000A6CF882309F4A3CF10920001A0CFE4E078 -:10032000F1E0DC012C2F3D9131932150E1F7C1CF59 -:10033000E9E6F0E0808182608083E89A0895A82F42 -:10034000B92F80E090E041E050EA609530E009C0CC -:100350002D9182279795879510F084279527305EF9 -:10036000C8F36F5FA8F30895EADF8D939D93089516 -:10037000CF93CFB7CF93DF93C3954C9BE9F74C9BBB -:100380000BC04C9B09C04C9B07C04C9B05C04C9BB1 -:1003900003C04C9B01C089C06F93C0911001DD2741 -:1003A000C95EDE4F2F9365E54C9B03C02F916F9183 -:1003B000E6CF0F931F934F9320E040E15F9309B185 -:1003C000047104FB27F93F9350E03BE039C01471FE -:1003D00040642F77012F5F5F1EC0406819B1147110 -:1003E0002F7752501FC0406409B12F770471D1F1AB -:1003F0005F5F00C023C0406219B12F77147191F183 -:100400005F5F00C025C004711027515012F45D5F7A -:100410000000115027952C3F19B1C8F6147101271F -:10042000015027952C3FC8F64227499309B1047122 -:1004300010274F73115027952C3FA8F646954695E7 -:1004400019B1147179F00127015027952C3F98F6C6 -:100450006B5A60F3315009B1B0F600C011E01CBB1B -:10046000002717C03B503195C31BD04011E01CBB87 -:100470000881033CF9F00B34E9F020910E01198159 -:10048000110F1213EDCF093651F10D3211F0013E6B -:1004900039F7009315013F915F914F911F910F9193 -:1004A0002F916F91CCB3C0FD67CFDF91CF91CFBFBC -:1004B000CF91189520911501222369F31091130112 -:1004C000112339F534303AF13093130120930F01A1 -:1004D000109110013BE0311B309310011CC00091C2 -:1004E00013010130B4F40AE53091010134FD14C068 -:1004F00000930101C3E0D1E013C0052710E000C064 -:1005000000000BB91AC0052710E0221F1DC010E023 -:1005100021C04AE502C032ED432FC4E1D0E032E011 -:100520001AB114615C9A0BB11AB954E120E865E381 -:1005300020FF05270BB9279517951C3FF0F6669508 -:10054000B8F7B1F720FF05270BB9279517951C3F82 -:10055000D0F62795179517FF052700001C3F0BB90C -:10056000B0F629913A9519F70B7E10911401110FED -:10057000C651D0400BB911F010930E0111E01CBB15 -:1005800000611AB11B7E402F4B7E54E05A95F1F763 -:100590000BB91AB94BB97FCF9EE088E10FB6F8943A -:1005A000A895809360000FBE909360000E94980110 -:1005B000549A80E0815031F454987894A8950E9420 -:1005C0009900FCCFA895EFE9FFE03197F1F700C063 -:0805D0000000F0CFF894FFCF0A -:0205D800FF5AC8 -:00000001FF diff --git a/firmware/build_avr/avr_kazzo.elf b/firmware/build_avr/avr_kazzo.elf index dffad8d..0d8da16 100644 Binary files a/firmware/build_avr/avr_kazzo.elf and b/firmware/build_avr/avr_kazzo.elf differ diff --git a/firmware/build_avr/avr_kazzo.hex b/firmware/build_avr/avr_kazzo.hex index a0b2e2f..ca083ee 100644 --- a/firmware/build_avr/avr_kazzo.hex +++ b/firmware/build_avr/avr_kazzo.hex @@ -13,10 +13,10 @@ :1000C00049006E00660069006E00690074006500FA :1000D0004E00650073004C006900760065007300F7 :1000E0002E0063006F006D000403090411241FBE7D -:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0E8ED8E +:1000F000CFEFD4E0DEBFCDBF11E0A0E0B1E0ECED8A :10010000F5E002C005900D92A230B107D9F721E0C9 :10011000A2E0B1E001C01D92AD32B207E1F70E944A -:10012000CC020C94EA020C94000080E0089580E078 +:10012000CC020C94EC020C94000080E0089580E076 :100130000895CF93DF9360911301635067FD91C0E1 :1001400080911001CCE0D0E0C81BD109C95EDE4F20 :1001500080910F018D3209F0CFC0683009F07FC067 @@ -89,8 +89,8 @@ :1005800000611AB11B7E402F4B7E54E05A95F1F763 :100590000BB91AB94BB97FCF9EE088E10FB6F8943A :1005A000A895809360000FBE909360000E94980110 -:1005B000549A80E0815031F454987894A8950E9420 -:1005C0009900FCCFA895EFE9FFE03197F1F700C063 -:0805D0000000F0CFF894FFCF0A -:0205D800FF5AC8 +:1005B000549A80E0815041F4549878945198599A13 +:1005C000A8950E949900FCCFA895EFE9FFE031972C +:0C05D000F1F700C00000EECFF894FFCF60 +:0205DC00FF5AC4 :00000001FF diff --git a/firmware/build_stm/inlretro_stm.bin b/firmware/build_stm/inlretro_stm.bin index f3eb682..a198145 100644 Binary files a/firmware/build_stm/inlretro_stm.bin and b/firmware/build_stm/inlretro_stm.bin differ diff --git a/firmware/build_stm/inlretro_stm.elf b/firmware/build_stm/inlretro_stm.elf index 52052ba..3eef63e 100644 Binary files a/firmware/build_stm/inlretro_stm.elf and b/firmware/build_stm/inlretro_stm.elf differ diff --git a/firmware/build_stm/inlretro_stm.hex b/firmware/build_stm/inlretro_stm.hex index fa9c049..17bc170 100644 --- a/firmware/build_stm/inlretro_stm.hex +++ b/firmware/build_stm/inlretro_stm.hex @@ -13,7 +13,7 @@ :1000B000FD000008FD000008FD000008BD0100086B :1000C00009490A4A0A4B9B1A03DD043BC858D05021 :1000D000FBDC0849084A0020521A02DD043A885025 -:1000E000FCDC00F053F9000034050008000000209B +:1000E000FCDC00F053F90000580500080000002077 :1000F000000000200000002014000020FEE7C046A1 :10010000224B10B51968224B224C1A885208520013 :10011000505A214A10801A88023292B21A8052082C @@ -50,38 +50,40 @@ :10030000DED080210B431C490B8000231370D7E7FC :10031000005C00408F0F000000000020486000409B :100320000C000020060000200A0000200800002029 -:100330008E040008100000208081FFFF8FBFFFFFA8 -:100340007C040008A0040008A40400082A0300009C -:10035000F80400081E030000040000205060004064 +:10033000B2040008100000208081FFFF8FBFFFFF84 +:10034000A0040008C4040008C80400082A03000030 +:100350001C0500081E03000004000020506000403F :100360008F8EFFFF8080FFFF02600040BFBFFFFF56 :1003700030300000065C00404C5C00402032000041 -:10038000066000400F8FFFFFFEE7000090222C4B1D -:100390001203196830B50A431A6080229202196864 +:10038000066000400F8FFFFFFEE700009022334B16 +:100390001203196870B50A431A6080229202196824 :1003A0001142FCD0012259680A435A6080225968E0 :1003B00052020A435A6080225968D2020A435A60A4 :1003C0008022196852040A431A6080229204196834 -:1003D0001142FCD080211A6B0A431A638022D8692B -:1003E00012040243DA6162B60220164B4025DA8F0E -:1003F000154C8243DA87DA8F01388243DA8700228C -:100400001248C2872280124C2580124C0835258064 -:100410008025114C6D012580104C2180C287104928 -:10042000104A11808021104A090611608022D98F5C -:10043000D2000A43DA870D4A0D4B1A80FEE7C04608 -:1004400000100240025C0040505C0040065C00402E -:100450000060004004600040066000404C5C0040CA -:1004600020320000005C004000E100E00080FFFF5F -:10047000585C0040F8B5C046F8B5C0460902120005 -:100480000101008032090400000000000000120198 -:100490000002FF000008C016DC0500020102000196 -:1004A000040309042A0349006E00660069006E0017 -:1004B0006900740065004E00650073004C0069001F -:1004C0007600650073002E0063006F006D00000071 -:1004D000000000000000000000000000000000001C -:1004E000000000000000000000000000000000000C -:1004F00000000000000000001E0349004E004C00F8 -:10050000200052006500740072006F002D00500042 -:1005100072006F0067000000000000000000000093 -:1005200000000000000000000000000000000000CB -:0405300000000000C7 +:1003D0001142FCD080201A6B02431A638022D96933 +:1003E00012040A43DA6162B602241D4A4026D18F04 +:1003F0001C4DA143D187D18F013CA143D18700215E +:10040000194CE1872980194D2E80194D08362E8010 +:100410008026184D76012E80174D2880E1871748D9 +:100420001749088080201749000608608021D08F76 +:10043000C9000143D1871449144A118080225969A7 +:1004400012030A435A61124B12491A680A401A6091 +:100450008022D968D2040A43DA60FEE70010024025 +:10046000025C0040505C0040065C004000600040C0 +:1004700004600040066000404C5C004020320000F8 +:10048000005C004000E100E00080FFFF585C00409D +:1004900000080048FFFFFFFBF8B5C046F8B5C046AE +:1004A000090212000101008032090400000000006E +:1004B000000012010002FF000008C016DC05000267 +:1004C00001020001040309042A0349006E006600CA +:1004D00069006E006900740065004E0065007300DD +:1004E0004C0069007600650073002E0063006F0009 +:1004F0006D0000000000000000000000000000008F +:1005000000000000000000000000000000000000EB +:100510000000000000000000000000001E03490071 +:100520004E004C00200052006500740072006F0005 +:100530002D00500072006F006700000000000000F6 +:1005400000000000000000000000000000000000AB +:080550000000000000000000A3 :04000005080000C12E :00000001FF diff --git a/firmware/build_stm/inlretro_stm.map b/firmware/build_stm/inlretro_stm.map index 8741337..99091e0 100644 --- a/firmware/build_stm/inlretro_stm.map +++ b/firmware/build_stm/inlretro_stm.map @@ -45,12 +45,12 @@ Discarded input sections .ARM.exidx 0x00000000 0x8 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/crt0.o .ARM.attributes 0x00000000 0x1b c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/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\ccUpdoNL.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o .text 0x00000000 0x0 source/main.o (symbol from plugin) - .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o - .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o - .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .text 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o + .data 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o + .bss 0x00000000 0x0 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .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) @@ -156,9 +156,9 @@ Linker script and memory map LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/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\ccUpdoNL.o +LOAD C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o LOAD source/main.o -LOAD C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o +LOAD C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o LOAD source/usb.o LOAD source_stm_only/stm_init.o LOAD source_stm_only/usbstm.o @@ -175,12 +175,12 @@ END GROUP LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtend.o LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtn.o -.text 0x08000000 0x534 +.text 0x08000000 0x558 *(.isr_vector) - .isr_vector 0x08000000 0xc0 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + .isr_vector 0x08000000 0xc0 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o 0x08000000 __isr_vector *(.text*) - .text 0x080000c0 0x40 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + .text 0x080000c0 0x40 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o 0x080000c0 Reset_Handler 0x080000fc TSC_IRQHandler 0x080000fc ADC1_COMP_IRQHandler @@ -220,23 +220,23 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm 0x080000fc USART1_IRQHandler 0x080000fc TIM1_BRK_UP_TRG_COM_IRQHandler .text.control_xfr_in - 0x08000100 0xbc C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x08000100 0xbc C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .text.USB_IRQHandler - 0x080001bc 0x1cc C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x080001bc 0x1cc C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o 0x080001bc USB_IRQHandler .text.HardFault_Handler - 0x08000388 0x2 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x08000388 0x2 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o 0x08000388 HardFault_Handler *fill* 0x0800038a 0x2 .text.startup.main - 0x0800038c 0xe8 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x0800038c 0x10c C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o 0x0800038c main *(.init) - .init 0x08000474 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x08000474 _init + .init 0x08000498 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x08000498 _init *(.fini) - .fini 0x08000478 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o - 0x08000478 _fini + .fini 0x0800049c 0x4 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o + 0x0800049c _fini *crtbegin.o(.ctors) *crtbegin?.o(.ctors) *(EXCLUDE_FILE(*crtend.o *crtend?.o) .ctors) @@ -249,45 +249,45 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm *(.dtors) *(.rodata*) .rodata.config_desc - 0x0800047c 0x12 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x080004a0 0x12 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .rodata.device_desc - 0x0800048e 0x12 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x080004b2 0x12 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .rodata.string0_desc - 0x080004a0 0x4 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x080004c4 0x4 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .rodata.string1_desc - 0x080004a4 0x54 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x080004c8 0x54 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .rodata.string2_desc - 0x080004f8 0x3c C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x0800051c 0x3c C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o *(.eh_frame*) -.glue_7 0x08000534 0x0 - .glue_7 0x08000534 0x0 linker stubs +.glue_7 0x08000558 0x0 + .glue_7 0x08000558 0x0 linker stubs -.glue_7t 0x08000534 0x0 - .glue_7t 0x08000534 0x0 linker stubs +.glue_7t 0x08000558 0x0 + .glue_7t 0x08000558 0x0 linker stubs -.vfp11_veneer 0x08000534 0x0 - .vfp11_veneer 0x08000534 0x0 linker stubs +.vfp11_veneer 0x08000558 0x0 + .vfp11_veneer 0x08000558 0x0 linker stubs -.v4_bx 0x08000534 0x0 - .v4_bx 0x08000534 0x0 linker stubs +.v4_bx 0x08000558 0x0 + .v4_bx 0x08000558 0x0 linker stubs -.iplt 0x08000534 0x0 - .iplt 0x08000534 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.iplt 0x08000558 0x0 + .iplt 0x08000558 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o -.rel.dyn 0x08000534 0x0 - .rel.iplt 0x08000534 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o +.rel.dyn 0x08000558 0x0 + .rel.iplt 0x08000558 0x0 c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crtbegin.o .ARM.extab *(.ARM.extab* .gnu.linkonce.armextab.*) - 0x08000534 __exidx_start = . + 0x08000558 __exidx_start = . .ARM.exidx *(.ARM.exidx* .gnu.linkonce.armexidx.*) - 0x08000534 __exidx_end = . - 0x08000534 __etext = ALIGN (0x4) + 0x08000558 __exidx_end = . + 0x08000558 __etext = ALIGN (0x4) -.data 0x20000000 0x0 load address 0x08000534 +.data 0x20000000 0x0 load address 0x08000558 0x20000000 __data_start__ = . *(vtable) *(.data*) @@ -316,20 +316,20 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm 0x20000000 . = ALIGN (0x4) 0x20000000 __bss_start__ = . *(.bss*) - .bss.log 0x20000000 0x4 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .bss.log 0x20000000 0x4 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .bss.new_address - 0x20000004 0x1 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x20000004 0x1 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o *fill* 0x20000005 0x1 .bss.num_bytes_req - 0x20000006 0x2 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x20000006 0x2 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .bss.num_bytes_sending - 0x20000008 0x2 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x20000008 0x2 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .bss.num_bytes_xfrd - 0x2000000a 0x2 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o - .bss.req_dir 0x2000000c 0x1 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x2000000a 0x2 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o + .bss.req_dir 0x2000000c 0x1 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o *fill* 0x2000000d 0x3 .bss.usbMsgPtr - 0x20000010 0x4 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x20000010 0x4 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o *(COMMON) 0x20000014 . = ALIGN (0x4) 0x20000014 __bss_end__ = . @@ -338,12 +338,12 @@ LOAD c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm 0x20000018 __end__ = . [!provide] PROVIDE (end, .) *(.heap*) - .heap 0x20000018 0x0 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + .heap 0x20000018 0x0 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o 0x20000018 __HeapLimit = . .stack_dummy 0x20000018 0xc00 *(.stack*) - .stack 0x20000018 0xc00 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + .stack 0x20000018 0xc00 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o 0x20001800 __StackTop = (ORIGIN (RAM) + LENGTH (RAM)) 0x20000c00 __StackLimit = (__StackTop - SIZEOF (.stack_dummy)) 0x20001800 PROVIDE (__stack, __StackTop) @@ -355,41 +355,41 @@ OUTPUT(build_stm/inlretro_stm.elf elf32-littlearm) .ARM.attributes 0x00000000 0x1e c:/program files (x86)/gnu tools arm embedded/6.2 2016q4/bin/../lib/gcc/arm-none-eabi/6.2.1/thumb/v6-m/crti.o .ARM.attributes - 0x0000001e 0x1b C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + 0x0000001e 0x1b C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o .ARM.attributes - 0x00000039 0x2f C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x00000039 0x2f C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .comment 0x00000000 0x6e - .comment 0x00000000 0x6e C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .comment 0x00000000 0x6e C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o 0x6f (size before relaxing) -.debug_line 0x00000000 0x31d - .debug_line 0x00000000 0x6f C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o - .debug_line 0x0000006f 0x2ae C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o +.debug_line 0x00000000 0x324 + .debug_line 0x00000000 0x6f C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o + .debug_line 0x0000006f 0x2b5 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_info 0x00000000 0x501 - .debug_info 0x00000000 0x83 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o - .debug_info 0x00000083 0x47e C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_info 0x00000000 0x83 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o + .debug_info 0x00000083 0x47e C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_abbrev 0x00000000 0x277 - .debug_abbrev 0x00000000 0x14 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o - .debug_abbrev 0x00000014 0x263 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_abbrev 0x00000000 0x14 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o + .debug_abbrev 0x00000014 0x263 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_aranges 0x00000000 0x58 .debug_aranges - 0x00000000 0x20 C:\Users\Paul\AppData\Local\Temp\ccUpdoNL.o + 0x00000000 0x20 C:\Users\Paul\AppData\Local\Temp\cc6oNvuz.o .debug_aranges - 0x00000020 0x38 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + 0x00000020 0x38 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_loc 0x00000000 0xa4 - .debug_loc 0x00000000 0xa4 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_loc 0x00000000 0xa4 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_ranges 0x00000000 0xc0 - .debug_ranges 0x00000000 0xc0 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_ranges 0x00000000 0xc0 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o .debug_str 0x00000000 0x360 - .debug_str 0x00000000 0x360 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_str 0x00000000 0x360 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o 0x38a (size before relaxing) .debug_frame 0x00000000 0x70 - .debug_frame 0x00000000 0x70 C:\Users\Paul\AppData\Local\Temp\ccBQWscb.ltrans0.ltrans.o + .debug_frame 0x00000000 0x70 C:\Users\Paul\AppData\Local\Temp\ccxBHZ68.ltrans0.ltrans.o diff --git a/firmware/include_stm/stm32f070x6.h b/firmware/include_stm/stm32f070x6.h index 9e4e958..b1a80c5 100644 --- a/firmware/include_stm/stm32f070x6.h +++ b/firmware/include_stm/stm32f070x6.h @@ -122,7 +122,7 @@ typedef enum */ #include "core_cm0.h" /* Cortex-M0 processor and core peripherals */ -#include "system_stm32f0xx.h" /* STM32F0xx System Header */ +//create our own system functions! #include "system_stm32f0xx.h" /* STM32F0xx System Header */ #include /** @addtogroup Peripheral_registers_structures diff --git a/firmware/source/avr_gpio.h b/firmware/source/avr_gpio.h new file mode 100644 index 0000000..036126b --- /dev/null +++ b/firmware/source/avr_gpio.h @@ -0,0 +1,32 @@ + +#define __IO volatile /*!< Defines 'read / write' permissions */ + +/** + * @brief General Purpose I/O + */ + +typedef struct +{ + __IO uint8_t PIN; /*!< GPIO port output type register, Address offset: 0x00 */ + __IO uint8_t DDR; /*!< GPIO port input data register, Address offset: 0x01 */ + __IO uint8_t PORT; /*!< GPIO port output data register, Address offset: 0x02 */ +} GPIO_TypeDef; + +#define REGISTER_BASE ((uint16_t)0x0000U) + +/*!< GPIO peripherals */ +#define GPIOA_BASE (REGISTER_BASE + 0x0020) +#define GPIOB_BASE (REGISTER_BASE + 0x0023) +#define GPIOC_BASE (REGISTER_BASE + 0x0026) +#define GPIOD_BASE (REGISTER_BASE + 0x0029) + + +#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE) +#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE) +#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE) +#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE) + +//#define GPIO_MODER_MODER0_Pos (0U) +//#define GPIO_MODER_MODER0_Msk (0x3U << GPIO_MODER_MODER0_Pos) /*!< 0x00000003 */ +//#define GPIO_MODER_MODER0 GPIO_MODER_MODER0_Msk + diff --git a/firmware/source/main.c b/firmware/source/main.c index b525708..23fcb1a 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -75,6 +75,14 @@ int main(void) //Initialize board/system #endif + //Turn on LED +#ifdef STM_CORE + RCC->AHBENR |= (IOP_LED_EN); +#endif +// PCb_OP_EN(LEDbank, LED); +// PCb_SET_HI(LEDbank, LED); + PCb_IP_PU(LEDbank, LED); + //================= //MAIN LOOP //================= diff --git a/firmware/source/pinport_al.h b/firmware/source/pinport_al.h new file mode 100644 index 0000000..824455f --- /dev/null +++ b/firmware/source/pinport_al.h @@ -0,0 +1,421 @@ +#ifndef _pinport_al_h +#define _pinport_al_h + +//Define the board type in makefile +//#define AVR_KAZZO +//#define STM_ADAPTER +//#define STM_INL6 + +#ifdef AVR_CORE + #include "avr_gpio.h" +#elif STM_CORE + #include +#endif + +//============================================================================================= +// +// PINPORT ABSTRACTION LAYER +// +//============================================================================================= +// +// The pinport abstraction layer creates definitions of generic device GPIO ports. +// These generic ports are designed to make high level firmware generic to the +// actual underlying hardware. The ports created have defined sizes and access rules +// that keeps firmware from growing in complexity based on the specific hardware. +// +// Idea is to define ports which are available on all hardware, but also create ports +// which may not be available to other hardwares. If the firmware is instructed to +// perform an operation on a port that's not present, or not initialized/setup error +// codes will be sent back to the host to designate the lack of port presence. +// +// --------------------------------------------------------------------------------------- +// CONTROL PORT: 16bits for function +// C15-0 +// Directionality: All pins are able to be toggled between input/output individually +// Driver: All pins indiv selectable pull-up or float for input. Output always push pull. +// Write/Output: Bit access only, no byte/word accesses +// Read/Input: Bit access only, returned byte/word will be zero if clear, non-zero if set +// --------------------------------------------------------------------------------------- + +// STM32 GPIO registers are quite different than AVR style +// they are more flexible/capable, but a little tricky to interface with +// some features present on STM32 pins, but not AVR +// - PULL-DOWN ability (and PULL-UP like AVR) +// - Speed/Slew rate selection +// - Open drain outputs (and push/pull like AVR) +// - Bit set/reset registers to remove necessity of RMW operations +// - Lockability to keep port config bits from changing until reset +// - GPIO blocks must be provided a clock and enabled to "turn on" +// failing to do so will cause hard faults when accessing registers!! +// +// All GPIO registers can be accessed in byte, halfword, or 32bit full words +// unless otherwise noted +// +// GPIOx->MODER[1:0] 32bit registers control direction/type of driver +// 00- Input (default reset state, except SWC-PA15 & SWD-PA13 default AF) +// 01- Gen Purp Output +// 10- Alternate func (SPI, I2C, etc) +// 11- reserved +// MODER[1] typically leave clear unless using AltFunc +// MODER[0] becomes equivalent of AVR DDR +#define MODER_OP 0x01 +#define MODER_AF 0x10 +// +// GPIOx->OTYPER 16bit registers control driver type +// 0- Push Pull (default reset state) +// 1- Open Drain +// N/A when MODER is set to "00" INPUT +// we can generally just ignore this register and use pushpull as AVR does +// +// GPIOx->OSPEEDR[1:0] 32bit registers control pin driver speed/slew +// x0- Low speed (default reset state, except SWD-PA13 default High Spd) +// 01- Medium speed +// 11- High speed +// N/A when MODER is set to "00" INPUT +// we can generally just ignore this register and use slow speed +// +// GPIOx->PUPDR[1:0] 32bit registers control pull-up/down resistors +// this register is in effect even when alternate functions are enabled +// 00- floating/disabled, no pull-up/down (default for most pins except below) +// 01- Pull-up enabled (default SWD-PA13) also CIRAM A10 +// 10- Pull-down enabled (default SWC-PA14) +// 11- Reserved, don't use (prob enables both which would be bad...) +// PUPDR[0] is kinda like AVR PORT when DDR is set to INPUT, and PUPDR[1]=0 +// This ends up being a little cleaner than AVR i/o interfacing +// Can probably just enable pull-ups on everything and leave it like that +// -only exception being USB pins (PA11/12) better leave those floating +#define PUPDR_FLT 0x00 +#define PUPDR_PU 0x01 +#define PUPDR_PD 0x10 +// +// GPIOx->IDR 16bit register used to read current input level on pin +// this register is read only +// +// GPIOx->ODR 16bit register used to set output of pin if enabled by MODER +// this register is read/writeable +// +// GPIOx->BSRR 32bit register to only set/clear pins +// BR[31:16] upper halfword is will reset/clear pin if written to '1' value +// BS[15:00] lower halfword is will set pin if written to '1' value +// writing 0 to any bit has no effect +// if setting both BS register has priority (bit will be set) +// this register is write only! +// +// GPIO->BRR 16bit register equivalent to upper word of BSRR register above +// provides convinent separate BR register that doesn't need shifted +// +// GPIOx->LCKR 17bit register MUST BE ACCESSED in 32bit full words!!! +// complex sequence needed to set, but once done lock config/altfunc +// bits for that GPIO. I interpret this to mean the registers above +// plus AF registers, exception of IDR, ODR, BSRR registers +// Good to use this for things than we don't want to accidentally change: +// - USB & XTAL pins come to mind as good candidates +// +// GPIOx->AFRL/H 2 sets of 32bit registers to determine alternate function +// of GPIO if enabled with MODER registers. Default is AF0 at reset + + +// AVR GPIO are rather simple in comparison to STM32 GPIO: +// +// DDRx 8bit direction register +// Determines 'direction' of pin driver +// set for output, clear of input +// reads give current status of register +// +// PORTx 8bit output/pullup register +// writes set/clear pin if DDR is set/OP +// write '1' to enable pull-up if DDR is clear/IP +// write '0' to disable pull-up if DDR is clear/IP +// reads give current status of register +// bit access must be done by means of RMW/shadow reg +// +// PINx 8bit read register +// read when DDR is clear/IP to get current pin level +// reading when O/P is of little use, as should be value of PORTx +// read only register + +//kaz6 is PB1 +//#define LED (1U) +//#define IOP_LED_EN RCC_AHBENR_GPIOBEN +//#define GPIO_LED GPIOB +// +////kaz adapter is PC13 +//#define LED (13U) +//#define IOP_LED_EN RCC_AHBENR_GPIOCEN +//#define GPIO_LED GPIOC +// +////kaz adapter data0 debug is PB8 +//#define DEBUG (8U) +//#define IOP_DEBUG_EN RCC_AHBENR_GPIOBEN +//#define GPIO_DEBUG GPIOB +// +//#define LED_ON() (GPIO_LED->ODR |= (0x1U<ODR &= ~(0x1U<ODR |= (0x1U<ODR &= ~(0x1U<MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR |= (PUPDR_PU<<(pin*2)) +#define PCb_IP_FLT(bank, pin) bank->MODER &= ~(MODER_OP<<(pin*2)); bank->PUPDR &= ~(PUPDR_PU<<(pin*2)) +#define PCb_OP_EN(bank, pin) bank->MODER |= (MODER_OP<<(pin*2)) +#define PCb_READ(bank, pin, val) val = (bank->IDR & (1<BSRR = 1<BRR = 1<DDR &= ~(1<PORT |= (1<DDR &= ~(1<PORT &= ~(1<DDR |= (1<PIN & (1<PORT |= (1<PORT &= ~(1<