I am a bit confused, i have a board with USB device hardware but get the runtime error:
“This board does not have a hardware USB driver”.
Hardware:
NUCLEO-L152RE Development board
Software:
MBED STUDIO version 0.8.1
MBED OS 5.15.1
Complete error message:
++ MbedOS Error Info ++
Error Status: 0x80FF0100 Code: 256 Module: 255
Error Message: Fatal Run-time error
Location: 0x800394F
Error Value: 0x0
Current Thread: main Id: 0x2000192C Entry: 0x8008571 StackSize: 0x1000 StackMem: 0x20000428 SP: 0x20001364
For more info, visit: mbedos-error
– MbedOS Error Info –
This board does not have a hardware USB driver
…
Compile [ 98.7%]: USBPhy_STM32.cpp
[Error] USBPhy_STM32.cpp@46,31: no member named ‘DIEPTXF0_HNPTXFSIZ’ in ‘USB_TypeDef’
[Error] USBPhy_STM32.cpp@48,32: no member named ‘DIEPTXF’ in ‘USB_TypeDef’
[Error] USBPhy_STM32.cpp@56,5: unknown type name ‘USB_OTG_GlobalTypeDef’
[Error] USBPhy_STM32.cpp@59,28: use of undeclared identifier ‘USBx_DEVICE’
[Error] USBPhy_STM32.cpp@59,48: use of undeclared identifier ‘USB_OTG_DSTS_FNSOF’
[Error] USBPhy_STM32.cpp@171,21: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@257,5: use of undeclared identifier ‘HAL_PCDEx_SetRxFiFo’; did you mean ‘HAL_PCDEx_GetTxFiFo’?
[Error] USBPhy_STM32.cpp@263,9: use of undeclared identifier ‘HAL_PCDEx_SetTxFiFo’
[Error] USBPhy_STM32.cpp@271,20: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@272,22: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@273,20: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@281,21: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@492,26: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@493,20: use of undeclared identifier ‘USB_IRQn’
[Error] USBPhy_STM32.cpp@498,21: use of undeclared identifier ‘USB_IRQn’
[ERROR] .\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:46:31: error: no member named ‘DIEPTXF0_HNPTXFSIZ’ in ‘USB_TypeDef’
len = hpcd->Instance->DIEPTXF0_HNPTXFSIZ >> 16;
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:48:32: error: no member named 'DIEPTXF' in 'USB_TypeDef'
len = hpcd->Instance->DIEPTXF[fifo - 1] >> 16;
~~~~~~~~~~~~~~ ^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:56:5: error: unknown type name 'USB_OTG_GlobalTypeDef'
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:59:28: error: use of undeclared identifier 'USBx_DEVICE'
priv->events->sof((USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF) >> 8);
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:59:48: error: use of undeclared identifier 'USB_OTG_DSTS_FNSOF'
priv->events->sof((USBx_DEVICE->DSTS & USB_OTG_DSTS_FNSOF) >> 8);
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:171:21: error: use of undeclared identifier 'USB_IRQn'
NVIC_DisableIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:257:5: error: use of undeclared identifier 'HAL_PCDEx_SetRxFiFo'; did you mean 'HAL_PCDEx_GetTxFiFo'?
HAL_PCDEx_SetRxFiFo(&hpcd, (fifo_size / 4));
^~~~~~~~~~~~~~~~~~~
HAL_PCDEx_GetTxFiFo
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:42:10: note: 'HAL_PCDEx_GetTxFiFo' declared here
uint32_t HAL_PCDEx_GetTxFiFo(PCD_HandleTypeDef *hpcd, uint8_t fifo)
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:263:9: error: use of undeclared identifier 'HAL_PCDEx_SetTxFiFo'
HAL_PCDEx_SetTxFiFo(&hpcd, i, fifo_size / 4);
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:271:20: error: use of undeclared identifier 'USB_IRQn'
NVIC_SetVector(USBHAL_IRQn, (uint32_t)&_usbisr);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:272:22: error: use of undeclared identifier 'USB_IRQn'
NVIC_SetPriority(USBHAL_IRQn, 1);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:273:20: error: use of undeclared identifier 'USB_IRQn'
NVIC_EnableIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:281:21: error: use of undeclared identifier 'USB_IRQn'
NVIC_DisableIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:492:26: error: use of undeclared identifier 'USB_IRQn'
NVIC_ClearPendingIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:493:20: error: use of undeclared identifier 'USB_IRQn'
NVIC_EnableIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
.\mbed-os\targets\TARGET_STM\USBPhy_STM32.cpp:498:21: error: use of undeclared identifier 'USB_IRQn'
NVIC_DisableIRQ(USBHAL_IRQn);
^
./mbed-os/targets/TARGET_STM/USBPhyHw.h:42:22: note: expanded from macro 'USBHAL_IRQn'
#define USBHAL_IRQn USB_IRQn
^
15 errors generated.
I have tried several configs but they all end up with errors...
I have found: https://os.mbed.com/users/va009039/code/L152RE_USBDevice_example/ is it a good advice to use his libraries with mbed OS5?, and most important should i desist in trying to configure USBDEVICE throught mbed_app.json, is it posible?
Thanks!
I have been able to program the MAX32630FTHR board without bother using the online compiler.
I’ve tested all the examples on the hardware page. Many of the examples use “printf” both to send/receive data via serial (DAPLINK) and via virtual serial port when including “USBSerial.h”.
I’m now trying to replicate on Mbed Studio, using Mbed OS 5.15.4.
However this throws up the same fatal runtime error, as shown in this forum post, with the message “This board does not have a hardware USB driver”.
The suggested solution as shown above (adding “USBDEVICE” to the target) almost works.
I am getting just one compile error:
[Error] @0,0: L6218E: Undefined symbol get_usb_phy() (referred from BUILD/MAX32630FTHR/ARMC6/mbed-os/drivers/source/usb/USBAudio.o).
How do I fix this?
I also tried another method which was to import the maxim integrated library, which is used in the online compiler example.
I see this issue was raised before on GitHub over a year ago (July 2019)
I get the feeling Maxim Integrated do not seem too bothered to fix all these errors, or maybe they don’t have high enough standards to consider these problems for them to deal with, or maybe they’ve basically abandoned this board…