-
Notifications
You must be signed in to change notification settings - Fork 104
Description
I try to use your USB library for my ATSAM3U4E in my embedded system. I find that when I have save around 300Mbytes or more, my embedded system crash so I need to restart 2 or 3 times to finally achieve the full download. I can't figurate out why my embedded system crashes. I send you a quick view of my functions.
I create an app with Qt to download the data from the memory in my embedded system:
bool Device::usbWriteRead(t_usb_packet request, t_usb_packet response, int timeout) {
mutex.lock();
/ Send request /
if (usb_bulk_write(dev_handle, udi_vendor_ep_bulk_out, (char)request, sizeof(t_usb_packet), 10) < 0) {
mutex.unlock();
return false;
}
/ Retrieve response /
if (usb_bulk_read(dev_handle, udi_vendor_ep_bulk_in, (char)response, sizeof(t_usb_packet), timeout) < 0) {
mutex.unlock();
return false;
}
mutex.unlock();
return true;
}
My embedded system threat the bulk communication as follow:
static void usb_bulk_in_received(udd_ep_status_t status, iram_size_t nb_transfered, udd_ep_id_t ep) {
if (UDD_EP_TRANSFER_OK != status) return;
udi_vendor_bulk_out_run((uint8_t*)&usb_packet, sizeof(usb_packet), usb_bulk_out_received);
}
static void usb_bulk_out_received(udd_ep_status_t status, iram_size_t nb_transfered, udd_ep_id_t ep) {
if (UDD_EP_TRANSFER_OK != status) return;
switch (usb_packet.type) {
case USB_PACKET_TYPE_GET_DATA:
/* Return data from flash /
nand_flash_ecc_read_page(&nf_ecc, usb_packet.content.data.block, usb_packet.content.data.page, nf_data_buffer, NULL);
memcpy(&usb_packet.content.data.buffer, &nf_data_buffer[usb_packet.content.data.subpage * 512], 512);
break;
default:
break;
}
udi_vendor_bulk_in_run((uint8_t)&usb_packet, sizeof(usb_packet), usb_bulk_in_received);
}
I appreciate all the help you can give me. Thank you very much.
Jorge.