From f7c218609781262e195b2bcdc6b52938ebb059fc Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Thu, 11 Nov 2021 09:43:04 +0000 Subject: [PATCH] Added STM32L073RZ-Nucleo64 to USB-CDC "multi" demo. Removed old demo. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@15059 27425a3e-05d8-49a3-a47f-9c15f0e5edd8 --- readme.txt | 1 + testhal/STM32/STM32L0xx/USB_CDC/.cproject | 52 --- testhal/STM32/STM32L0xx/USB_CDC/.project | 43 --- testhal/STM32/STM32L0xx/USB_CDC/main.c | 166 --------- testhal/STM32/STM32L0xx/USB_CDC/readme.txt | 27 -- testhal/STM32/STM32L0xx/USB_CDC/usbcfg.c | 342 ------------------ testhal/STM32/STM32L0xx/USB_CDC/usbcfg.h | 26 -- testhal/STM32/multi/USB_CDC/.cproject | 40 ++ testhal/STM32/multi/USB_CDC/Makefile | 11 +- .../cfg/stm32l073rz_nucleo64}/chconf.h | 6 +- .../cfg/stm32l073rz_nucleo64}/halconf.h | 2 +- .../cfg/stm32l073rz_nucleo64}/mcuconf.h | 2 +- .../USB_CDC/cfg/stm32l073rz_nucleo64/portab.c | 62 ++++ .../USB_CDC/cfg/stm32l073rz_nucleo64/portab.h | 72 ++++ ...ery-ch.elf)(OpenOCD, Flash and Run).launch | 49 +++ ...iscovery-ch.elf)(OpenOCD, Just Run).launch | 48 +++ ...ery-ch.elf)(OpenOCD, Flash and Run).launch | 49 +++ ...iscovery-ch.elf)(OpenOCD, Just Run).launch | 48 +++ .../USB_CDC/make/stm32l073rz_nucleo64.make} | 116 +++--- 19 files changed, 428 insertions(+), 734 deletions(-) delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/.cproject delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/.project delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/main.c delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/readme.txt delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/usbcfg.c delete mode 100644 testhal/STM32/STM32L0xx/USB_CDC/usbcfg.h rename testhal/STM32/{STM32L0xx/USB_CDC => multi/USB_CDC/cfg/stm32l073rz_nucleo64}/chconf.h (96%) rename testhal/STM32/{STM32L0xx/USB_CDC => multi/USB_CDC/cfg/stm32l073rz_nucleo64}/halconf.h (96%) rename testhal/STM32/{STM32L0xx/USB_CDC => multi/USB_CDC/cfg/stm32l073rz_nucleo64}/mcuconf.h (96%) create mode 100644 testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.c create mode 100644 testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.h create mode 100644 testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Flash and Run).launch create mode 100644 testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Just Run).launch create mode 100644 testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Flash and Run).launch create mode 100644 testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Just Run).launch rename testhal/STM32/{STM32L0xx/USB_CDC/Makefile => multi/USB_CDC/make/stm32l073rz_nucleo64.make} (64%) diff --git a/readme.txt b/readme.txt index 4eeb585ab..61b810c72 100644 --- a/readme.txt +++ b/readme.txt @@ -74,6 +74,7 @@ ***************************************************************************** *** Next *** +- NEW: Added STM32L073RZ-Nucleo64 to USB-CDC "multi" demo. Removed old demo. - NEW: Added an STM32 WDG "multi" demo. Removed all old WDG demos. - NEW: Added option to copy vectors in RAM on GCC startup for ARMv6-M, ARMv7-M and ARMv8-M-ML. diff --git a/testhal/STM32/STM32L0xx/USB_CDC/.cproject b/testhal/STM32/STM32L0xx/USB_CDC/.cproject deleted file mode 100644 index 3cd69a2a3..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/.cproject +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/testhal/STM32/STM32L0xx/USB_CDC/.project b/testhal/STM32/STM32L0xx/USB_CDC/.project deleted file mode 100644 index bb064d6a2..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/.project +++ /dev/null @@ -1,43 +0,0 @@ - - - STM32L0xx-USB_CDC - - - - - - org.eclipse.cdt.managedbuilder.core.genmakebuilder - clean,full,incremental, - - - - - org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder - full,incremental, - - - - - - org.eclipse.cdt.core.cnature - org.eclipse.cdt.managedbuilder.core.managedBuildNature - org.eclipse.cdt.managedbuilder.core.ScannerConfigNature - - - - board - 2 - CHIBIOS/os/hal/boards/ST_NUCLEO64_L073RZ - - - os - 2 - CHIBIOS/os - - - test - 2 - CHIBIOS/test - - - diff --git a/testhal/STM32/STM32L0xx/USB_CDC/main.c b/testhal/STM32/STM32L0xx/USB_CDC/main.c deleted file mode 100644 index 876e7aad9..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/main.c +++ /dev/null @@ -1,166 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include -#include - -#include "ch.h" -#include "hal.h" - -#include "shell.h" -#include "chprintf.h" - -#include "usbcfg.h" - -/*===========================================================================*/ -/* Command line related. */ -/*===========================================================================*/ - -#define SHELL_WA_SIZE THD_WORKING_AREA_SIZE(2048) - -/* Can be measured using dd if=/dev/xxxx of=/dev/null bs=512 count=10000.*/ -static void cmd_write(BaseSequentialStream *chp, int argc, char *argv[]) { - static uint8_t buf[] = - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; - - (void)argv; - if (argc > 0) { - chprintf(chp, "Usage: write\r\n"); - return; - } - - while (chnGetTimeout((BaseChannel *)chp, TIME_IMMEDIATE) == Q_TIMEOUT) { -#if 1 - /* Writing in channel mode.*/ - chnWrite(&SDU1, buf, sizeof buf - 1); -#else - /* Writing in buffer mode.*/ - (void) obqGetEmptyBufferTimeout(&SDU1.obqueue, TIME_INFINITE); - memcpy(SDU1.obqueue.ptr, buf, SERIAL_USB_BUFFERS_SIZE); - obqPostFullBuffer(&SDU1.obqueue, SERIAL_USB_BUFFERS_SIZE); -#endif - } - chprintf(chp, "\r\n\nstopped\r\n"); -} - -static const ShellCommand commands[] = { - {"write", cmd_write}, - {NULL, NULL} -}; - -static const ShellConfig shell_cfg1 = { - (BaseSequentialStream *)&SDU1, - commands -}; - -/*===========================================================================*/ -/* Generic code. */ -/*===========================================================================*/ - -/* - * Red LED blinker thread, times are in milliseconds. - */ -static THD_WORKING_AREA(waThread1, 128); -static THD_FUNCTION(Thread1, arg) { - - (void)arg; - chRegSetThreadName("blinker"); - while (true) { - systime_t time; - - time = serusbcfg.usbp->state == USB_ACTIVE ? 250 : 500; - palClearLine(LINE_LED_GREEN); - chThdSleepMilliseconds(time); - palSetLine(LINE_LED_GREEN); - chThdSleepMilliseconds(time); - } -} - -/* - * Application entry point. - */ -int main(void) { - - /* - * System initializations. - * - HAL initialization, this also initializes the configured device drivers - * and performs the board-specific initializations. - * - Kernel initialization, the main() function becomes a thread and the - * RTOS is active. - */ - halInit(); - chSysInit(); - - /* - * Initializes a serial-over-USB CDC driver. - */ - sduObjectInit(&SDU1); - sduStart(&SDU1, &serusbcfg); - - /* - * Configuring USB DP and DM PINs. - */ - palSetPadMode(GPIOA, GPIOA_PIN11, PAL_MODE_INPUT); - palSetPadMode(GPIOA, GPIOA_PIN12, PAL_MODE_INPUT); - - /* - * Activates the USB driver and then the USB bus pull-up on D+. - * Note, a delay is inserted in order to not have to disconnect the cable - * after a reset. - */ - usbDisconnectBus(serusbcfg.usbp); - chThdSleepMilliseconds(1500); - usbStart(serusbcfg.usbp, &usbcfg); - usbConnectBus(serusbcfg.usbp); - - /* - * Shell manager initialization. - */ - shellInit(); - - /* - * Creates the blinker thread. - */ - chThdCreateStatic(waThread1, sizeof(waThread1), NORMALPRIO, Thread1, NULL); - - /* - * Normal main() thread activity, spawning shells. - */ - while (true) { - if (SDU1.config->usbp->state == USB_ACTIVE) { - thread_t *shelltp = chThdCreateFromHeap(NULL, SHELL_WA_SIZE, - "shell", NORMALPRIO + 1, - shellThread, (void *)&shell_cfg1); - chThdWait(shelltp); /* Waiting termination. */ - } - chThdSleepMilliseconds(1000); - } -} diff --git a/testhal/STM32/STM32L0xx/USB_CDC/readme.txt b/testhal/STM32/STM32L0xx/USB_CDC/readme.txt deleted file mode 100644 index 29979b9d7..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/readme.txt +++ /dev/null @@ -1,27 +0,0 @@ -***************************************************************************** -** ChibiOS/HAL - USB-CDC driver demo for STM32F072. ** -***************************************************************************** - -** TARGET ** - -The demo runs on an ST STM32 Nycleo-64 L073RZ board and requires a USB -break-out board having PA11 connected to USB_DM and PA12 connected to USB_DP. - -** The Demo ** - -The application demonstrates the use of the STM32L073 USB driver. - -** Build Procedure ** - -The demo has been tested using the free Codesourcery GCC-based toolchain -and YAGARTO. -Just modify the TRGT line in the makefile in order to use different GCC ports. - -** Notes ** - -Some files used by the demo are not part of ChibiOS/RT but are copyright of -ST Microelectronics and are licensed under a different license. -Also note that not all the files present in the ST library are distributed -with ChibiOS/RT, you can find the whole library on the ST web site: - - http://www.st.com diff --git a/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.c b/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.c deleted file mode 100644 index 4c5809ad9..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#include "hal.h" - -/* Virtual serial port over USB.*/ -SerialUSBDriver SDU1; - -/* - * Endpoints to be used for USBD1. - */ -#define USBD1_DATA_REQUEST_EP 1 -#define USBD1_DATA_AVAILABLE_EP 1 -#define USBD1_INTERRUPT_REQUEST_EP 2 - -/* - * USB Device Descriptor. - */ -static const uint8_t vcom_device_descriptor_data[18] = { - USB_DESC_DEVICE (0x0110, /* bcdUSB (1.1). */ - 0x02, /* bDeviceClass (CDC). */ - 0x00, /* bDeviceSubClass. */ - 0x00, /* bDeviceProtocol. */ - 0x40, /* bMaxPacketSize. */ - 0x0483, /* idVendor (ST). */ - 0x5740, /* idProduct. */ - 0x0200, /* bcdDevice. */ - 1, /* iManufacturer. */ - 2, /* iProduct. */ - 3, /* iSerialNumber. */ - 1) /* bNumConfigurations. */ -}; - -/* - * Device Descriptor wrapper. - */ -static const USBDescriptor vcom_device_descriptor = { - sizeof vcom_device_descriptor_data, - vcom_device_descriptor_data -}; - -/* Configuration Descriptor tree for a CDC.*/ -static const uint8_t vcom_configuration_descriptor_data[67] = { - /* Configuration Descriptor.*/ - USB_DESC_CONFIGURATION(67, /* wTotalLength. */ - 0x02, /* bNumInterfaces. */ - 0x01, /* bConfigurationValue. */ - 0, /* iConfiguration. */ - 0xC0, /* bmAttributes (self powered). */ - 50), /* bMaxPower (100mA). */ - /* Interface Descriptor.*/ - USB_DESC_INTERFACE (0x00, /* bInterfaceNumber. */ - 0x00, /* bAlternateSetting. */ - 0x01, /* bNumEndpoints. */ - 0x02, /* bInterfaceClass (Communications - Interface Class, CDC section - 4.2). */ - 0x02, /* bInterfaceSubClass (Abstract - Control Model, CDC section 4.3). */ - 0x01, /* bInterfaceProtocol (AT commands, - CDC section 4.4). */ - 0), /* iInterface. */ - /* Header Functional Descriptor (CDC section 5.2.3).*/ - USB_DESC_BYTE (5), /* bLength. */ - USB_DESC_BYTE (0x24), /* bDescriptorType (CS_INTERFACE). */ - USB_DESC_BYTE (0x00), /* bDescriptorSubtype (Header - Functional Descriptor. */ - USB_DESC_BCD (0x0110), /* bcdCDC. */ - /* Call Management Functional Descriptor. */ - USB_DESC_BYTE (5), /* bFunctionLength. */ - USB_DESC_BYTE (0x24), /* bDescriptorType (CS_INTERFACE). */ - USB_DESC_BYTE (0x01), /* bDescriptorSubtype (Call Management - Functional Descriptor). */ - USB_DESC_BYTE (0x00), /* bmCapabilities (D0+D1). */ - USB_DESC_BYTE (0x01), /* bDataInterface. */ - /* ACM Functional Descriptor.*/ - USB_DESC_BYTE (4), /* bFunctionLength. */ - USB_DESC_BYTE (0x24), /* bDescriptorType (CS_INTERFACE). */ - USB_DESC_BYTE (0x02), /* bDescriptorSubtype (Abstract - Control Management Descriptor). */ - USB_DESC_BYTE (0x02), /* bmCapabilities. */ - /* Union Functional Descriptor.*/ - USB_DESC_BYTE (5), /* bFunctionLength. */ - USB_DESC_BYTE (0x24), /* bDescriptorType (CS_INTERFACE). */ - USB_DESC_BYTE (0x06), /* bDescriptorSubtype (Union - Functional Descriptor). */ - USB_DESC_BYTE (0x00), /* bMasterInterface (Communication - Class Interface). */ - USB_DESC_BYTE (0x01), /* bSlaveInterface0 (Data Class - Interface). */ - /* Endpoint 2 Descriptor.*/ - USB_DESC_ENDPOINT (USBD1_INTERRUPT_REQUEST_EP|0x80, - 0x03, /* bmAttributes (Interrupt). */ - 0x0008, /* wMaxPacketSize. */ - 0xFF), /* bInterval. */ - /* Interface Descriptor.*/ - USB_DESC_INTERFACE (0x01, /* bInterfaceNumber. */ - 0x00, /* bAlternateSetting. */ - 0x02, /* bNumEndpoints. */ - 0x0A, /* bInterfaceClass (Data Class - Interface, CDC section 4.5). */ - 0x00, /* bInterfaceSubClass (CDC section - 4.6). */ - 0x00, /* bInterfaceProtocol (CDC section - 4.7). */ - 0x00), /* iInterface. */ - /* Endpoint 3 Descriptor.*/ - USB_DESC_ENDPOINT (USBD1_DATA_AVAILABLE_EP, /* bEndpointAddress.*/ - 0x02, /* bmAttributes (Bulk). */ - 0x0040, /* wMaxPacketSize. */ - 0x00), /* bInterval. */ - /* Endpoint 1 Descriptor.*/ - USB_DESC_ENDPOINT (USBD1_DATA_REQUEST_EP|0x80, /* bEndpointAddress.*/ - 0x02, /* bmAttributes (Bulk). */ - 0x0040, /* wMaxPacketSize. */ - 0x00) /* bInterval. */ -}; - -/* - * Configuration Descriptor wrapper. - */ -static const USBDescriptor vcom_configuration_descriptor = { - sizeof vcom_configuration_descriptor_data, - vcom_configuration_descriptor_data -}; - -/* - * U.S. English language identifier. - */ -static const uint8_t vcom_string0[] = { - USB_DESC_BYTE(4), /* bLength. */ - USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType. */ - USB_DESC_WORD(0x0409) /* wLANGID (U.S. English). */ -}; - -/* - * Vendor string. - */ -static const uint8_t vcom_string1[] = { - USB_DESC_BYTE(38), /* bLength. */ - USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType. */ - 'S', 0, 'T', 0, 'M', 0, 'i', 0, 'c', 0, 'r', 0, 'o', 0, 'e', 0, - 'l', 0, 'e', 0, 'c', 0, 't', 0, 'r', 0, 'o', 0, 'n', 0, 'i', 0, - 'c', 0, 's', 0 -}; - -/* - * Device Description string. - */ -static const uint8_t vcom_string2[] = { - USB_DESC_BYTE(56), /* bLength. */ - USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType. */ - 'C', 0, 'h', 0, 'i', 0, 'b', 0, 'i', 0, 'O', 0, 'S', 0, '/', 0, - 'R', 0, 'T', 0, ' ', 0, 'V', 0, 'i', 0, 'r', 0, 't', 0, 'u', 0, - 'a', 0, 'l', 0, ' ', 0, 'C', 0, 'O', 0, 'M', 0, ' ', 0, 'P', 0, - 'o', 0, 'r', 0, 't', 0 -}; - -/* - * Serial Number string. - */ -static const uint8_t vcom_string3[] = { - USB_DESC_BYTE(8), /* bLength. */ - USB_DESC_BYTE(USB_DESCRIPTOR_STRING), /* bDescriptorType. */ - '0' + CH_KERNEL_MAJOR, 0, - '0' + CH_KERNEL_MINOR, 0, - '0' + CH_KERNEL_PATCH, 0 -}; - -/* - * Strings wrappers array. - */ -static const USBDescriptor vcom_strings[] = { - {sizeof vcom_string0, vcom_string0}, - {sizeof vcom_string1, vcom_string1}, - {sizeof vcom_string2, vcom_string2}, - {sizeof vcom_string3, vcom_string3} -}; - -/* - * Handles the GET_DESCRIPTOR callback. All required descriptors must be - * handled here. - */ -static const USBDescriptor *get_descriptor(USBDriver *usbp, - uint8_t dtype, - uint8_t dindex, - uint16_t lang) { - - (void)usbp; - (void)lang; - switch (dtype) { - case USB_DESCRIPTOR_DEVICE: - return &vcom_device_descriptor; - case USB_DESCRIPTOR_CONFIGURATION: - return &vcom_configuration_descriptor; - case USB_DESCRIPTOR_STRING: - if (dindex < 4) - return &vcom_strings[dindex]; - } - return NULL; -} - -/** - * @brief IN EP1 state. - */ -static USBInEndpointState ep1instate; - -/** - * @brief OUT EP1 state. - */ -static USBOutEndpointState ep1outstate; - -/** - * @brief EP1 initialization structure (both IN and OUT). - */ -static const USBEndpointConfig ep1config = { - USB_EP_MODE_TYPE_BULK, - NULL, - sduDataTransmitted, - sduDataReceived, - 0x0040, - 0x0040, - &ep1instate, - &ep1outstate, - 1, - NULL -}; - -/** - * @brief IN EP2 state. - */ -static USBInEndpointState ep2instate; - -/** - * @brief EP2 initialization structure (IN only). - */ -static const USBEndpointConfig ep2config = { - USB_EP_MODE_TYPE_INTR, - NULL, - sduInterruptTransmitted, - NULL, - 0x0010, - 0x0000, - &ep2instate, - NULL, - 1, - NULL -}; - -/* - * Handles the USB driver global events. - */ -static void usb_event(USBDriver *usbp, usbevent_t event) { - extern SerialUSBDriver SDU1; - - switch (event) { - case USB_EVENT_ADDRESS: - return; - case USB_EVENT_CONFIGURED: - chSysLockFromISR(); - - /* Enables the endpoints specified into the configuration. - Note, this callback is invoked from an ISR so I-Class functions - must be used.*/ - usbInitEndpointI(usbp, USBD1_DATA_REQUEST_EP, &ep1config); - usbInitEndpointI(usbp, USBD1_INTERRUPT_REQUEST_EP, &ep2config); - - /* Resetting the state of the CDC subsystem.*/ - sduConfigureHookI(&SDU1); - - chSysUnlockFromISR(); - return; - case USB_EVENT_RESET: - /* Falls into.*/ - case USB_EVENT_UNCONFIGURED: - /* Falls into.*/ - case USB_EVENT_SUSPEND: - chSysLockFromISR(); - - /* Disconnection event on suspend.*/ - sduSuspendHookI(&SDU1); - - chSysUnlockFromISR(); - return; - case USB_EVENT_WAKEUP: - chSysLockFromISR(); - - /* Connection event on wakeup.*/ - sduWakeupHookI(&SDU1); - - chSysUnlockFromISR(); - return; - case USB_EVENT_STALLED: - return; - } - return; -} - -/* - * Handles the USB driver global events. - */ -static void sof_handler(USBDriver *usbp) { - - (void)usbp; - - osalSysLockFromISR(); - sduSOFHookI(&SDU1); - osalSysUnlockFromISR(); -} - -/* - * USB driver configuration. - */ -const USBConfig usbcfg = { - usb_event, - get_descriptor, - sduRequestsHook, - sof_handler -}; - -/* - * Serial over USB driver configuration. - */ -const SerialUSBConfig serusbcfg = { - &USBD1, - USBD1_DATA_REQUEST_EP, - USBD1_DATA_AVAILABLE_EP, - USBD1_INTERRUPT_REQUEST_EP -}; diff --git a/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.h b/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.h deleted file mode 100644 index 886cd0222..000000000 --- a/testhal/STM32/STM32L0xx/USB_CDC/usbcfg.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -#ifndef USBCFG_H -#define USBCFG_H - -extern const USBConfig usbcfg; -extern SerialUSBConfig serusbcfg; -extern SerialUSBDriver SDU1; - -#endif /* USBCFG_H */ - -/** @} */ diff --git a/testhal/STM32/multi/USB_CDC/.cproject b/testhal/STM32/multi/USB_CDC/.cproject index 247dfd984..bfc169ca9 100644 --- a/testhal/STM32/multi/USB_CDC/.cproject +++ b/testhal/STM32/multi/USB_CDC/.cproject @@ -307,12 +307,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -363,6 +400,9 @@ + + + diff --git a/testhal/STM32/multi/USB_CDC/Makefile b/testhal/STM32/multi/USB_CDC/Makefile index 612375358..f2c633195 100644 --- a/testhal/STM32/multi/USB_CDC/Makefile +++ b/testhal/STM32/multi/USB_CDC/Makefile @@ -3,6 +3,10 @@ # all: + @echo + @echo === Building for STM32L073RZ-Nucleo64 ============================== + +@make --no-print-directory -f ./make/stm32l073rz_nucleo64.make all + @echo ==================================================================== @echo @echo === Building for STM32L476-Discovery =============================== +@make --no-print-directory -f ./make/stm32l476_discovery.make all @@ -28,16 +32,18 @@ all: +@make --no-print-directory -f ./make/stm32h743_nucleo144.make all @echo ==================================================================== @echo - @echo === Building for STM32WB55CG_Nucleo48_USB ========================== + @echo === Building for STM32WB55CG-Nucleo48_USB ========================== +@make --no-print-directory -f ./make/stm32wb55cg_nucleo48.make all @echo ==================================================================== @echo - @echo === Building for STM32WB55RG_Nucleo68 ============================= + @echo === Building for STM32WB55RG-Nucleo68 ============================== +@make --no-print-directory -f ./make/stm32wb55rg_nucleo68.make all @echo ==================================================================== @echo clean: + @echo + +@make --no-print-directory -f ./make/stm32l073rz_nucleo64.make clean @echo +@make --no-print-directory -f ./make/stm32l476_discovery.make clean @echo @@ -53,7 +59,6 @@ clean: @echo +@make --no-print-directory -f ./make/stm32wb55cg_nucleo48.make clean @echo - @echo +@make --no-print-directory -f ./make/stm32wb55rg_nucleo68.make clean @echo diff --git a/testhal/STM32/STM32L0xx/USB_CDC/chconf.h b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/chconf.h similarity index 96% rename from testhal/STM32/STM32L0xx/USB_CDC/chconf.h rename to testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/chconf.h index 495a34211..6dc6fe784 100644 --- a/testhal/STM32/STM32L0xx/USB_CDC/chconf.h +++ b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/chconf.h @@ -564,7 +564,7 @@ * @note The default is @p FALSE. */ #if !defined(CH_DBG_SYSTEM_STATE_CHECK) -#define CH_DBG_SYSTEM_STATE_CHECK TRUE +#define CH_DBG_SYSTEM_STATE_CHECK FALSE #endif /** @@ -575,7 +575,7 @@ * @note The default is @p FALSE. */ #if !defined(CH_DBG_ENABLE_CHECKS) -#define CH_DBG_ENABLE_CHECKS TRUE +#define CH_DBG_ENABLE_CHECKS FALSE #endif /** @@ -587,7 +587,7 @@ * @note The default is @p FALSE. */ #if !defined(CH_DBG_ENABLE_ASSERTS) -#define CH_DBG_ENABLE_ASSERTS TRUE +#define CH_DBG_ENABLE_ASSERTS FALSE #endif /** diff --git a/testhal/STM32/STM32L0xx/USB_CDC/halconf.h b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/halconf.h similarity index 96% rename from testhal/STM32/STM32L0xx/USB_CDC/halconf.h rename to testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/halconf.h index f0d7ab505..76edab515 100644 --- a/testhal/STM32/STM32L0xx/USB_CDC/halconf.h +++ b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/halconf.h @@ -142,7 +142,7 @@ * @brief Enables the SERIAL subsystem. */ #if !defined(HAL_USE_SERIAL) || defined(__DOXYGEN__) -#define HAL_USE_SERIAL TRUE +#define HAL_USE_SERIAL FALSE #endif /** diff --git a/testhal/STM32/STM32L0xx/USB_CDC/mcuconf.h b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/mcuconf.h similarity index 96% rename from testhal/STM32/STM32L0xx/USB_CDC/mcuconf.h rename to testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/mcuconf.h index 38c82f447..7b591d6cc 100644 --- a/testhal/STM32/STM32L0xx/USB_CDC/mcuconf.h +++ b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/mcuconf.h @@ -171,7 +171,7 @@ * SERIAL driver system settings. */ #define STM32_SERIAL_USE_USART1 FALSE -#define STM32_SERIAL_USE_USART2 TRUE +#define STM32_SERIAL_USE_USART2 FALSE #define STM32_SERIAL_USE_UART4 FALSE #define STM32_SERIAL_USE_UART5 FALSE #define STM32_SERIAL_USE_LPUART1 FALSE diff --git a/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.c b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.c new file mode 100644 index 000000000..745d6d2dd --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.c @@ -0,0 +1,62 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file portab.c + * @brief Application portability module code. + * + * @addtogroup application_portability + * @{ + */ + +#include "hal.h" + +#include "portab.h" + +/*===========================================================================*/ +/* Module local definitions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module exported variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module local functions. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module exported functions. */ +/*===========================================================================*/ + +void portab_setup(void) { + + /* + * Configuring USB DP and DM PINs. + */ + palSetPadMode(GPIOA, GPIOA_PIN11, PAL_MODE_INPUT); + palSetPadMode(GPIOA, GPIOA_PIN12, PAL_MODE_INPUT); +} + +/** @} */ diff --git a/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.h b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.h new file mode 100644 index 000000000..e6ee720a1 --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/cfg/stm32l073rz_nucleo64/portab.h @@ -0,0 +1,72 @@ +/* + ChibiOS - Copyright (C) 2006..2018 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file portab.h + * @brief Application portability macros and structures. + * + * @addtogroup application_portability + * @{ + */ + +#ifndef PORTAB_H +#define PORTAB_H + +/*===========================================================================*/ +/* Module constants. */ +/*===========================================================================*/ + +#define PORTAB_USB1 USBD1 + +#define PORTAB_SDU1 SDU1 + +#define PORTAB_BLINK_LED1 LINE_LED_GREEN + +/*===========================================================================*/ +/* Module pre-compile time settings. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Derived constants and error checks. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module data structures and types. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Module macros. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +#ifdef __cplusplus +extern "C" { +#endif + void portab_setup(void); +#ifdef __cplusplus +} +#endif + +/*===========================================================================*/ +/* Module inline functions. */ +/*===========================================================================*/ + +#endif /* PORTAB_H */ + +/** @} */ diff --git a/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Flash and Run).launch b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Flash and Run).launch new file mode 100644 index 000000000..3bc1e52af --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Flash and Run).launch @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Just Run).launch b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Just Run).launch new file mode 100644 index 000000000..e9efdc77e --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32f072_discovery-ch.elf)(OpenOCD, Just Run).launch @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Flash and Run).launch b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Flash and Run).launch new file mode 100644 index 000000000..576fa5e73 --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Flash and Run).launch @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Just Run).launch b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Just Run).launch new file mode 100644 index 000000000..b575c8e94 --- /dev/null +++ b/testhal/STM32/multi/USB_CDC/debug/STM32-USB_CDC (build-stm32l476_discovery-ch.elf)(OpenOCD, Just Run).launch @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testhal/STM32/STM32L0xx/USB_CDC/Makefile b/testhal/STM32/multi/USB_CDC/make/stm32l073rz_nucleo64.make similarity index 64% rename from testhal/STM32/STM32L0xx/USB_CDC/Makefile rename to testhal/STM32/multi/USB_CDC/make/stm32l073rz_nucleo64.make index 59b62b207..7f04b17f0 100644 --- a/testhal/STM32/STM32L0xx/USB_CDC/Makefile +++ b/testhal/STM32/multi/USB_CDC/make/stm32l073rz_nucleo64.make @@ -18,7 +18,7 @@ ifeq ($(USE_CPPOPT),) USE_CPPOPT = -fno-rtti endif -# Enable this if you want the linker to remove unused code and data +# Enable this if you want the linker to remove unused code and data. ifeq ($(USE_LINK_GC),) USE_LINK_GC = yes endif @@ -28,16 +28,11 @@ ifeq ($(USE_LDOPT),) USE_LDOPT = endif -# Enable this if you want link time optimizations (LTO) +# Enable this if you want link time optimizations (LTO). ifeq ($(USE_LTO),) USE_LTO = yes endif -# If enabled, this option allows to compile the application in THUMB mode. -ifeq ($(USE_THUMB),) - USE_THUMB = yes -endif - # Enable this if you want to see the full log while compiling. ifeq ($(USE_VERBOSE_COMPILE),) USE_VERBOSE_COMPILE = no @@ -74,19 +69,30 @@ ifeq ($(USE_FPU),) USE_FPU = no endif +# FPU-related options. +ifeq ($(USE_FPU_OPT),) + USE_FPU_OPT = -mfloat-abi=$(USE_FPU) -mfpu=fpv4-sp-d16 +endif + # # Architecture or project specific options ############################################################################## ############################################################################## -# Project, sources and paths +# Project, target, sources and paths # # Define project name here PROJECT = ch -# Imported source files and paths -CHIBIOS = ../../../.. +# Target settings. +MCU = cortex-m0 + +# Imported source files and paths. +CHIBIOS := ../../../.. +CONFDIR := ./cfg/stm32l073rz_nucleo64 +BUILDDIR := ./build/stm32l073rz_nucleo64 +DEPDIR := ./.dep/stm32l073rz_nucleo64 # Licensing files. include $(CHIBIOS)/os/license/license.mk @@ -100,6 +106,8 @@ include $(CHIBIOS)/os/hal/osal/rt-nil/osal.mk # RTOS files (optional). include $(CHIBIOS)/os/rt/rt.mk include $(CHIBIOS)/os/common/ports/ARMv6-M/compilers/GCC/mk/port.mk +# Auto-build files in ./source recursively. +include $(CHIBIOS)/tools/mk/autobuild.mk # Other files (optional). include $(CHIBIOS)/os/test/test.mk include $(CHIBIOS)/test/rt/rt_test.mk @@ -114,79 +122,30 @@ LDSCRIPT= $(STARTUPLD)/STM32L073xZ.ld # setting. CSRC = $(ALLCSRC) \ $(TESTSRC) \ - usbcfg.c main.c + $(CONFDIR)/portab.c \ + main.c # C++ sources that can be compiled in ARM or THUMB mode depending on the global # setting. CPPSRC = $(ALLCPPSRC) -# C sources to be compiled in ARM mode regardless of the global setting. -# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler -# option that results in lower performance and larger code size. -ACSRC = - -# C++ sources to be compiled in ARM mode regardless of the global setting. -# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler -# option that results in lower performance and larger code size. -ACPPSRC = - -# C sources to be compiled in THUMB mode regardless of the global setting. -# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler -# option that results in lower performance and larger code size. -TCSRC = - -# C sources to be compiled in THUMB mode regardless of the global setting. -# NOTE: Mixing ARM and THUMB mode enables the -mthumb-interwork compiler -# option that results in lower performance and larger code size. -TCPPSRC = - -# List ASM source files here +# List ASM source files here. ASMSRC = $(ALLASMSRC) + +# List ASM with preprocessor source files here. ASMXSRC = $(ALLXASMSRC) -INCDIR = $(ALLINC) $(TESTINC) +# Inclusion directories. +INCDIR = $(CONFDIR) $(ALLINC) $(TESTINC) -# -# Project, sources and paths -############################################################################## - -############################################################################## -# Compiler settings -# - -MCU = cortex-m0 - -#TRGT = arm-elf- -TRGT = arm-none-eabi- -CC = $(TRGT)gcc -CPPC = $(TRGT)g++ -# Enable loading with g++ only if you need C++ runtime support. -# NOTE: You can use C++ even without C++ support if you are careful. C++ -# runtime support makes code size explode. -LD = $(TRGT)gcc -#LD = $(TRGT)g++ -CP = $(TRGT)objcopy -AS = $(TRGT)gcc -x assembler-with-cpp -AR = $(TRGT)ar -OD = $(TRGT)objdump -SZ = $(TRGT)size -HEX = $(CP) -O ihex -BIN = $(CP) -O binary - -# ARM-specific options here -AOPT = - -# THUMB-specific options here -TOPT = -mthumb -DTHUMB - -# Define C warning options here +# Define C warning options here. CWARN = -Wall -Wextra -Wundef -Wstrict-prototypes -# Define C++ warning options here +# Define C++ warning options here. CPPWARN = -Wall -Wextra -Wundef # -# Compiler settings +# Project, target, sources and paths ############################################################################## ############################################################################## @@ -209,8 +168,25 @@ ULIBDIR = ULIBS = # -# End of user defines +# End of user section ############################################################################## +############################################################################## +# Common rules +# + RULESPATH = $(CHIBIOS)/os/common/startup/ARMCMx/compilers/GCC/mk +include $(RULESPATH)/arm-none-eabi.mk include $(RULESPATH)/rules.mk + +# +# Common rules +############################################################################## + +############################################################################## +# Custom rules +# + +# +# Custom rules +##############################################################################