1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
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 **** * <h2><center>© Copyright (c) 2016 STMicroelectronics International N.V.
10:Src/usbd_desc.c **** * All rights reserved.</center></h2>
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
|