From 28e607ddac71db416c7ebfe1655a66ae77a35b57 Mon Sep 17 00:00:00 2001 From: Conor Patrick Date: Tue, 19 Nov 2019 15:48:40 -0500 Subject: [PATCH] fix stm32 build --- targets/stm32l432/build/application.mk | 5 +- targets/stm32l432/build/common.mk | 4 + targets/stm32l432/src/main.c | 138 +++++++++++-------------- 3 files changed, 63 insertions(+), 84 deletions(-) diff --git a/targets/stm32l432/build/application.mk b/targets/stm32l432/build/application.mk index 3a5cdc9..2f2733a 100644 --- a/targets/stm32l432/build/application.mk +++ b/targets/stm32l432/build/application.mk @@ -9,7 +9,7 @@ SRC += $(DRIVER_LIBS) $(USB_LIB) # FIDO2 lib SRC += ../../fido2/apdu.c ../../fido2/util.c ../../fido2/u2f.c ../../fido2/test_power.c SRC += ../../fido2/stubs.c ../../fido2/log.c ../../fido2/ctaphid.c ../../fido2/ctap.c -SRC += ../../fido2/ctap_parse.c ../../fido2/crypto.c ../../fido2/main.c +SRC += ../../fido2/ctap_parse.c ../../fido2/crypto.c SRC += ../../fido2/version.c SRC += ../../fido2/data_migration.c SRC += ../../fido2/extensions/extensions.c ../../fido2/extensions/solo.c @@ -68,9 +68,6 @@ all: $(TARGET).elf ../../crypto/micro-ecc/uECC.o: ../../crypto/micro-ecc/uECC.c $(CC) $^ $(HW) -O3 $(ECC_CFLAGS) -o $@ -%.o: %.s - $(CC) $^ $(HW) -Os $(CFLAGS) -o $@ - %.elf: $(OBJ) $(CC) $^ $(HW) $(LDFLAGS) -o $@ @echo "Built version: $(VERSION_FLAGS)" diff --git a/targets/stm32l432/build/common.mk b/targets/stm32l432/build/common.mk index 18147f0..40a9258 100644 --- a/targets/stm32l432/build/common.mk +++ b/targets/stm32l432/build/common.mk @@ -2,6 +2,7 @@ CC=$(PREFIX)arm-none-eabi-gcc CP=$(PREFIX)arm-none-eabi-objcopy SZ=$(PREFIX)arm-none-eabi-size AR=$(PREFIX)arm-none-eabi-ar +AS=$(PREFIX)arm-none-eabi-as DRIVER_LIBS := lib/stm32l4xx_hal_pcd.c lib/stm32l4xx_hal_pcd_ex.c lib/stm32l4xx_ll_gpio.c \ lib/stm32l4xx_ll_rcc.c lib/stm32l4xx_ll_rng.c lib/stm32l4xx_ll_tim.c \ @@ -27,3 +28,6 @@ _all: echo $(VERSION_MAJ) echo $(VERSION_MIN) echo $(VERSION_PAT) + +%.o: %.s + $(AS) -o $@ $^ \ No newline at end of file diff --git a/targets/stm32l432/src/main.c b/targets/stm32l432/src/main.c index 43c9b8d..9999e28 100644 --- a/targets/stm32l432/src/main.c +++ b/targets/stm32l432/src/main.c @@ -4,105 +4,83 @@ // http://apache.org/licenses/LICENSE-2.0> or the MIT license , at your option. This file may not be // copied, modified, or distributed except according to those terms. -#include #include -#include -#include "stm32l4xx.h" -#include "stm32l4xx_ll_gpio.h" -#include "stm32l4xx_ll_rcc.h" -#include "stm32l4xx_ll_system.h" -#include "stm32l4xx_ll_pwr.h" -#include "stm32l4xx_ll_utils.h" -#include "stm32l4xx_ll_cortex.h" -#include "stm32l4xx_ll_gpio.h" -#include "stm32l4xx_ll_usart.h" -#include "stm32l4xx_ll_bus.h" -#include "stm32l4xx_ll_usb.h" +#include +#include +#include +#include -#include "stm32l4xx_hal_pcd.h" - -#include "usbd_core.h" -#include "usbd_desc.h" -#include "usbd_hid.h" -/*#include "usbd_hid.h"*/ - -#include APP_CONFIG -#include "flash.h" -#include "rng.h" -#include "led.h" +#include "cbor.h" #include "device.h" +#include "ctaphid.h" +//#include "bsp.h" #include "util.h" -#include "fifo.h" #include "log.h" +#include "ctap.h" +#include APP_CONFIG -#ifdef TEST_SOLO_STM32 -#define Error_Handler() _Error_Handler(__FILE__,__LINE__) -#define PAGE_SIZE 2048 -#define PAGES 128 -// Pages 119-127 are data -#define COUNTER2_PAGE (PAGES - 4) -#define COUNTER1_PAGE (PAGES - 3) -#define STATE2_PAGE (PAGES - 2) -#define STATE1_PAGE (PAGES - 1) +#if !defined(TEST) -uint32_t __90_ms = 0; -#define IS_BUTTON_PRESSED() (0 == (LL_GPIO_ReadInputPort(SOLO_BUTTON_PORT) & SOLO_BUTTON_PIN)) - -// Timer6 overflow handler. happens every ~90ms. -void TIM6_DAC_IRQHandler() +int main(int argc, char *argv[]) { - // timer is only 16 bits, so roll it over here - TIM6->SR = 0; - __90_ms += 1; -} + uint8_t hidmsg[64]; + uint32_t t1 = 0; + + set_logging_mask( + /*0*/ + //TAG_GEN| + // TAG_MC | + // TAG_GA | + TAG_WALLET | + TAG_STOR | + //TAG_NFC_APDU | + TAG_NFC | + //TAG_CP | + // TAG_CTAP| + //TAG_HID| + TAG_U2F| + //TAG_PARSE | + //TAG_TIME| + // TAG_DUMP| + TAG_GREEN| + TAG_RED| + TAG_EXT| + TAG_CCID| + TAG_ERR + ); + + device_init(argc, argv); + + memset(hidmsg,0,sizeof(hidmsg)); -uint32_t millis(void) -{ - return (((uint32_t)TIM6->CNT) + (__90_ms * 90)); -} -void _Error_Handler(char *file, int line) -{ while(1) { - } -} - -int main(void) -{ - uint32_t i = 5; - - hw_init(); - - LL_GPIO_SetPinMode(SOLO_BUTTON_PORT,SOLO_BUTTON_PIN,LL_GPIO_MODE_INPUT); - LL_GPIO_SetPinPull(SOLO_BUTTON_PORT,SOLO_BUTTON_PIN,LL_GPIO_PULL_UP); - flash_option_bytes_init(1); - - while (1) - { - uint32_t t0 = millis() % 750; - if (! IS_BUTTON_PRESSED()) + if (millis() - t1 > HEARTBEAT_PERIOD) { - if (t0 < 750*1/3) - { - led_rgb(0 | (0 << 8) | (i << 17)); - } - else if (t0 < 750*2/3) - { - led_rgb(0 | (i << 8) | (0 << 16)); - } - else - { - led_rgb(i | (0 << 8) | (0 << 16)); - } + heartbeat(); + t1 = millis(); + } + + device_manage(); + + if (usbhid_recv(hidmsg) > 0) + { + ctaphid_handle_packet(hidmsg); + memset(hidmsg, 0, sizeof(hidmsg)); } else { - led_rgb(0x151515); } + ctaphid_check_timeouts(); } + + // Should never get here + usbhid_close(); + printf1(TAG_GREEN, "done\n"); + return 0; } -#endif +#endif \ No newline at end of file