stmhal: Put a USB structure in ROM; GC doesn't scan the data segment.
This commit is contained in:
parent
b14f2a0ba3
commit
82c7b1b1d5
|
@ -21,10 +21,9 @@ void gc_collect(void) {
|
||||||
// start the GC
|
// start the GC
|
||||||
gc_collect_start();
|
gc_collect_start();
|
||||||
|
|
||||||
// scan everything in RAM before the heap
|
// We need to scan everything in RAM that can hold a pointer.
|
||||||
// this includes the data and bss segments
|
// The data segment is used, but should not contain pointers, so we just scan the bss.
|
||||||
// TODO possibly don't need to scan data, since all pointers should start out NULL and be in bss
|
gc_collect_root((void**)&_sbss, ((uint32_t)&_ebss - (uint32_t)&_sbss) / sizeof(uint32_t));
|
||||||
gc_collect_root((void**)&_ram_start, ((uint32_t)&_ebss - (uint32_t)&_ram_start) / sizeof(uint32_t));
|
|
||||||
|
|
||||||
// get the registers and the sp
|
// get the registers and the sp
|
||||||
machine_uint_t regs[10];
|
machine_uint_t regs[10];
|
||||||
|
|
|
@ -28,7 +28,7 @@ void pyb_usb_dev_init(usb_device_mode_t mode, usb_storage_medium_t medium) {
|
||||||
} else {
|
} else {
|
||||||
USBD_SelectMode(USBD_MODE_CDC_HID);
|
USBD_SelectMode(USBD_MODE_CDC_HID);
|
||||||
}
|
}
|
||||||
USBD_Init(&hUSBDDevice, &VCP_Desc, 0);
|
USBD_Init(&hUSBDDevice, (USBD_DescriptorsTypeDef*)&VCP_Desc, 0);
|
||||||
USBD_RegisterClass(&hUSBDDevice, &USBD_CDC_MSC_HID);
|
USBD_RegisterClass(&hUSBDDevice, &USBD_CDC_MSC_HID);
|
||||||
USBD_CDC_RegisterInterface(&hUSBDDevice, (USBD_CDC_ItfTypeDef*)&USBD_CDC_fops);
|
USBD_CDC_RegisterInterface(&hUSBDDevice, (USBD_CDC_ItfTypeDef*)&USBD_CDC_fops);
|
||||||
#if MICROPY_HW_HAS_SDCARD
|
#if MICROPY_HW_HAS_SDCARD
|
||||||
|
|
|
@ -1,2 +1 @@
|
||||||
extern USBD_DescriptorsTypeDef VCP_Desc;
|
extern const USBD_DescriptorsTypeDef VCP_Desc;
|
||||||
extern USBD_DescriptorsTypeDef MSC_Desc;
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ uint8_t *USBD_VCP_USRStringDesc (USBD_SpeedTypeDef speed, uint8_t idx, uint16_t
|
||||||
#endif /* USB_SUPPORT_USER_STRING_DESC */
|
#endif /* USB_SUPPORT_USER_STRING_DESC */
|
||||||
|
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
USBD_DescriptorsTypeDef VCP_Desc = {
|
const USBD_DescriptorsTypeDef VCP_Desc = {
|
||||||
USBD_VCP_DeviceDescriptor,
|
USBD_VCP_DeviceDescriptor,
|
||||||
USBD_VCP_LangIDStrDescriptor,
|
USBD_VCP_LangIDStrDescriptor,
|
||||||
USBD_VCP_ManufacturerStrDescriptor,
|
USBD_VCP_ManufacturerStrDescriptor,
|
||||||
|
|
Loading…
Reference in New Issue