From fd1d993eff97609f9b901ca45d58ab621c92437d Mon Sep 17 00:00:00 2001 From: dekunukem Date: Sun, 4 Apr 2021 07:46:13 +0100 Subject: [PATCH] new firmware released --- firmware/code/MDK-ARM/lul.uvguix.Allen | 8 +++---- firmware/code/MDK-ARM/lul/lul.axf | Bin 1083132 -> 1083132 bytes firmware/code/MDK-ARM/lul/lul.build_log.htm | 6 ++++- firmware/code/MDK-ARM/lul/lul.hex | 2 +- firmware/code/MDK-ARM/lul/lul.htm | 2 +- firmware/code/MDK-ARM/lul/lul_lul.dep | 2 +- firmware/code/MDK-ARM/lul/main.crf | Bin 637883 -> 637883 bytes firmware/code/MDK-ARM/lul/main.o | Bin 688712 -> 688712 bytes firmware/code/Src/main.c | 2 +- firmware/duckypad_v0.17.0.dfu | Bin 0 -> 51029 bytes firmware_updates_and_version_history.md | 23 +++++++++++++++----- 11 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 firmware/duckypad_v0.17.0.dfu diff --git a/firmware/code/MDK-ARM/lul.uvguix.Allen b/firmware/code/MDK-ARM/lul.uvguix.Allen index 25e4d6e9..9c9de8e5 100644 --- a/firmware/code/MDK-ARM/lul.uvguix.Allen +++ b/firmware/code/MDK-ARM/lul.uvguix.Allen @@ -1838,7 +1838,7 @@ Debug 2373 - 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 + 00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000 898 @@ -3678,9 +3678,9 @@ ../Src/main.c - 40 - 468 - 499 + 38 + 71 + 95 1 0 diff --git a/firmware/code/MDK-ARM/lul/lul.axf b/firmware/code/MDK-ARM/lul/lul.axf index 76de6dc041da3737c85f8da9307388dd916005bc..840b08479f581fcb0e43b2d4026bc1e67796fc9a 100644 GIT binary patch delta 90 zcmey<>-4ABX+y?QM#1LHqwSeT8G)Dyh?#+y1&CRJm<@>8ftUk`If0l9h`E872Z(vM cXCCGIJew)ie0pIs|M7O!B>wHHNdnhZ0A2(qsQ>@~ delta 90 zcmey<>-4ABX+y?QMuFzcqwSeT8G)Dyh?#+y1&CRJm<@>8ftUk`If0l9h`E872Z(vM dXCCGIJew)ebb8<({^RYcN&MSYlLW4-003TfC%XUu diff --git a/firmware/code/MDK-ARM/lul/lul.build_log.htm b/firmware/code/MDK-ARM/lul/lul.build_log.htm index cc49826d..f7ce8420 100644 --- a/firmware/code/MDK-ARM/lul/lul.build_log.htm +++ b/firmware/code/MDK-ARM/lul/lul.build_log.htm @@ -27,6 +27,10 @@

Project:

Output:

*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin' Build target 'lul' +compiling main.c... +linking... +Program Size: Code=45660 RO-data=4540 RW-data=1108 ZI-data=14780 +FromELF: creating hex file... "lul\lul.axf" - 0 Error(s), 0 Warning(s).

Software Packages used:

@@ -50,7 +54,7 @@

Collection of Component include folders:

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.3.0 -Build Time Elapsed: 00:00:01 +Build Time Elapsed: 00:00:02 diff --git a/firmware/code/MDK-ARM/lul/lul.hex b/firmware/code/MDK-ARM/lul/lul.hex index 7d0089fd..8a643522 100644 --- a/firmware/code/MDK-ARM/lul/lul.hex +++ b/firmware/code/MDK-ARM/lul/lul.hex @@ -3154,7 +3154,7 @@ :10C5000090106769742E696F2F6475636B79706121 :10C51000640B143075407304FF8580323232171477 :10C520003246640201100D030405080706090A0BD0 -:10C530000E0D0C62101016466F7220696E737472C5 +:10C530000E0D0C62111016466F7220696E737472C4 :10C54000756374696F6E732C207365651201135DDA :10C55000461B08DD041AAD041AFD041A7D0481137C :10C56000213C1B0851041A5D041A85041AB1041AEF diff --git a/firmware/code/MDK-ARM/lul/lul.htm b/firmware/code/MDK-ARM/lul/lul.htm index c097bce7..24fbaf2c 100644 --- a/firmware/code/MDK-ARM/lul/lul.htm +++ b/firmware/code/MDK-ARM/lul/lul.htm @@ -3,7 +3,7 @@ Static Call Graph - [lul\lul.axf]

Static Call Graph for image lul\lul.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Sun Apr 04 06:59:26 2021 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Sun Apr 04 07:39:00 2021

Maximum Stack Usage = 440 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

