summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-03-22 12:46:23 +0000
committerDamien George <damien.p.george@gmail.com>2014-03-22 12:46:23 +0000
commita6787edcea4ff1aa6113eff85c3b866ae0c6cb8c (patch)
tree763bb0d6ef3a4642aa585564d9d85e09bf9a4cb2
parentc2a4cb4f04c82d7e283fd7af9609230ae46eb5a2 (diff)
downloadmicropython-a6787edcea4ff1aa6113eff85c3b866ae0c6cb8c.tar.gz
micropython-a6787edcea4ff1aa6113eff85c3b866ae0c6cb8c.zip
stmhal: Tidy up USB device configuration. Make it use less RAM.
-rw-r--r--stmhal/stm32f4xx_hal_msp.c2
-rw-r--r--stmhal/usbd_cdc_interface.c13
-rw-r--r--stmhal/usbd_conf.h10
-rw-r--r--stmhal/usbdev/class/cdc_msc/inc/usbd_cdc_msc.h10
-rw-r--r--stmhal/usbdev/class/cdc_msc/src/usbd_cdc_msc.c14
-rw-r--r--stmhal/usbdev/core/inc/usbd_conf_template.h163
-rw-r--r--stmhal/usbdev/core/src/usbd_conf_template.c258
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>&copy; 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>&copy; 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****/
-