ARMmbed / ARMmbed/DAPLink

Drag and Drop Working Explanation

Open
#641 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.