diff --git a/firmware/code/MDK-ARM/lul/lul_lul.dep b/firmware/code/MDK-ARM/lul/lul_lul.dep index 3257537c..94b1a57d 100644 --- a/firmware/code/MDK-ARM/lul/lul_lul.dep +++ b/firmware/code/MDK-ARM/lul/lul_lul.dep @@ -555,7 +555,7 @@ I (../Middlewares/Third_Party/FreeRTOS/Source/include/event_groups.h)(0x5E3DA25F I (../Inc/parser.h)(0x6069554B) I (../Inc/buttons.h)(0x5F997909) I (../Inc/keyboard.h)(0x606947C4) -F (../Src/main.c)(0x60695585)(-c --cpu Cortex-M0 -D__MICROLIB -g -O2 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/Third_Party/FatFs/src -I ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM0 -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS --C99 -I.\RTE\_lul -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o lul\main.o --omf_browse lul\main.crf --depend lul\main.d) +F (../Src/main.c)(0x60695EFF)(-c --cpu Cortex-M0 -D__MICROLIB -g -O2 --apcs=interwork --split_sections -I ../Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc -I ../Drivers/STM32F0xx_HAL_Driver/Inc/Legacy -I ../Drivers/CMSIS/Device/ST/STM32F0xx/Include -I ../Drivers/CMSIS/Include -I ../Middlewares/Third_Party/FatFs/src -I ../Middlewares/ST/STM32_USB_Device_Library/Core/Inc -I ../Middlewares/ST/STM32_USB_Device_Library/Class/HID/Inc -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM0 -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS --C99 -I.\RTE\_lul -IC:\Users\allen\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\allen\AppData\Local\Arm\Packs\Keil\STM32F0xx_DFP\2.0.0\Drivers\CMSIS\Device\ST\STM32F0xx\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F072xB -DUSE_HAL_DRIVER -DSTM32F072xB -o lul\main.o --omf_browse lul\main.crf --depend lul\main.d) I (../Inc/main.h)(0x5FAFFC04) I (../Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h)(0x5E3DA25C) I (../Inc/stm32f0xx_hal_conf.h)(0x5FAFFC04) diff --git a/firmware/code/MDK-ARM/lul/main.crf b/firmware/code/MDK-ARM/lul/main.crf index bbcdc0938976579906c8fcdf34ff04368ff879d5..cc984a31a189c3a6b2ad66e6d47993c50216bc96 100644 GIT binary patch delta 61 zcmdn}U2XSwwGDTLx&H56+RVlP1b>>J3%5TPW&~m;AZ7+)79eH?Vm2UV2V#!x&xJX! GEC&Ek9vUA2 delta 61 zcmdn}U2XSwwGDTLxms5*ZDwNtf{y0r!tKw68G)Dyh?#+y1&CRJm<@>8ftX|ab79Ua F%K;%o86N-u diff --git a/firmware/code/MDK-ARM/lul/main.o b/firmware/code/MDK-ARM/lul/main.o index 05a4de45e51546a04dd4d44d005ca26d17826889..8c05f242848a946ce1e738bd019cdd252e9eb213 100644 GIT binary patch delta 90 zcmX@nqIIH0YeOt6qu}N^)*u;nb1P#DD^ttn?TYQ&6&Zn;35c12m<5PgftU@5*@2j2 k`*uan_z<>Ka}!--hUty-IV>l!3$&+}ac)m7<9f^u08pnLt^fc4 delta 90 zcmX@nqIIH0YeOt6qrm1k)*u;nGb>X|D4(_~#^hUty-IV>l!3$&+}ac)m7<9f^u08)k>(EtDd diff --git a/firmware/code/Src/main.c b/firmware/code/Src/main.c index 63435674..86c73f2d 100644 --- a/firmware/code/Src/main.c +++ b/firmware/code/Src/main.c @@ -84,7 +84,7 @@ osThreadId kb_scanHandle; /* USER CODE BEGIN PV */ /* Private variables ---------------------------------------------------------*/ uint8_t fw_version_major = 0; -uint8_t fw_version_minor = 16; +uint8_t fw_version_minor = 17; uint8_t fw_version_patch = 0; char instruction[] = "For instructions, see"; /* USER CODE END PV */ diff --git a/firmware/duckypad_v0.17.0.dfu b/firmware/duckypad_v0.17.0.dfu new file mode 100644 index 0000000000000000000000000000000000000000..71c63bb98d4a7d6fcc7075649d4de2b1369fe301 GIT binary patch literal 51029 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 literal 0 HcmV?d00001 diff --git a/firmware_updates_and_version_history.md b/firmware_updates_and_version_history.md index 509dc3ba..41996cef 100644 --- a/firmware_updates_and_version_history.md +++ b/firmware_updates_and_version_history.md @@ -6,15 +6,15 @@ ## Latest Firmware -### 0.16.0 +### 0.17.0 -[Download Here](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.16.0.dfu) +[Download Here](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.17.0.dfu) -* Added `COMMAND` and `OPTION` aliases for macOS. +* `LOOP` counter is no longer reset during sleep. -* Added support for right-side modifier keys, such as `RCTRL`, `RSHFIT`, `RALT`, etc. +* Key colour changes also persist through sleep now. -* [Click me](https://github.com/dekuNukem/duckyPad/blob/master/duckyscript_info.md#special-keys) to learn more. +* `MENU` key now works properly. ## USB Firmware Updates @@ -50,7 +50,7 @@ In the `Available DUF Devices` section at top left corner, you should see a `STM Press the `Choose...` button and select a firmware file in `.dfu` format. -* [Click me](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.16.0.dfu) to download the latest firmware (v0.16.0) +* [Click me](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.17.0.dfu) to download the latest firmware (v0.17.0) * ...or [scroll down](#firmware-version-history) for older firmware versions. @@ -82,6 +82,17 @@ After completion, press **`RESET`** button (or power-cycle) to start using the n ## Firmware Version History +### 0.17.0 + +[Download Here](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.17.0.dfu) + +* `LOOP` counter will no longer reset during sleep. + +* Key colour changes will also now persist through sleep. + +* `MENU` key now works properly. + + ### 0.16.0 [Download Here](https://github.com/dekuNukem/duckyPad/raw/master/firmware/duckypad_v0.16.0.dfu)