From f7de54fc6fa6b40dfa2dfbe4c2a8ee933affa126 Mon Sep 17 00:00:00 2001 From: JanHenrik Date: Wed, 1 Apr 2020 00:40:03 +0200 Subject: added files --- cdc-dials/build/usbd_desc.lst | 868 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 868 insertions(+) create mode 100644 cdc-dials/build/usbd_desc.lst (limited to 'cdc-dials/build/usbd_desc.lst') diff --git a/cdc-dials/build/usbd_desc.lst b/cdc-dials/build/usbd_desc.lst new file mode 100644 index 0000000..8b8add8 --- /dev/null +++ b/cdc-dials/build/usbd_desc.lst @@ -0,0 +1,868 @@ +ARM GAS /tmp/cck6myrA.s page 1 + + + 1 .cpu cortex-m0 + 2 .eabi_attribute 20, 1 + 3 .eabi_attribute 21, 1 + 4 .eabi_attribute 23, 3 + 5 .eabi_attribute 24, 1 + 6 .eabi_attribute 25, 1 + 7 .eabi_attribute 26, 1 + 8 .eabi_attribute 30, 1 + 9 .eabi_attribute 34, 0 + 10 .eabi_attribute 18, 4 + 11 .file "usbd_desc.c" + 12 .text + 13 .Ltext0: + 14 .cfi_sections .debug_frame + 15 .section .text.USBD_VCP_DeviceDescriptor,"ax",%progbits + 16 .align 1 + 17 .global USBD_VCP_DeviceDescriptor + 18 .syntax unified + 19 .code 16 + 20 .thumb_func + 21 .fpu softvfp + 23 USBD_VCP_DeviceDescriptor: + 24 .LFB43: + 25 .file 1 "Src/usbd_desc.c" + 1:Src/usbd_desc.c **** /** + 2:Src/usbd_desc.c **** ****************************************************************************** + 3:Src/usbd_desc.c **** * @file USB_Device/CDC_Standalone/Src/usbd_desc.c + 4:Src/usbd_desc.c **** * @author MCD Application Team + 5:Src/usbd_desc.c **** * @brief This file provides the USBD descriptors and string formating method. + 6:Src/usbd_desc.c **** ****************************************************************************** + 7:Src/usbd_desc.c **** * @attention + 8:Src/usbd_desc.c **** * + 9:Src/usbd_desc.c **** *

© Copyright (c) 2016 STMicroelectronics International N.V. + 10:Src/usbd_desc.c **** * All rights reserved.

+ 11:Src/usbd_desc.c **** * + 12:Src/usbd_desc.c **** * Redistribution and use in source and binary forms, with or without + 13:Src/usbd_desc.c **** * modification, are permitted, provided that the following conditions are met: + 14:Src/usbd_desc.c **** * + 15:Src/usbd_desc.c **** * 1. Redistribution of source code must retain the above copyright notice, + 16:Src/usbd_desc.c **** * this list of conditions and the following disclaimer. + 17:Src/usbd_desc.c **** * 2. Redistributions in binary form must reproduce the above copyright notice, + 18:Src/usbd_desc.c **** * this list of conditions and the following disclaimer in the documentation + 19:Src/usbd_desc.c **** * and/or other materials provided with the distribution. + 20:Src/usbd_desc.c **** * 3. Neither the name of STMicroelectronics nor the names of other + 21:Src/usbd_desc.c **** * contributors to this software may be used to endorse or promote products + 22:Src/usbd_desc.c **** * derived from this software without specific written permission. + 23:Src/usbd_desc.c **** * 4. This software, including modifications and/or derivative works of this + 24:Src/usbd_desc.c **** * software, must execute solely and exclusively on microcontroller or + 25:Src/usbd_desc.c **** * microprocessor devices manufactured by or for STMicroelectronics. + 26:Src/usbd_desc.c **** * 5. Redistribution and use of this software other than as permitted under + 27:Src/usbd_desc.c **** * this license is void and will automatically terminate your rights under + 28:Src/usbd_desc.c **** * this license. + 29:Src/usbd_desc.c **** * + 30:Src/usbd_desc.c **** * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS" + 31:Src/usbd_desc.c **** * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT + 32:Src/usbd_desc.c **** * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + 33:Src/usbd_desc.c **** * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY + ARM GAS /tmp/cck6myrA.s page 2 + + + 34:Src/usbd_desc.c **** * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT + 35:Src/usbd_desc.c **** * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + 36:Src/usbd_desc.c **** * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + 37:Src/usbd_desc.c **** * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, + 38:Src/usbd_desc.c **** * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + 39:Src/usbd_desc.c **** * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + 40:Src/usbd_desc.c **** * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, + 41:Src/usbd_desc.c **** * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + 42:Src/usbd_desc.c **** * + 43:Src/usbd_desc.c **** ****************************************************************************** + 44:Src/usbd_desc.c **** */ + 45:Src/usbd_desc.c **** + 46:Src/usbd_desc.c **** /* Includes ------------------------------------------------------------------*/ + 47:Src/usbd_desc.c **** #include "usbd_core.h" + 48:Src/usbd_desc.c **** #include "usbd_desc.h" + 49:Src/usbd_desc.c **** #include "usbd_conf.h" + 50:Src/usbd_desc.c **** + 51:Src/usbd_desc.c **** /* Private typedef -----------------------------------------------------------*/ + 52:Src/usbd_desc.c **** /* Private define ------------------------------------------------------------*/ + 53:Src/usbd_desc.c **** #define USBD_VID 0x0483 + 54:Src/usbd_desc.c **** #define USBD_PID 0x5740 + 55:Src/usbd_desc.c **** #define USBD_LANGID_STRING 0x409 + 56:Src/usbd_desc.c **** #define USBD_MANUFACTURER_STRING "Otter-Iron" + 57:Src/usbd_desc.c **** #define USBD_PRODUCT_FS_STRING "chirp :3" + 58:Src/usbd_desc.c **** #define USBD_CONFIGURATION_FS_STRING "mau" + 59:Src/usbd_desc.c **** #define USBD_INTERFACE_FS_STRING ":o" + 60:Src/usbd_desc.c **** + 61:Src/usbd_desc.c **** /* Private macro -------------------------------------------------------------*/ + 62:Src/usbd_desc.c **** /* Private function prototypes -----------------------------------------------*/ + 63:Src/usbd_desc.c **** uint8_t *USBD_VCP_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 64:Src/usbd_desc.c **** uint8_t *USBD_VCP_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 65:Src/usbd_desc.c **** uint8_t *USBD_VCP_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 66:Src/usbd_desc.c **** uint8_t *USBD_VCP_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 67:Src/usbd_desc.c **** uint8_t *USBD_VCP_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 68:Src/usbd_desc.c **** uint8_t *USBD_VCP_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 69:Src/usbd_desc.c **** uint8_t *USBD_VCP_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length); + 70:Src/usbd_desc.c **** #ifdef USB_SUPPORT_USER_STRING_DESC + 71:Src/usbd_desc.c **** uint8_t *USBD_VCP_USRStringDesc (USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length); + 72:Src/usbd_desc.c **** #endif /* USB_SUPPORT_USER_STRING_DESC */ + 73:Src/usbd_desc.c **** + 74:Src/usbd_desc.c **** /* Private variables ---------------------------------------------------------*/ + 75:Src/usbd_desc.c **** USBD_DescriptorsTypeDef VCP_Desc = { + 76:Src/usbd_desc.c **** USBD_VCP_DeviceDescriptor, + 77:Src/usbd_desc.c **** USBD_VCP_LangIDStrDescriptor, + 78:Src/usbd_desc.c **** USBD_VCP_ManufacturerStrDescriptor, + 79:Src/usbd_desc.c **** USBD_VCP_ProductStrDescriptor, + 80:Src/usbd_desc.c **** USBD_VCP_SerialStrDescriptor, + 81:Src/usbd_desc.c **** USBD_VCP_ConfigStrDescriptor, + 82:Src/usbd_desc.c **** USBD_VCP_InterfaceStrDescriptor, + 83:Src/usbd_desc.c **** }; + 84:Src/usbd_desc.c **** + 85:Src/usbd_desc.c **** /* USB Standard Device Descriptor */ + 86:Src/usbd_desc.c **** const uint8_t hUSBDDeviceDesc[USB_LEN_DEV_DESC]= { + 87:Src/usbd_desc.c **** 0x12, /* bLength */ + 88:Src/usbd_desc.c **** USB_DESC_TYPE_DEVICE, /* bDescriptorType */ + 89:Src/usbd_desc.c **** 0x00, /* bcdUSB */ + 90:Src/usbd_desc.c **** 0x02, + ARM GAS /tmp/cck6myrA.s page 3 + + + 91:Src/usbd_desc.c **** 0x00, /* bDeviceClass */ + 92:Src/usbd_desc.c **** 0x00, /* bDeviceSubClass */ + 93:Src/usbd_desc.c **** 0x00, /* bDeviceProtocol */ + 94:Src/usbd_desc.c **** USB_MAX_EP0_SIZE, /* bMaxPacketSize */ + 95:Src/usbd_desc.c **** LOBYTE(USBD_VID), /* idVendor */ + 96:Src/usbd_desc.c **** HIBYTE(USBD_VID), /* idVendor */ + 97:Src/usbd_desc.c **** LOBYTE(USBD_PID), /* idVendor */ + 98:Src/usbd_desc.c **** HIBYTE(USBD_PID), /* idVendor */ + 99:Src/usbd_desc.c **** 0x00, /* bcdDevice rel. 2.00 */ + 100:Src/usbd_desc.c **** 0x02, + 101:Src/usbd_desc.c **** USBD_IDX_MFC_STR, /* Index of manufacturer string */ + 102:Src/usbd_desc.c **** USBD_IDX_PRODUCT_STR, /* Index of product string */ + 103:Src/usbd_desc.c **** USBD_IDX_SERIAL_STR, /* Index of serial number string */ + 104:Src/usbd_desc.c **** USBD_MAX_NUM_CONFIGURATION /* bNumConfigurations */ + 105:Src/usbd_desc.c **** }; /* USB_DeviceDescriptor */ + 106:Src/usbd_desc.c **** + 107:Src/usbd_desc.c **** /* USB Standard Device Descriptor */ + 108:Src/usbd_desc.c **** const uint8_t USBD_LangIDDesc[USB_LEN_LANGID_STR_DESC]= + 109:Src/usbd_desc.c **** { + 110:Src/usbd_desc.c **** USB_LEN_LANGID_STR_DESC, + 111:Src/usbd_desc.c **** USB_DESC_TYPE_STRING, + 112:Src/usbd_desc.c **** LOBYTE(USBD_LANGID_STRING), + 113:Src/usbd_desc.c **** HIBYTE(USBD_LANGID_STRING), + 114:Src/usbd_desc.c **** }; + 115:Src/usbd_desc.c **** + 116:Src/usbd_desc.c **** uint8_t USBD_StringSerial[USB_SIZ_STRING_SERIAL] = + 117:Src/usbd_desc.c **** { + 118:Src/usbd_desc.c **** USB_SIZ_STRING_SERIAL, + 119:Src/usbd_desc.c **** USB_DESC_TYPE_STRING, + 120:Src/usbd_desc.c **** }; + 121:Src/usbd_desc.c **** + 122:Src/usbd_desc.c **** uint8_t USBD_StrDesc[USBD_MAX_STR_DESC_SIZ]; + 123:Src/usbd_desc.c **** + 124:Src/usbd_desc.c **** /* Private functions ---------------------------------------------------------*/ + 125:Src/usbd_desc.c **** static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len); + 126:Src/usbd_desc.c **** static void Get_SerialNum(void); + 127:Src/usbd_desc.c **** /** + 128:Src/usbd_desc.c **** * @brief Returns the device descriptor. + 129:Src/usbd_desc.c **** * @param speed: Current device speed + 130:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 131:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 132:Src/usbd_desc.c **** */ + 133:Src/usbd_desc.c **** uint8_t *USBD_VCP_DeviceDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 134:Src/usbd_desc.c **** { + 26 .loc 1 134 0 + 27 .cfi_startproc + 28 @ args = 0, pretend = 0, frame = 0 + 29 @ frame_needed = 0, uses_anonymous_args = 0 + 30 @ link register save eliminated. + 31 .LVL0: + 135:Src/usbd_desc.c **** *length = sizeof(hUSBDDeviceDesc); + 32 .loc 1 135 0 + 33 0000 1223 movs r3, #18 + 34 0002 0B80 strh r3, [r1] + 136:Src/usbd_desc.c **** return (uint8_t*)hUSBDDeviceDesc; + 137:Src/usbd_desc.c **** } + 35 .loc 1 137 0 + ARM GAS /tmp/cck6myrA.s page 4 + + + 36 0004 0048 ldr r0, .L2 + 37 .LVL1: + 38 @ sp needed + 39 0006 7047 bx lr + 40 .L3: + 41 .align 2 + 42 .L2: + 43 0008 00000000 .word .LANCHOR0 + 44 .cfi_endproc + 45 .LFE43: + 47 .section .text.USBD_VCP_LangIDStrDescriptor,"ax",%progbits + 48 .align 1 + 49 .global USBD_VCP_LangIDStrDescriptor + 50 .syntax unified + 51 .code 16 + 52 .thumb_func + 53 .fpu softvfp + 55 USBD_VCP_LangIDStrDescriptor: + 56 .LFB44: + 138:Src/usbd_desc.c **** + 139:Src/usbd_desc.c **** /** + 140:Src/usbd_desc.c **** * @brief Returns the LangID string descriptor. + 141:Src/usbd_desc.c **** * @param speed: Current device speed + 142:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 143:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 144:Src/usbd_desc.c **** */ + 145:Src/usbd_desc.c **** uint8_t *USBD_VCP_LangIDStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 146:Src/usbd_desc.c **** { + 57 .loc 1 146 0 + 58 .cfi_startproc + 59 @ args = 0, pretend = 0, frame = 0 + 60 @ frame_needed = 0, uses_anonymous_args = 0 + 61 @ link register save eliminated. + 62 .LVL2: + 147:Src/usbd_desc.c **** *length = sizeof(USBD_LangIDDesc); + 63 .loc 1 147 0 + 64 0000 0423 movs r3, #4 + 65 0002 0B80 strh r3, [r1] + 148:Src/usbd_desc.c **** return (uint8_t*)USBD_LangIDDesc; + 149:Src/usbd_desc.c **** } + 66 .loc 1 149 0 + 67 0004 0048 ldr r0, .L5 + 68 .LVL3: + 69 @ sp needed + 70 0006 7047 bx lr + 71 .L6: + 72 .align 2 + 73 .L5: + 74 0008 00000000 .word .LANCHOR1 + 75 .cfi_endproc + 76 .LFE44: + 78 .section .text.IntToUnicode,"ax",%progbits + 79 .align 1 + 80 .syntax unified + 81 .code 16 + 82 .thumb_func + 83 .fpu softvfp + ARM GAS /tmp/cck6myrA.s page 5 + + + 85 IntToUnicode: + 86 .LFB51: + 150:Src/usbd_desc.c **** + 151:Src/usbd_desc.c **** /** + 152:Src/usbd_desc.c **** * @brief Returns the product string descriptor. + 153:Src/usbd_desc.c **** * @param speed: Current device speed + 154:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 155:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 156:Src/usbd_desc.c **** */ + 157:Src/usbd_desc.c **** uint8_t *USBD_VCP_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 158:Src/usbd_desc.c **** { + 159:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length); + 160:Src/usbd_desc.c **** return USBD_StrDesc; + 161:Src/usbd_desc.c **** } + 162:Src/usbd_desc.c **** + 163:Src/usbd_desc.c **** /** + 164:Src/usbd_desc.c **** * @brief Returns the manufacturer string descriptor. + 165:Src/usbd_desc.c **** * @param speed: Current device speed + 166:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 167:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 168:Src/usbd_desc.c **** */ + 169:Src/usbd_desc.c **** uint8_t *USBD_VCP_ManufacturerStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 170:Src/usbd_desc.c **** { + 171:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + 172:Src/usbd_desc.c **** return USBD_StrDesc; + 173:Src/usbd_desc.c **** } + 174:Src/usbd_desc.c **** + 175:Src/usbd_desc.c **** /** + 176:Src/usbd_desc.c **** * @brief Returns the serial number string descriptor. + 177:Src/usbd_desc.c **** * @param speed: Current device speed + 178:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 179:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 180:Src/usbd_desc.c **** */ + 181:Src/usbd_desc.c **** uint8_t *USBD_VCP_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 182:Src/usbd_desc.c **** { + 183:Src/usbd_desc.c **** *length = USB_SIZ_STRING_SERIAL; + 184:Src/usbd_desc.c **** + 185:Src/usbd_desc.c **** /* Update the serial number string descriptor with the data from the unique ID*/ + 186:Src/usbd_desc.c **** Get_SerialNum(); + 187:Src/usbd_desc.c **** + 188:Src/usbd_desc.c **** return USBD_StringSerial; + 189:Src/usbd_desc.c **** } + 190:Src/usbd_desc.c **** + 191:Src/usbd_desc.c **** /** + 192:Src/usbd_desc.c **** * @brief Returns the configuration string descriptor. + 193:Src/usbd_desc.c **** * @param speed: Current device speed + 194:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 195:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 196:Src/usbd_desc.c **** */ + 197:Src/usbd_desc.c **** uint8_t *USBD_VCP_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 198:Src/usbd_desc.c **** { + 199:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); + 200:Src/usbd_desc.c **** return USBD_StrDesc; + 201:Src/usbd_desc.c **** } + 202:Src/usbd_desc.c **** + 203:Src/usbd_desc.c **** /** + 204:Src/usbd_desc.c **** * @brief Returns the interface string descriptor. + ARM GAS /tmp/cck6myrA.s page 6 + + + 205:Src/usbd_desc.c **** * @param speed: Current device speed + 206:Src/usbd_desc.c **** * @param length: Pointer to data length variable + 207:Src/usbd_desc.c **** * @retval Pointer to descriptor buffer + 208:Src/usbd_desc.c **** */ + 209:Src/usbd_desc.c **** uint8_t *USBD_VCP_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length) + 210:Src/usbd_desc.c **** { + 211:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length); + 212:Src/usbd_desc.c **** return USBD_StrDesc; + 213:Src/usbd_desc.c **** } + 214:Src/usbd_desc.c **** + 215:Src/usbd_desc.c **** /** + 216:Src/usbd_desc.c **** * @brief Create the serial number string descriptor + 217:Src/usbd_desc.c **** * @param None + 218:Src/usbd_desc.c **** * @retval None + 219:Src/usbd_desc.c **** */ + 220:Src/usbd_desc.c **** static void Get_SerialNum(void) + 221:Src/usbd_desc.c **** { + 222:Src/usbd_desc.c **** uint32_t deviceserial0, deviceserial1, deviceserial2; + 223:Src/usbd_desc.c **** + 224:Src/usbd_desc.c **** deviceserial0 = *(uint32_t*)DEVICE_ID1; + 225:Src/usbd_desc.c **** deviceserial1 = *(uint32_t*)DEVICE_ID2; + 226:Src/usbd_desc.c **** deviceserial2 = *(uint32_t*)DEVICE_ID3; + 227:Src/usbd_desc.c **** + 228:Src/usbd_desc.c **** deviceserial0 += deviceserial2; + 229:Src/usbd_desc.c **** + 230:Src/usbd_desc.c **** if (deviceserial0 != 0) + 231:Src/usbd_desc.c **** { + 232:Src/usbd_desc.c **** IntToUnicode (deviceserial0, &USBD_StringSerial[2] ,8); + 233:Src/usbd_desc.c **** IntToUnicode (deviceserial1, &USBD_StringSerial[18] ,4); + 234:Src/usbd_desc.c **** } + 235:Src/usbd_desc.c **** } + 236:Src/usbd_desc.c **** + 237:Src/usbd_desc.c **** /** + 238:Src/usbd_desc.c **** * @brief Convert Hex 32Bits value into char + 239:Src/usbd_desc.c **** * @param value: value to convert + 240:Src/usbd_desc.c **** * @param pbuf: pointer to the buffer + 241:Src/usbd_desc.c **** * @param len: buffer length + 242:Src/usbd_desc.c **** * @retval None + 243:Src/usbd_desc.c **** */ + 244:Src/usbd_desc.c **** static void IntToUnicode (uint32_t value , uint8_t *pbuf , uint8_t len) + 245:Src/usbd_desc.c **** { + 87 .loc 1 245 0 + 88 .cfi_startproc + 89 @ args = 0, pretend = 0, frame = 0 + 90 @ frame_needed = 0, uses_anonymous_args = 0 + 91 .LVL4: + 92 0000 30B5 push {r4, r5, lr} + 93 .LCFI0: + 94 .cfi_def_cfa_offset 12 + 95 .cfi_offset 4, -12 + 96 .cfi_offset 5, -8 + 97 .cfi_offset 14, -4 + 98 .LVL5: + 246:Src/usbd_desc.c **** uint8_t idx = 0; + 247:Src/usbd_desc.c **** + 248:Src/usbd_desc.c **** for( idx = 0 ; idx < len ; idx ++) + 99 .loc 1 248 0 + ARM GAS /tmp/cck6myrA.s page 7 + + + 100 0002 0023 movs r3, #0 + 101 0004 0AE0 b .L8 + 102 .LVL6: + 103 .L9: + 249:Src/usbd_desc.c **** { + 250:Src/usbd_desc.c **** if( ((value >> 28)) < 0xA ) + 251:Src/usbd_desc.c **** { + 252:Src/usbd_desc.c **** pbuf[ 2* idx] = (value >> 28) + '0'; + 253:Src/usbd_desc.c **** } + 254:Src/usbd_desc.c **** else + 255:Src/usbd_desc.c **** { + 256:Src/usbd_desc.c **** pbuf[2* idx] = (value >> 28) + 'A' - 10; + 104 .loc 1 256 0 + 105 0006 5D00 lsls r5, r3, #1 + 106 0008 3734 adds r4, r4, #55 + 107 000a 4C55 strb r4, [r1, r5] + 108 .L10: + 257:Src/usbd_desc.c **** } + 258:Src/usbd_desc.c **** + 259:Src/usbd_desc.c **** value = value << 4; + 109 .loc 1 259 0 discriminator 2 + 110 000c 0001 lsls r0, r0, #4 + 111 .LVL7: + 260:Src/usbd_desc.c **** + 261:Src/usbd_desc.c **** pbuf[ 2* idx + 1] = 0; + 112 .loc 1 261 0 discriminator 2 + 113 000e 5C00 lsls r4, r3, #1 + 114 0010 0134 adds r4, r4, #1 + 115 0012 0C19 adds r4, r1, r4 + 116 0014 0025 movs r5, #0 + 117 0016 2570 strb r5, [r4] + 248:Src/usbd_desc.c **** { + 118 .loc 1 248 0 discriminator 2 + 119 0018 0133 adds r3, r3, #1 + 120 .LVL8: + 121 001a DBB2 uxtb r3, r3 + 122 .LVL9: + 123 .L8: + 248:Src/usbd_desc.c **** { + 124 .loc 1 248 0 is_stmt 0 discriminator 1 + 125 001c 9342 cmp r3, r2 + 126 001e 06D2 bcs .L12 + 250:Src/usbd_desc.c **** { + 127 .loc 1 250 0 is_stmt 1 + 128 0020 040F lsrs r4, r0, #28 + 129 0022 092C cmp r4, #9 + 130 0024 EFD8 bhi .L9 + 252:Src/usbd_desc.c **** } + 131 .loc 1 252 0 + 132 0026 5D00 lsls r5, r3, #1 + 133 0028 3034 adds r4, r4, #48 + 134 002a 4C55 strb r4, [r1, r5] + 135 002c EEE7 b .L10 + 136 .L12: + 262:Src/usbd_desc.c **** } + 263:Src/usbd_desc.c **** } + 137 .loc 1 263 0 + ARM GAS /tmp/cck6myrA.s page 8 + + + 138 @ sp needed + 139 002e 30BD pop {r4, r5, pc} + 140 .cfi_endproc + 141 .LFE51: + 143 .section .text.Get_SerialNum,"ax",%progbits + 144 .align 1 + 145 .syntax unified + 146 .code 16 + 147 .thumb_func + 148 .fpu softvfp + 150 Get_SerialNum: + 151 .LFB50: + 221:Src/usbd_desc.c **** uint32_t deviceserial0, deviceserial1, deviceserial2; + 152 .loc 1 221 0 + 153 .cfi_startproc + 154 @ args = 0, pretend = 0, frame = 0 + 155 @ frame_needed = 0, uses_anonymous_args = 0 + 156 0000 70B5 push {r4, r5, r6, lr} + 157 .LCFI1: + 158 .cfi_def_cfa_offset 16 + 159 .cfi_offset 4, -16 + 160 .cfi_offset 5, -12 + 161 .cfi_offset 6, -8 + 162 .cfi_offset 14, -4 + 224:Src/usbd_desc.c **** deviceserial1 = *(uint32_t*)DEVICE_ID2; + 163 .loc 1 224 0 + 164 0002 0B4B ldr r3, .L16 + 165 0004 1868 ldr r0, [r3] + 166 .LVL10: + 225:Src/usbd_desc.c **** deviceserial2 = *(uint32_t*)DEVICE_ID3; + 167 .loc 1 225 0 + 168 0006 0B4B ldr r3, .L16+4 + 169 0008 1D68 ldr r5, [r3] + 170 .LVL11: + 226:Src/usbd_desc.c **** + 171 .loc 1 226 0 + 172 000a 0B4B ldr r3, .L16+8 + 173 000c 1B68 ldr r3, [r3] + 174 .LVL12: + 228:Src/usbd_desc.c **** + 175 .loc 1 228 0 + 176 000e C018 adds r0, r0, r3 + 177 .LVL13: + 230:Src/usbd_desc.c **** { + 178 .loc 1 230 0 + 179 0010 0028 cmp r0, #0 + 180 0012 00D1 bne .L15 + 181 .LVL14: + 182 .L13: + 235:Src/usbd_desc.c **** + 183 .loc 1 235 0 + 184 @ sp needed + 185 .LVL15: + 186 0014 70BD pop {r4, r5, r6, pc} + 187 .LVL16: + 188 .L15: + 232:Src/usbd_desc.c **** IntToUnicode (deviceserial1, &USBD_StringSerial[18] ,4); + ARM GAS /tmp/cck6myrA.s page 9 + + + 189 .loc 1 232 0 + 190 0016 094C ldr r4, .L16+12 + 191 0018 A11C adds r1, r4, #2 + 192 001a 0822 movs r2, #8 + 193 001c FFF7FEFF bl IntToUnicode + 194 .LVL17: + 233:Src/usbd_desc.c **** } + 195 .loc 1 233 0 + 196 0020 2100 movs r1, r4 + 197 0022 1231 adds r1, r1, #18 + 198 0024 0422 movs r2, #4 + 199 0026 2800 movs r0, r5 + 200 0028 FFF7FEFF bl IntToUnicode + 201 .LVL18: + 235:Src/usbd_desc.c **** + 202 .loc 1 235 0 + 203 002c F2E7 b .L13 + 204 .L17: + 205 002e C046 .align 2 + 206 .L16: + 207 0030 ACF7FF1F .word 536868780 + 208 0034 B0F7FF1F .word 536868784 + 209 0038 B4F7FF1F .word 536868788 + 210 003c 00000000 .word .LANCHOR2 + 211 .cfi_endproc + 212 .LFE50: + 214 .section .text.USBD_VCP_SerialStrDescriptor,"ax",%progbits + 215 .align 1 + 216 .global USBD_VCP_SerialStrDescriptor + 217 .syntax unified + 218 .code 16 + 219 .thumb_func + 220 .fpu softvfp + 222 USBD_VCP_SerialStrDescriptor: + 223 .LFB47: + 182:Src/usbd_desc.c **** *length = USB_SIZ_STRING_SERIAL; + 224 .loc 1 182 0 + 225 .cfi_startproc + 226 @ args = 0, pretend = 0, frame = 0 + 227 @ frame_needed = 0, uses_anonymous_args = 0 + 228 .LVL19: + 229 0000 10B5 push {r4, lr} + 230 .LCFI2: + 231 .cfi_def_cfa_offset 8 + 232 .cfi_offset 4, -8 + 233 .cfi_offset 14, -4 + 183:Src/usbd_desc.c **** + 234 .loc 1 183 0 + 235 0002 1A23 movs r3, #26 + 236 0004 0B80 strh r3, [r1] + 186:Src/usbd_desc.c **** + 237 .loc 1 186 0 + 238 0006 FFF7FEFF bl Get_SerialNum + 239 .LVL20: + 189:Src/usbd_desc.c **** + 240 .loc 1 189 0 + 241 000a 0148 ldr r0, .L19 + ARM GAS /tmp/cck6myrA.s page 10 + + + 242 @ sp needed + 243 000c 10BD pop {r4, pc} + 244 .L20: + 245 000e C046 .align 2 + 246 .L19: + 247 0010 00000000 .word .LANCHOR2 + 248 .cfi_endproc + 249 .LFE47: + 251 .section .text.USBD_VCP_ProductStrDescriptor,"ax",%progbits + 252 .align 1 + 253 .global USBD_VCP_ProductStrDescriptor + 254 .syntax unified + 255 .code 16 + 256 .thumb_func + 257 .fpu softvfp + 259 USBD_VCP_ProductStrDescriptor: + 260 .LFB45: + 158:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_PRODUCT_FS_STRING, USBD_StrDesc, length); + 261 .loc 1 158 0 + 262 .cfi_startproc + 263 @ args = 0, pretend = 0, frame = 0 + 264 @ frame_needed = 0, uses_anonymous_args = 0 + 265 .LVL21: + 266 0000 10B5 push {r4, lr} + 267 .LCFI3: + 268 .cfi_def_cfa_offset 8 + 269 .cfi_offset 4, -8 + 270 .cfi_offset 14, -4 + 271 0002 0A00 movs r2, r1 + 159:Src/usbd_desc.c **** return USBD_StrDesc; + 272 .loc 1 159 0 + 273 0004 034C ldr r4, .L22 + 274 0006 2100 movs r1, r4 + 275 .LVL22: + 276 0008 0348 ldr r0, .L22+4 + 277 .LVL23: + 278 000a FFF7FEFF bl USBD_GetString + 279 .LVL24: + 161:Src/usbd_desc.c **** + 280 .loc 1 161 0 + 281 000e 2000 movs r0, r4 + 282 @ sp needed + 283 0010 10BD pop {r4, pc} + 284 .L23: + 285 0012 C046 .align 2 + 286 .L22: + 287 0014 00000000 .word USBD_StrDesc + 288 0018 00000000 .word .LC7 + 289 .cfi_endproc + 290 .LFE45: + 292 .section .text.USBD_VCP_ManufacturerStrDescriptor,"ax",%progbits + 293 .align 1 + 294 .global USBD_VCP_ManufacturerStrDescriptor + 295 .syntax unified + 296 .code 16 + 297 .thumb_func + 298 .fpu softvfp + ARM GAS /tmp/cck6myrA.s page 11 + + + 300 USBD_VCP_ManufacturerStrDescriptor: + 301 .LFB46: + 170:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_MANUFACTURER_STRING, USBD_StrDesc, length); + 302 .loc 1 170 0 + 303 .cfi_startproc + 304 @ args = 0, pretend = 0, frame = 0 + 305 @ frame_needed = 0, uses_anonymous_args = 0 + 306 .LVL25: + 307 0000 10B5 push {r4, lr} + 308 .LCFI4: + 309 .cfi_def_cfa_offset 8 + 310 .cfi_offset 4, -8 + 311 .cfi_offset 14, -4 + 312 0002 0A00 movs r2, r1 + 171:Src/usbd_desc.c **** return USBD_StrDesc; + 313 .loc 1 171 0 + 314 0004 034C ldr r4, .L25 + 315 0006 2100 movs r1, r4 + 316 .LVL26: + 317 0008 0348 ldr r0, .L25+4 + 318 .LVL27: + 319 000a FFF7FEFF bl USBD_GetString + 320 .LVL28: + 173:Src/usbd_desc.c **** + 321 .loc 1 173 0 + 322 000e 2000 movs r0, r4 + 323 @ sp needed + 324 0010 10BD pop {r4, pc} + 325 .L26: + 326 0012 C046 .align 2 + 327 .L25: + 328 0014 00000000 .word USBD_StrDesc + 329 0018 00000000 .word .LC10 + 330 .cfi_endproc + 331 .LFE46: + 333 .section .text.USBD_VCP_ConfigStrDescriptor,"ax",%progbits + 334 .align 1 + 335 .global USBD_VCP_ConfigStrDescriptor + 336 .syntax unified + 337 .code 16 + 338 .thumb_func + 339 .fpu softvfp + 341 USBD_VCP_ConfigStrDescriptor: + 342 .LFB48: + 198:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_CONFIGURATION_FS_STRING, USBD_StrDesc, length); + 343 .loc 1 198 0 + 344 .cfi_startproc + 345 @ args = 0, pretend = 0, frame = 0 + 346 @ frame_needed = 0, uses_anonymous_args = 0 + 347 .LVL29: + 348 0000 10B5 push {r4, lr} + 349 .LCFI5: + 350 .cfi_def_cfa_offset 8 + 351 .cfi_offset 4, -8 + 352 .cfi_offset 14, -4 + 353 0002 0A00 movs r2, r1 + 199:Src/usbd_desc.c **** return USBD_StrDesc; + ARM GAS /tmp/cck6myrA.s page 12 + + + 354 .loc 1 199 0 + 355 0004 034C ldr r4, .L28 + 356 0006 2100 movs r1, r4 + 357 .LVL30: + 358 0008 0348 ldr r0, .L28+4 + 359 .LVL31: + 360 000a FFF7FEFF bl USBD_GetString + 361 .LVL32: + 201:Src/usbd_desc.c **** + 362 .loc 1 201 0 + 363 000e 2000 movs r0, r4 + 364 @ sp needed + 365 0010 10BD pop {r4, pc} + 366 .L29: + 367 0012 C046 .align 2 + 368 .L28: + 369 0014 00000000 .word USBD_StrDesc + 370 0018 00000000 .word .LC13 + 371 .cfi_endproc + 372 .LFE48: + 374 .section .text.USBD_VCP_InterfaceStrDescriptor,"ax",%progbits + 375 .align 1 + 376 .global USBD_VCP_InterfaceStrDescriptor + 377 .syntax unified + 378 .code 16 + 379 .thumb_func + 380 .fpu softvfp + 382 USBD_VCP_InterfaceStrDescriptor: + 383 .LFB49: + 210:Src/usbd_desc.c **** USBD_GetString((uint8_t *)USBD_INTERFACE_FS_STRING, USBD_StrDesc, length); + 384 .loc 1 210 0 + 385 .cfi_startproc + 386 @ args = 0, pretend = 0, frame = 0 + 387 @ frame_needed = 0, uses_anonymous_args = 0 + 388 .LVL33: + 389 0000 10B5 push {r4, lr} + 390 .LCFI6: + 391 .cfi_def_cfa_offset 8 + 392 .cfi_offset 4, -8 + 393 .cfi_offset 14, -4 + 394 0002 0A00 movs r2, r1 + 211:Src/usbd_desc.c **** return USBD_StrDesc; + 395 .loc 1 211 0 + 396 0004 034C ldr r4, .L31 + 397 0006 2100 movs r1, r4 + 398 .LVL34: + 399 0008 0348 ldr r0, .L31+4 + 400 .LVL35: + 401 000a FFF7FEFF bl USBD_GetString + 402 .LVL36: + 213:Src/usbd_desc.c **** + 403 .loc 1 213 0 + 404 000e 2000 movs r0, r4 + 405 @ sp needed + 406 0010 10BD pop {r4, pc} + 407 .L32: + 408 0012 C046 .align 2 + ARM GAS /tmp/cck6myrA.s page 13 + + + 409 .L31: + 410 0014 00000000 .word USBD_StrDesc + 411 0018 00000000 .word .LC16 + 412 .cfi_endproc + 413 .LFE49: + 415 .comm USBD_StrDesc,256,4 + 416 .global USBD_StringSerial + 417 .global USBD_LangIDDesc + 418 .global hUSBDDeviceDesc + 419 .global VCP_Desc + 420 .section .data.USBD_StringSerial,"aw",%progbits + 421 .align 2 + 422 .set .LANCHOR2,. + 0 + 425 USBD_StringSerial: + 426 0000 1A .byte 26 + 427 0001 03 .byte 3 + 428 0002 00000000 .space 24 + 428 00000000 + 428 00000000 + 428 00000000 + 428 00000000 + 429 .section .data.VCP_Desc,"aw",%progbits + 430 .align 2 + 433 VCP_Desc: + 434 0000 00000000 .word USBD_VCP_DeviceDescriptor + 435 0004 00000000 .word USBD_VCP_LangIDStrDescriptor + 436 0008 00000000 .word USBD_VCP_ManufacturerStrDescriptor + 437 000c 00000000 .word USBD_VCP_ProductStrDescriptor + 438 0010 00000000 .word USBD_VCP_SerialStrDescriptor + 439 0014 00000000 .word USBD_VCP_ConfigStrDescriptor + 440 0018 00000000 .word USBD_VCP_InterfaceStrDescriptor + 441 .section .rodata.USBD_LangIDDesc,"a",%progbits + 442 .align 2 + 443 .set .LANCHOR1,. + 0 + 446 USBD_LangIDDesc: + 447 0000 04 .byte 4 + 448 0001 03 .byte 3 + 449 0002 09 .byte 9 + 450 0003 04 .byte 4 + 451 .section .rodata.USBD_VCP_ConfigStrDescriptor.str1.4,"aMS",%progbits,1 + 452 .align 2 + 453 .LC13: + 454 0000 6D617500 .ascii "mau\000" + 455 .section .rodata.USBD_VCP_InterfaceStrDescriptor.str1.4,"aMS",%progbits,1 + 456 .align 2 + 457 .LC16: + 458 0000 3A6F00 .ascii ":o\000" + 459 .section .rodata.USBD_VCP_ManufacturerStrDescriptor.str1.4,"aMS",%progbits,1 + 460 .align 2 + 461 .LC10: + 462 0000 4F747465 .ascii "Otter-Iron\000" + 462 722D4972 + 462 6F6E00 + 463 .section .rodata.USBD_VCP_ProductStrDescriptor.str1.4,"aMS",%progbits,1 + 464 .align 2 + 465 .LC7: + 466 0000 63686972 .ascii "chirp :3\000" + ARM GAS /tmp/cck6myrA.s page 14 + + + 466 70203A33 + 466 00 + 467 .section .rodata.hUSBDDeviceDesc,"a",%progbits + 468 .align 2 + 469 .set .LANCHOR0,. + 0 + 472 hUSBDDeviceDesc: + 473 0000 12 .byte 18 + 474 0001 01 .byte 1 + 475 0002 00 .byte 0 + 476 0003 02 .byte 2 + 477 0004 00 .byte 0 + 478 0005 00 .byte 0 + 479 0006 00 .byte 0 + 480 0007 40 .byte 64 + 481 0008 83 .byte -125 + 482 0009 04 .byte 4 + 483 000a 40 .byte 64 + 484 000b 57 .byte 87 + 485 000c 00 .byte 0 + 486 000d 02 .byte 2 + 487 000e 01 .byte 1 + 488 000f 02 .byte 2 + 489 0010 03 .byte 3 + 490 0011 01 .byte 1 + 491 .text + 492 .Letext0: + 493 .file 2 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/machin + 494 .file 3 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_s + 495 .file 4 "Drivers/CMSIS/Device/ST/STM32F0xx/Include/system_stm32f0xx.h" + 496 .file 5 "Drivers/STM32F0xx_HAL_Driver/Inc/stm32f0xx_hal.h" + 497 .file 6 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/lo + 498 .file 7 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/_t + 499 .file 8 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/lib/gcc/arm-none-eabi/7.3.1/ + 500 .file 9 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/sys/re + 501 .file 10 "/home/janhenrik/programme/gcc-arm-none-eabi-7-2018-q2-update/arm-none-eabi/include/stdli + 502 .file 11 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h" + 503 .file 12 "Inc/usbd_desc.h" + 504 .file 13 "Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_ctlreq.h" + ARM GAS /tmp/cck6myrA.s page 15 + + +DEFINED SYMBOLS + *ABS*:0000000000000000 usbd_desc.c + /tmp/cck6myrA.s:16 .text.USBD_VCP_DeviceDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:23 .text.USBD_VCP_DeviceDescriptor:0000000000000000 USBD_VCP_DeviceDescriptor + /tmp/cck6myrA.s:43 .text.USBD_VCP_DeviceDescriptor:0000000000000008 $d + /tmp/cck6myrA.s:48 .text.USBD_VCP_LangIDStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:55 .text.USBD_VCP_LangIDStrDescriptor:0000000000000000 USBD_VCP_LangIDStrDescriptor + /tmp/cck6myrA.s:74 .text.USBD_VCP_LangIDStrDescriptor:0000000000000008 $d + /tmp/cck6myrA.s:79 .text.IntToUnicode:0000000000000000 $t + /tmp/cck6myrA.s:85 .text.IntToUnicode:0000000000000000 IntToUnicode + /tmp/cck6myrA.s:144 .text.Get_SerialNum:0000000000000000 $t + /tmp/cck6myrA.s:150 .text.Get_SerialNum:0000000000000000 Get_SerialNum + /tmp/cck6myrA.s:207 .text.Get_SerialNum:0000000000000030 $d + /tmp/cck6myrA.s:215 .text.USBD_VCP_SerialStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:222 .text.USBD_VCP_SerialStrDescriptor:0000000000000000 USBD_VCP_SerialStrDescriptor + /tmp/cck6myrA.s:247 .text.USBD_VCP_SerialStrDescriptor:0000000000000010 $d + /tmp/cck6myrA.s:252 .text.USBD_VCP_ProductStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:259 .text.USBD_VCP_ProductStrDescriptor:0000000000000000 USBD_VCP_ProductStrDescriptor + /tmp/cck6myrA.s:287 .text.USBD_VCP_ProductStrDescriptor:0000000000000014 $d + *COM*:0000000000000100 USBD_StrDesc + /tmp/cck6myrA.s:293 .text.USBD_VCP_ManufacturerStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:300 .text.USBD_VCP_ManufacturerStrDescriptor:0000000000000000 USBD_VCP_ManufacturerStrDescriptor + /tmp/cck6myrA.s:328 .text.USBD_VCP_ManufacturerStrDescriptor:0000000000000014 $d + /tmp/cck6myrA.s:334 .text.USBD_VCP_ConfigStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:341 .text.USBD_VCP_ConfigStrDescriptor:0000000000000000 USBD_VCP_ConfigStrDescriptor + /tmp/cck6myrA.s:369 .text.USBD_VCP_ConfigStrDescriptor:0000000000000014 $d + /tmp/cck6myrA.s:375 .text.USBD_VCP_InterfaceStrDescriptor:0000000000000000 $t + /tmp/cck6myrA.s:382 .text.USBD_VCP_InterfaceStrDescriptor:0000000000000000 USBD_VCP_InterfaceStrDescriptor + /tmp/cck6myrA.s:410 .text.USBD_VCP_InterfaceStrDescriptor:0000000000000014 $d + /tmp/cck6myrA.s:425 .data.USBD_StringSerial:0000000000000000 USBD_StringSerial + /tmp/cck6myrA.s:446 .rodata.USBD_LangIDDesc:0000000000000000 USBD_LangIDDesc + /tmp/cck6myrA.s:472 .rodata.hUSBDDeviceDesc:0000000000000000 hUSBDDeviceDesc + /tmp/cck6myrA.s:433 .data.VCP_Desc:0000000000000000 VCP_Desc + /tmp/cck6myrA.s:421 .data.USBD_StringSerial:0000000000000000 $d + /tmp/cck6myrA.s:430 .data.VCP_Desc:0000000000000000 $d + /tmp/cck6myrA.s:442 .rodata.USBD_LangIDDesc:0000000000000000 $d + /tmp/cck6myrA.s:452 .rodata.USBD_VCP_ConfigStrDescriptor.str1.4:0000000000000000 $d + /tmp/cck6myrA.s:456 .rodata.USBD_VCP_InterfaceStrDescriptor.str1.4:0000000000000000 $d + /tmp/cck6myrA.s:460 .rodata.USBD_VCP_ManufacturerStrDescriptor.str1.4:0000000000000000 $d + /tmp/cck6myrA.s:464 .rodata.USBD_VCP_ProductStrDescriptor.str1.4:0000000000000000 $d + /tmp/cck6myrA.s:468 .rodata.hUSBDDeviceDesc:0000000000000000 $d + +UNDEFINED SYMBOLS +USBD_GetString -- cgit