Hi,

I use libopencm3 on STM32F103 maple-mini clones.


Some time ago, I tried the usb_cdcacm examples (see link (1) below) for 
serial-over-USB on these devices, which compiles and works nicely.
All very fine.



Now, I would like to use this and combine it with an application that 
reads and dumps the data on a a mifare rfid-tag using a nfrc522 
rfid-reader. This is a  port of the arduino mfrc522 C++ library to 
opencm3. (see link 2 below)
The current version of my application uses the serial UART-port on the 
STM32F103 which works great, but I like to use the serial-over-USB 
interface.



As my mnf522-application is writen in C++, I need to compile the 
"serial-over-usb" code in cdcacm.c (see link 3 below) using C++ instead 
of gcc.

But I get this error:
--- cut here --- cut here --- cut here --- cut here ---
USBserial.h:142:2: error: elements of array 'const usb_interface ifaces 
[]' have incomplete type
  }};
   ^
USBserial.h:142:2: error: storage size of 'ifaces' isn't known
--- cut here --- cut here --- cut here --- cut here ---




This relates to this piece of code:

static const struct usb_interface ifaces[] = {{
         .num_altsetting = 1,
         .altsetting = comm_iface,
}, {
         .num_altsetting = 1,
         .altsetting = data_iface,
}};


(see lines 145 of 
https://github.com/libopencm3/libopencm3-examples/blob/master/examples/stm32/f1/stm32-h103/usb_cdcacm/cdcacm.c
 
and above).


These structures are defined in "libopencm3/usb/usbstd.h" here:
/* USB Standard Configuration Descriptor - Table 9-10 */
struct usb_config_descriptor {
         uint8_t bLength;
(...)
         /* Descriptor ends here.  The following are used internally: */
         const struct usb_interface {
                 uint8_t *cur_altsetting;
                 uint8_t num_altsetting;
                 const struct usb_iface_assoc_descriptor *iface_assoc;
                 const struct usb_interface_descriptor *altsetting;
         } *interface;
(...)



Development is done on an ubuntu 16.04 LTS. gcc is arm-none-eabi-gcc / 
gcc version 4.9.3 20141119 (release) [ARM/embedded-4_9-branch revision 
218278] (GNU Tools for ARM Embedded Processors)

The source of this version of gcc is "gcc4mbed"

So, my impression is that there are some differences in how gcc compiles 
this as C then as C++.




Did anybody have simular issues?
What version of arm-none-eabi-gcc are you all now using (on ubuntu)?




Cheerio! Kr. Bonne.





(1) 
https://github.com/libopencm3/libopencm3-examples/tree/master/examples/stm32/f1/stm32-h103/usb_cdcacm

(2) https://github.com/miguelbalboa/rfid

(3) 
https://github.com/libopencm3/libopencm3-examples/blob/master/examples/stm32/f1/stm32-h103/usb_cdcacm/cdcacm.c


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
libopencm3-devel mailing list
libopencm3-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libopencm3-devel

Reply via email to