Drag and Drop Working Explanation
- Dominant language
- C
- Stars
- 2.8k
- Forks
- 1.1k
- Avg merge
- 3d 12h
- Merged PRs (30d)
- 1
Description
Hi all,
I'm trying to make a bootloader that works like DAPLink -- you can update the firmware on a device by just dragging a binary over to the device after it mounts as a drive.
I'm using Mbed-OS and the USB device stack there along with the MSC class. I've been having trouble checking for new files (ie: reading the FATFs while it's also mounted by the host over USB).
After reading through some of the drag and drop code, this is my understanding of how it works:
A block device/flash interface is wrapped by a "virtual file system" that peeks at the data being written by the host. This allows the code to detect certain special file names (MSD commands) while not directly having to mount and operate on the FAT filesystem itself, which could cause conflicts with the host.
Can anyone clarify how it works a bit better? Thanks!
Contributor guide
Research direction
Start with the drag-and-drop code and the Mbed-OS USB device stack using the MSC class. Trace how host writes are observed through the block-device or virtual-filesystem layer without mounting FATFs concurrently. Done means the interaction and filesystem-conflict rationale are clearly documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot
- Issue type
- Documentation
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100