2018-10-24 03:35 AM
Hi, colleges!
I use Nucleo-144 STm32F767 development board to learn USB.
Now - Application example - device USB MSC.
The example uses SD card, with I haven't. I want to use internal instead of SD card. So, I changed the "usbd_storage.c" file. Plugged and not played =) Error - Cann't start this device (code 10).
My STM32 is falling in HardFault_Handler. I've put break point in "Handle Enumeration done Interrupt" and seen the process has stopped. The enumeration process is done. Ok.
What is going then? Which step is next? Where I need to put my break point?
I don't really know how to debug USB transaction and communication process. Wireshark doesn't see my device at all.
/* Private variables ---------------------------------------------------------*/
uint8_t usbMassStorage[0x1000];
....
int8_t STORAGE_GetCapacity(uint8_t lun, uint32_t *block_num, uint16_t *block_size)
{
*block_num = sizeof(usbMassStorage)/512;
*block_size = 512;
return 0;
}
int8_t STORAGE_IsReady(uint8_t lun)
{
return 0;
}
int8_t STORAGE_IsWriteProtected(uint8_t lun)
{
return 0;
}
int8_t STORAGE_Read(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
memcpy(buf,&usbMassStorage[blk_addr],blk_len);
return 0;
}
int8_t STORAGE_Write(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len)
{
memcpy(&usbMassStorage[blk_addr],buf,blk_len);
return 0;
}
int8_t STORAGE_GetMaxLun(void)
{
return(STORAGE_LUN_NBR - 1);
}
Solved! Go to Solution.
2018-10-24 07:16 AM
One problem is solve. The PC detects my STM32 MCU as MSC.
I've just changed string descriptors index to 0x00 in device descriptor.
How can I write or read smth to/from my MCU? Why it shows 0 kb memory disk?
2018-10-24 07:16 AM
One problem is solve. The PC detects my STM32 MCU as MSC.
I've just changed string descriptors index to 0x00 in device descriptor.
How can I write or read smth to/from my MCU? Why it shows 0 kb memory disk?
2018-10-24 06:24 PM
> Why it shows 0 kb memory disk?
Because 0x1000 is 4K bytes. 8 blocks. Too small to create any decent filesystem.
-- pa
2018-10-24 11:21 PM
I'm not sure. I tried with concrete values.
*block_num = 0x100;
*block_size = 0x20;
It gave the same result. But MS OS suggested me to format disk. In the window I saw 8 kb. But then was error in format disk process.