From 7c8490211b4f5e681881023a4bf132346bbcd0f2 Mon Sep 17 00:00:00 2001 From: jaseg Date: Thu, 1 Nov 2018 16:39:56 +0900 Subject: Make demo work with STM32F4 board from aliexpress for SecureHID project --- libusbhost_stm32f4.ld | 9 ++++--- openocd.cfg | 16 ++++++++++++ src/demo.c | 70 ++++++++------------------------------------------- 3 files changed, 32 insertions(+), 63 deletions(-) create mode 100644 openocd.cfg diff --git a/libusbhost_stm32f4.ld b/libusbhost_stm32f4.ld index b814cc2..4f676ec 100644 --- a/libusbhost_stm32f4.ld +++ b/libusbhost_stm32f4.ld @@ -18,13 +18,16 @@ * along with this library. If not, see . */ -/* Linker script for ST STM32F4DISCOVERY (STM32F407VG, 1024K flash, 128K RAM). */ +/* Minimal linker script for chinese STM32F4 board (STM32F407VE, 512K flash, 128K RAM). */ /* Define memory regions. */ MEMORY { - rom (rx) : ORIGIN = 0x08000000, LENGTH = 1024K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 128K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 512K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 112K /* Main SRAM */ + sram2 (rwx) : ORIGIN = 0x2001c000, LENGTH = 16K /* SRAM2 with some security features (?) */ + ccm (rwx) : ORIGIN = 0x10000000, LENGTH = 64K /* Fast core-coupled memory */ + backup (rwx) : ORIGIN = 0x40024000, LENGTH = 4K /* Battery-backed backup SRAM */ } /* Include the common ld script. */ diff --git a/openocd.cfg b/openocd.cfg new file mode 100644 index 0000000..95410da --- /dev/null +++ b/openocd.cfg @@ -0,0 +1,16 @@ +telnet_port 4444 +gdb_port 3333 + +source [find interface/stlink-v2.cfg] +#interface jlink +#interface stlink-v2 +#adapter_khz 10000 +#transport select swd + +#source /usr/share/openocd/scripts/target/stm32f0x.cfg +source [find target/stm32f4x_stlink.cfg] + +init +arm semihosting enable + +#flash bank sysflash.alias stm32f0x 0x00000000 0 0 0 $_TARGETNAME diff --git a/src/demo.c b/src/demo.c index a6b4196..4228616 100644 --- a/src/demo.c +++ b/src/demo.c @@ -25,8 +25,6 @@ #include "usbh_lld_stm32f4.h" /// provides low level usb host driver for stm32f4 platform #include "usbh_driver_hid.h" /// provides generic usb device driver for Human Interface Device (HID) #include "usbh_driver_hub.h" /// provides usb full speed hub driver (Low speed devices on hub are not supported) -#include "usbh_driver_gp_xbox.h" /// provides usb device driver for Gamepad: Microsoft XBOX compatible Controller -#include "usbh_driver_ac_midi.h" /// provides usb device driver for midi class devices // STM32f407 compatible #include @@ -54,13 +52,13 @@ static void clock_setup(void) rcc_clock_setup_hse_3v3(&hse_8mhz_3v3[CLOCK_3V3_168MHZ]); // GPIO - rcc_periph_clock_enable(RCC_GPIOA); // OTG_FS + button + rcc_periph_clock_enable(RCC_GPIOA); // USART + OTG_FS + button rcc_periph_clock_enable(RCC_GPIOB); // OTG_HS - rcc_periph_clock_enable(RCC_GPIOC); // USART + OTG_FS charge pump + rcc_periph_clock_enable(RCC_GPIOC); // OTG_FS charge pump rcc_periph_clock_enable(RCC_GPIOD); // LEDS // periphery - rcc_periph_clock_enable(RCC_USART6); // USART + rcc_periph_clock_enable(RCC_USART1); // USART rcc_periph_clock_enable(RCC_OTGFS); // OTG_FS rcc_periph_clock_enable(RCC_OTGHS); // OTG_HS rcc_periph_clock_enable(RCC_TIM6); // TIM6 @@ -106,9 +104,9 @@ static void gpio_setup(void) gpio_mode_setup(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO15 | GPIO14); gpio_set_af(GPIOB, GPIO_AF12, GPIO14 | GPIO15); - // USART TX - gpio_mode_setup(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO6 | GPIO7); - gpio_set_af(GPIOC, GPIO_AF8, GPIO6 | GPIO7); + // USART + gpio_mode_setup(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO9 | GPIO10); + gpio_set_af(GPIOA, GPIO_AF7, GPIO9 | GPIO10); // button gpio_mode_setup(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO0); @@ -117,8 +115,6 @@ static void gpio_setup(void) static const usbh_dev_driver_t *device_drivers[] = { &usbh_hub_driver, &usbh_hid_driver, - &usbh_gp_xbox_driver, - &usbh_midi_driver, NULL }; @@ -133,32 +129,6 @@ static const usbh_low_level_driver_t * const lld_drivers[] = { NULL }; -static void gp_xbox_update(uint8_t device_id, gp_xbox_packet_t packet) -{ - (void)device_id; - (void)packet; - LOG_PRINTF("update %d: %d %d \n", device_id, packet.axis_left_x, packet.buttons & GP_XBOX_BUTTON_A); -} - - -static void gp_xbox_connected(uint8_t device_id) -{ - (void)device_id; - LOG_PRINTF("connected %d", device_id); -} - -static void gp_xbox_disconnected(uint8_t device_id) -{ - (void)device_id; - LOG_PRINTF("disconnected %d", device_id); -} - -static const gp_xbox_config_t gp_xbox_config = { - .update = &gp_xbox_update, - .notify_connected = &gp_xbox_connected, - .notify_disconnected = &gp_xbox_disconnected -}; - static void hid_in_message_handler(uint8_t device_id, const uint8_t *data, uint32_t length) { (void)device_id; @@ -171,6 +141,7 @@ static void hid_in_message_handler(uint8_t device_id, const uint8_t *data, uint3 // print only first 4 bytes, since every mouse should have at least these four set. // Report descriptors are not read by driver for now, so we do not know what each byte means LOG_PRINTF("HID EVENT %02X %02X %02X %02X \n", data[0], data[1], data[2], data[3]); + /* if (hid_get_type(device_id) == HID_TYPE_KEYBOARD) { static int x = 0; if (x != data[2]) { @@ -178,33 +149,13 @@ static void hid_in_message_handler(uint8_t device_id, const uint8_t *data, uint3 hid_set_report(device_id, x); } } + */ } static const hid_config_t hid_config = { .hid_in_message_handler = &hid_in_message_handler }; -static void midi_in_message_handler(int device_id, uint8_t *data) -{ - (void)device_id; - switch (data[1]>>4) { - case 8: - LOG_PRINTF("\r\nNote Off"); - break; - - case 9: - LOG_PRINTF("\r\nNote On"); - break; - - default: - break; - } -} - -const midi_config_t midi_config = { - .read_callback = &midi_in_message_handler -}; - int main(void) { clock_setup(); @@ -214,7 +165,8 @@ int main(void) tim6_setup(); #ifdef USART_DEBUG - usart_init(USART6, 921600); + //USART_BRR(USART1) = rcc_apb2_frequency / (16 * 1000000); + usart_init(USART1, 1000000); #endif LOG_PRINTF("\n\n\n\n\n###################\nInit\n"); @@ -225,8 +177,6 @@ int main(void) */ hid_driver_init(&hid_config); hub_driver_init(); - gp_xbox_driver_init(&gp_xbox_config); - midi_driver_init(&midi_config); gpio_set(GPIOD, GPIO13); /** -- cgit