Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support USB mass storage devices #984

Draft
wants to merge 7 commits into
base: 3.6-dev
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .cproject
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FreeRTOS/src/portable/GCC/ARM_CM7/r0p1}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/RRFLibraries/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.867237257" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME70Q20B__"/>
Expand Down Expand Up @@ -816,6 +818,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FreeRTOS/src/portable/GCC/ARM_CM7/r0p1}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/RRFLibraries/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.818921811" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME70Q20B__"/>
Expand Down Expand Up @@ -1159,6 +1163,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CoreN2G/src/atmel/SAME54_DFP/1.1.134/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CoreN2G/src/arm/CMSIS/5.4.0/CMSIS/Core/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1547676211" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME54P20A__"/>
Expand Down Expand Up @@ -1339,6 +1345,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Hardware/SAME5x}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/Hardware/SAME5x/Ethernet}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1275759816" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME54P20A__"/>
Expand Down Expand Up @@ -1519,6 +1527,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CoreN2G/src/arm/CMSIS/5.4.0/CMSIS/Core/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/Duet3ATE/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.380145251" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME54P20A__"/>
Expand Down Expand Up @@ -1711,6 +1721,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FreeRTOS/src/portable/GCC/ARM_CM7/r0p1}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/RRFLibraries/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1806394874" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME70Q20B__"/>
Expand Down Expand Up @@ -1895,6 +1907,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FreeRTOS/src/portable/GCC/ARM_CM7/r0p1}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/RRFLibraries/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1973576809" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME70Q20B__"/>
Expand Down Expand Up @@ -2063,6 +2077,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CoreN2G/src/atmel/SAME51_DFP/1.1.139/include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CoreN2G/src/arm/CMSIS/5.4.0/CMSIS/Core/Include}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.778041473" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME51N19A__"/>
Expand Down Expand Up @@ -2248,6 +2264,8 @@
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/FreeRTOS/src/portable/GCC/ARM_CM7/r0p1}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/RRFLibraries/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/CANlib/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src/tinyusb/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/LibTinyusb/src}&quot;"/>
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1985321912" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
<listOptionValue builtIn="false" value="__SAME70Q20B__"/>
Expand Down
4 changes: 4 additions & 0 deletions src/Config/Pins.h
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,10 @@
# define HAS_SBC_INTERFACE 0
#endif

#ifndef SUPPORT_USB_DRIVE
# define SUPPORT_USB_DRIVE 0
#endif

#ifndef HAS_MASS_STORAGE
# define HAS_MASS_STORAGE 1
#endif
Expand Down
7 changes: 7 additions & 0 deletions src/Config/Pins_Duet3_MB6HC.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,12 @@ constexpr uint32_t IAP_IMAGE_START = 0x20458000; // last 32kb of RAM
# define HAS_SBC_INTERFACE 0
# define HAS_MASS_STORAGE 0
# define HAS_HIGH_SPEED_SD 0
# define SUPPORT_USB_DRIVE 0
#else
# define HAS_SBC_INTERFACE 1
# define HAS_MASS_STORAGE 1
# define HAS_HIGH_SPEED_SD 1
# define SUPPORT_USB_DRIVE 1
#endif

#define HAS_CPU_TEMP_SENSOR 1
Expand Down Expand Up @@ -201,6 +203,11 @@ constexpr Pin SdSpiCSPins[1] = { PortDPin(22) }; // this one is allocated
constexpr uint32_t ExpectedSdCardSpeed = 25000000;
constexpr IRQn SdhcIRQn = HSMCI_IRQn;

#if SUPPORT_USB_DRIVE
// USB Drives
constexpr size_t NumUsbDrives = 2;
#endif

// DotStar LED control
#define LEDSTRIP_USES_USART 0

Expand Down
2 changes: 1 addition & 1 deletion src/GCodes/GCodes2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1474,7 +1474,7 @@ bool GCodes::HandleMcode(GCodeBuffer& gb, const StringRef& reply) THROWS(GCodeEx
int32_t format = 0;
gb.TryGetIValue('S', format, dummy);
MassStorage::SdCardReturnedInfo returnedInfo;
const MassStorage::InfoResult res = MassStorage::GetCardInfo(slot, returnedInfo);
const MassStorage::InfoResult res = MassStorage::GetVolumeInfo(slot, returnedInfo);
if (format == 2)
{
reply.printf("{\"SDinfo\":{\"slot\":%" PRIu32 ",\"present\":", slot);
Expand Down
9 changes: 7 additions & 2 deletions src/Hardware/SAME70/Devices.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ void EthernetInit() noexcept

#if CORE_USES_TINYUSB

constexpr size_t UsbDeviceTaskStackWords = 200;
constexpr size_t UsbDeviceTaskStackWords = 400;
static Task<UsbDeviceTaskStackWords> usbDeviceTask;

#endif
Expand All @@ -122,8 +122,12 @@ void DeviceInit() noexcept
#endif

#if CORE_USES_TINYUSB
#if SUPPORT_USB_DRIVE && CFG_TUH_ENABLED
CoreUsbInit(NvicPriorityUSB, UsbVBusPin, UsbPowerSwitchPin, UsbModePin, UsbDetectPin);
#else
CoreUsbInit(NvicPriorityUSB);
usbDeviceTask.Create(CoreUsbDeviceTask, "USBD", nullptr, TaskPriority::UsbPriority);
#endif
usbDeviceTask.Create(CoreUsbDeviceTask, "USBHD", nullptr, TaskPriority::UsbPriority);
#endif
}

Expand All @@ -134,6 +138,7 @@ void StopAnalogTask() noexcept
void StopUsbTask() noexcept
{
#if CORE_USES_TINYUSB
CoreUsbStop();
usbDeviceTask.TerminateAndUnlink();
#endif
}
Expand Down
Loading