Adding USB MSD implementation to the HAL: Now, when you plug the Native USB port of the Arduino DUE to your PC, it will be detected as a composite USB device: One of the devices is a USB CDC (Serial port over USB) with native USB handshake (no more overflows!!) (set SERIAL_PORT to -1 to use it as main serial port) and also, a MSD (USB Mass Storage Device) will be detected, and the SD card present on the socket will be reflected as a Removable disk on your PC)
Reimplemented SW SPI for DUE in assembler. This allows to reach 12Mhz as SPI Clock and improves 4x the transfer speed to the SD card. This is REQUIRED so access to SD from USB is usable (allows 600Kbytes/second transfer speeds)
Adjusted timings on the ST7290 u8glib so RE-ARM and RAMPS4DUE have no problems when writing to the graphics LCD. This fixes Issue #8787 - Special thanks to Bergerac56 for testinf this out !!!
Backported latest improvements and fixes from the SdFat liibrary to our own version. This includes support for CRC7 validation on commands and also, made sure that even if using software SPI implementations, SD card speed is properly adjusted when transitioning from INITIALIZATION to DATA TRANSFER mode. ALL HALs implement spiInit, even in SW SPI mode, and we NEED this change to improve 25x the transfer speed of the SD card and allow implementations of USB MSD
Some to correct missing files from previous PR to completely avoid
HardwareTimer Class (reduce overhead). Some changes to formatting.
Changes to DMA ADC to work correctly.
Change to F1 sanity check.
Runs in parallel to TravisCI and runs *much* faster on same jobs. Finishes all examples configs in <8 min on cache hit; <10 min on cache miss. Cache miss is triggered on platformio.ini change. I'd suggest move to it entirely, but it is limited to just 1500 min of runtime per month and it isn't clear yet how much Marlin would need so suggest we implement in parallel like this, then observe. If the example builds don't catch issues, and 1500 min turns out to be plenty, we can switch to implimenting standard arsenal of tests in CircleCI and ditch TravisCI to gain speed improvement (although I do like seeing the varied Travis avatars staring at me ;).
I agree that hand-crafted tests would be better, but until we have that, this can't hurt.
After merging, you'll need to add Marlin project to CircleCI at: https://circleci.com
Example results at: https://github.com/fiveangle/Marlin/commits/bf-circleci_config