diff options
author | Damien George <damien.p.george@gmail.com> | 2014-03-22 12:46:23 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-03-22 12:46:23 +0000 |
commit | a6787edcea4ff1aa6113eff85c3b866ae0c6cb8c (patch) | |
tree | 763bb0d6ef3a4642aa585564d9d85e09bf9a4cb2 | |
parent | c2a4cb4f04c82d7e283fd7af9609230ae46eb5a2 (diff) | |
download | micropython-a6787edcea4ff1aa6113eff85c3b866ae0c6cb8c.tar.gz micropython-a6787edcea4ff1aa6113eff85c3b866ae0c6cb8c.zip |
stmhal: Tidy up USB device configuration. Make it use less RAM.
-rw-r--r-- | stmhal/stm32f4xx_hal_msp.c | 2 | ||||
-rw-r--r-- | stmhal/usbd_cdc_interface.c | 13 | ||||
-rw-r--r-- | stmhal/usbd_conf.h | 10 | ||||
-rw-r--r-- | stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h | 10 | ||||
-rw-r--r-- | stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c | 14 | ||||
-rw-r--r-- | stmhal/usbdev/core/inc/usbd_conf_template.h | 163 | ||||
-rw-r--r-- | stmhal/usbdev/core/src/usbd_conf_template.c | 258 |
7 files changed, 25 insertions, 445 deletions
diff --git a/stmhal/stm32f4xx_hal_msp.c b/stmhal/stm32f4xx_hal_msp.c index f5611e1082..816b1427e9 100644 --- a/stmhal/stm32f4xx_hal_msp.c +++ b/stmhal/stm32f4xx_hal_msp.c @@ -47,7 +47,7 @@ /* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
-#include "usbd_cdc.h"
+#include "usbd_cdc_msc.h"
#include "usbd_cdc_interface.h"
/** @addtogroup STM32F4xx_HAL_Driver
diff --git a/stmhal/usbd_cdc_interface.c b/stmhal/usbd_cdc_interface.c index e0f387eb7e..6316439356 100644 --- a/stmhal/usbd_cdc_interface.c +++ b/stmhal/usbd_cdc_interface.c @@ -28,11 +28,22 @@ /* Includes ------------------------------------------------------------------*/ #include <stdbool.h> #include "stm32f4xx_hal.h" -#include "usbd_cdc.h" +#include "usbd_cdc_msc.h" #include "usbd_cdc_interface.h" #include "pendsv.h" #include "usb.h" +// CDC control commands +#define CDC_SEND_ENCAPSULATED_COMMAND 0x00 +#define CDC_GET_ENCAPSULATED_RESPONSE 0x01 +#define CDC_SET_COMM_FEATURE 0x02 +#define CDC_GET_COMM_FEATURE 0x03 +#define CDC_CLEAR_COMM_FEATURE 0x04 +#define CDC_SET_LINE_CODING 0x20 +#define CDC_GET_LINE_CODING 0x21 +#define CDC_SET_CONTROL_LINE_STATE 0x22 +#define CDC_SEND_BREAK 0x23 + /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ #define APP_RX_DATA_SIZE 1024 // I think this must be at least CDC_DATA_FS_OUT_PACKET_SIZE (was 2048) diff --git a/stmhal/usbd_conf.h b/stmhal/usbd_conf.h index cc3ad73f98..d37cd4a8ba 100644 --- a/stmhal/usbd_conf.h +++ b/stmhal/usbd_conf.h @@ -36,7 +36,6 @@ #include <string.h>
#include "mpconfig.h"
-#include "gc.h" // for gc_alloc and gc_free
/* Exported types ------------------------------------------------------------*/
/* Exported constants --------------------------------------------------------*/
@@ -47,17 +46,18 @@ #define USBD_SUPPORT_USER_STRING 0
#define USBD_SELF_POWERED 0
#define USBD_DEBUG_LEVEL 0
-
-// for MSC device
-#define MSC_MEDIA_PACKET 8192
/* Exported macro ------------------------------------------------------------*/
/* Memory management macros */
+/*
+these should not be used because the GC is reset on a soft reset but the usb is not
+#include "gc.h"
#define USBD_malloc gc_alloc
#define USBD_free gc_free
#define USBD_memset memset
#define USBD_memcpy memcpy
-
+*/
+
/* DEBUG macros */
#if (USBD_DEBUG_LEVEL > 0)
#define USBD_UsrLog(...) printf(__VA_ARGS__);\
diff --git a/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h b/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h index 6b738adde4..5299f31e96 100644 --- a/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h +++ b/stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h @@ -5,11 +5,9 @@ #include "usbd_msc_scsi.h" #include "usbd_ioreq.h" -// CDC endpoint parameters -#define CDC_DATA_FS_MAX_PACKET_SIZE 64 // Endpoint IN & OUT Packet size -#define CDC_CMD_PACKET_SIZE 8 // Control Endpoint Packet size -#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE -#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE +// CDC and MSC packet sizes +#define CDC_DATA_FS_MAX_PACKET_SIZE (64) // endpoint IN & OUT packet size +#define MSC_MEDIA_PACKET (2048) // was 8192; how low can it go whilst still working? #if 0 // CDC @@ -34,7 +32,7 @@ #define MSC_IFACE_NUM (0) #define MSC_IN_EP (0x81) #define MSC_OUT_EP (0x01) -#elif 0 +#elif 1 // CDC + MSC #define USB_CDC_MSC_CONFIG_DESC_SIZ (98) #define NUM_INTERFACES (3) diff --git a/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c b/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c index 8ebf33a109..df080ee4f0 100644 --- a/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c +++ b/stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c @@ -3,17 +3,9 @@ #define USB_DESC_TYPE_ASSOCIATION (0x0b) -/* currently unused -#define CDC_SEND_ENCAPSULATED_COMMAND 0x00 -#define CDC_GET_ENCAPSULATED_RESPONSE 0x01 -#define CDC_SET_COMM_FEATURE 0x02 -#define CDC_GET_COMM_FEATURE 0x03 -#define CDC_CLEAR_COMM_FEATURE 0x04 -#define CDC_SET_LINE_CODING 0x20 -#define CDC_GET_LINE_CODING 0x21 -#define CDC_SET_CONTROL_LINE_STATE 0x22 -#define CDC_SEND_BREAK 0x23 -*/ +#define CDC_CMD_PACKET_SIZE 8 // Control Endpoint Packet size +#define CDC_DATA_FS_IN_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE +#define CDC_DATA_FS_OUT_PACKET_SIZE CDC_DATA_FS_MAX_PACKET_SIZE #define BOT_GET_MAX_LUN 0xFE #define BOT_RESET 0xFF diff --git a/stmhal/usbdev/core/inc/usbd_conf_template.h b/stmhal/usbdev/core/inc/usbd_conf_template.h deleted file mode 100644 index d80c1da61b..0000000000 --- a/stmhal/usbdev/core/inc/usbd_conf_template.h +++ /dev/null @@ -1,163 +0,0 @@ -/**
- ******************************************************************************
- * @file usbd_conf_template.h
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief General low level driver configuration
- ******************************************************************************
- * @attention
- *
- * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2>
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
- *
- * 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.
- *
- ******************************************************************************
- */
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#ifndef __USBD_CONF__H__
-#define __USBD_CONF__H__
-
-#include "stm32f4xx.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Includes ------------------------------------------------------------------*/
-
-/** @addtogroup USBD_OTG_DRIVER
- * @{
- */
-
-/** @defgroup USBD_CONF
- * @brief usb otg low level driver configuration file
- * @{
- */
-
-/** @defgroup USBD_CONF_Exported_Defines
- * @{
- */
-
-#define USBD_MAX_NUM_INTERFACES 1
-#define USBD_MAX_NUM_CONFIGURATION 1
-#define USBD_MAX_STR_DESC_SIZ 0x100
-#define USBD_SUPPORT_USER_STRING 0
-#define USBD_SELF_POWERED 1
-#define USBD_DEBUG_LEVEL 2
-
-/* MSC Class Config */
-#define MSC_MEDIA_PACKET 8192
-
-/* CDC Class Config */
-#define USBD_CDC_INTERVAL 2000
-
- /* DFU Class Config */
-#define USBD_DFU_MAX_ITF_NUM 1
-#define USBD_DFU_XFERS_IZE 1024
-
- /* AUDIO Class Config */
-#define USBD_AUDIO_FREQ 22100
-
-/** @defgroup USBD_Exported_Macros
- * @{
- */
-
- /* Memory management macros */
-#define USBD_malloc malloc
-#define USBD_free free
-#define USBD_memset memset
-#define USBD_memcpy memcpy
-
- /* DEBUG macros */
-
-
-#if (USBD_DEBUG_LEVEL > 0)
-#define USBD_UsrLog(...) printf(__VA_ARGS__);\
- printf("\n");
-#else
-#define USBD_UsrLog(...)
-#endif
-
-
-#if (USBD_DEBUG_LEVEL > 1)
-
-#define USBD_ErrLog(...) printf("ERROR: ") ;\
- printf(__VA_ARGS__);\
- printf("\n");
-#else
-#define USBD_ErrLog(...)
-#endif
-
-
-#if (USBD_DEBUG_LEVEL > 2)
-#define USBD_DbgLog(...) printf("DEBUG : ") ;\
- printf(__VA_ARGS__);\
- printf("\n");
-#else
-#define USBD_DbgLog(...)
-#endif
-
-/**
- * @}
- */
-
-
-
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CONF_Exported_Types
- * @{
- */
-/**
- * @}
- */
-
-
-/** @defgroup USBD_CONF_Exported_Macros
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup USBD_CONF_Exported_Variables
- * @{
- */
-/**
- * @}
- */
-
-/** @defgroup USBD_CONF_Exported_FunctionsPrototype
- * @{
- */
-/**
- * @}
- */
-
-
-#endif //__USBD_CONF__H__
-
-
-/**
- * @}
- */
-
-/**
- * @}
- */
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
diff --git a/stmhal/usbdev/core/src/usbd_conf_template.c b/stmhal/usbdev/core/src/usbd_conf_template.c deleted file mode 100644 index 8f4608d1f0..0000000000 --- a/stmhal/usbdev/core/src/usbd_conf_template.c +++ /dev/null @@ -1,258 +0,0 @@ -/**
- ******************************************************************************
- * @file usbd_storage_template.c
- * @author MCD Application Team
- * @version V2.0.0
- * @date 18-February-2014
- * @brief Memory management layer
- ******************************************************************************
- * @attention
- *
- * <h2><center>© COPYRIGHT 2014 STMicroelectronics</center></h2>
- *
- * Licensed under MCD-ST Liberty SW License Agreement V2, (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.st.com/software_license_agreement_liberty_v2
- *
- * 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.
- *
- ******************************************************************************
- */
-
-/* Includes ------------------------------------------------------------------*/
-#include "usbd_storage.h"
-
-
-/** @addtogroup STM32_USBD_DEVICE_LIBRARY
-* @{
-*/
-
-
-/** @defgroup USBD_STORAGE
-* @brief usbd core module
-* @{
-*/
-
-/** @defgroup USBD_STORAGE_Private_TypesDefinitions
-* @{
-*/
-/**
-* @}
-*/
-
-
-/** @defgroup USBD_STORAGE_Private_Defines
-* @{
-*/
-#define STORAGE_LUN_NBR 1
-#define STORAGE_BLK_NBR 0x10000
-#define STORAGE_BLK_SIZ 0x200
-/**
-* @}
-*/
-
-
-/** @defgroup USBD_STORAGE_Private_Macros
-* @{
-*/
-/**
-* @}
-*/
-
-
-
-
-/** @defgroup USBD_STORAGE_Private_FunctionPrototypes
-* @{
-*/
-
-/**
-* @}
-*/
-
-
-/** @defgroup USBD_STORAGE_Private_Functions
-* @{
-*/
-
-int8_t STORAGE_Init (uint8_t lun);
-
-int8_t STORAGE_GetCapacity (uint8_t lun,
- uint32_t *block_num,
- uint16_t *block_size);
-
-int8_t STORAGE_IsReady (uint8_t lun);
-
-int8_t STORAGE_IsWriteProtected (uint8_t lun);
-
-int8_t STORAGE_Read (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len);
-
-int8_t STORAGE_Write (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len);
-
-int8_t STORAGE_GetMaxLun (void);
-
-/** @defgroup USBD_STORAGE_Private_Variables
-* @{
-*/
-
-/* USB Mass storage Standard Inquiry Data */
-int8_t STORAGE_Inquirydata[] = {//36
-
- /* LUN 0 */
- 0x00,
- 0x80,
- 0x02,
- 0x02,
- (STANDARD_INQUIRY_DATA_LEN - 5),
- 0x00,
- 0x00,
- 0x00,
- 'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', /* Manufacturer : 8 bytes */
- 'P', 'r', 'o', 'd', 'u', 'c', 't', ' ', /* Product : 16 Bytes */
- ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ',
- '0', '.', '0' ,'1', /* Version : 4 Bytes */
-};
-
-USBD_StorageTypeDef USBD_MSD_fops =
-{
- STORAGE_Init,
- STORAGE_GetCapacity,
- STORAGE_IsReady,
- STORAGE_IsWriteProtected,
- STORAGE_Read,
- STORAGE_Write,
- STORAGE_GetMaxLun,
- STORAGE_Inquirydata,
-
-};
-/**
- * @}
- */
-
-/** @defgroup USBD_CORE_Private_Functions
- * @{
- */
-
-/**
- * @brief STORAGE_Init
- * Initailizes the storage unit (medium)
- * @param lun: logical unit number
- * @retval status (0 : Ok / -1 : Error)
- */
-
-int8_t STORAGE_Init (uint8_t lun)
-{
- return (0);
-}
-
-/**
- * @brief STORAGE_GetCapacity
- * return medium capacity
- * @param lun: logical unit number
- * @param block_num: number of total block number
- * @param block_size: block size
- * @retval status (0 : Ok / -1 : Error)
- */
-int8_t STORAGE_GetCapacity (uint8_t lun, uint32_t *block_num, uint16_t *block_size)
-{
-
- *block_num = STORAGE_BLK_NBR - 1;
- *block_size = STORAGE_BLK_SIZ;
-
- return (0);
-}
-
-/**
- * @brief STORAGE_IsReady
- * check whether the medium is ready
- * @param lun: logical unit number
- * @retval status (0 : Ok / -1 : Error)
- */
-int8_t STORAGE_IsReady (uint8_t lun)
-{
-
- return (0);
-}
-
-/**
- * @brief STORAGE_IsWriteProtected
- * check whether the medium is write protected
- * @param lun: logical unit number
- * @retval status (0 : write enabled / -1 : otherwise)
- */
-int8_t STORAGE_IsWriteProtected (uint8_t lun)
-{
- return 0;
-}
-
-/**
- * @brief STORAGE_Read
- * Read data from the medium
- * @param lun: logical unit number
- * @param blk_addr: logical block address
- * @param blk_len: blocks number
- * @retval status (0 : Ok / -1 : Error)
- */
-int8_t STORAGE_Read (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len)
-{
- return (0);
-}
-
-/**
- * @brief STORAGE_Write
- * Write data into the medium
- * @param lun: logical unit number
- * @param blk_addr: logical block address
- * @param blk_len: blocks number
- * @retval status (0 : Ok / -1 : Error)
- */
-int8_t STORAGE_Write (uint8_t lun,
- uint8_t *buf,
- uint32_t blk_addr,
- uint16_t blk_len)
-{
- return (0);
-}
-
-
-/**
- * @brief STORAGE_GetMaxLun
- * return the Max Supported LUNs
- * @param none
- * @retval lun(s) number
- */
-int8_t STORAGE_GetMaxLun (void)
-{
- return (STORAGE_LUN_NBR - 1);
-}
-/**
-* @}
-*/
-
-
-/**
-* @}
-*/
-
-
-/**
-* @}
-*/
-
-/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
-
|