From fdb698936e6e4cd00537a486a09de9e1b0e8628a Mon Sep 17 00:00:00 2001 From: Victor Mateus Oliveira Date: Wed, 28 Oct 2020 21:41:44 -0300 Subject: [PATCH 1/2] Overwrite DiskIO functions from LPC framework to use Marlin Sd2Card API --- Marlin/src/HAL/LPC1768/HAL.cpp | 110 +++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) diff --git a/Marlin/src/HAL/LPC1768/HAL.cpp b/Marlin/src/HAL/LPC1768/HAL.cpp index 939f1e8a94..fcc1c8d60b 100644 --- a/Marlin/src/HAL/LPC1768/HAL.cpp +++ b/Marlin/src/HAL/LPC1768/HAL.cpp @@ -79,4 +79,114 @@ uint8_t HAL_get_reset_source(void) { return RST_POWER_ON; } +// Overwrite DiskIO functions from LPC framework to use Marlin Sd2Card API. +// TODO: need a define to enable/disable it... maybe a file only for this code! + +#include +#include "../../sd/cardreader.h" + +DRESULT disk_read ( + BYTE drv, /* Physical drive number (0) */ + BYTE *buff, /* Pointer to the data buffer to store read data */ + DWORD sector, /* Start sector number (LBA) */ + UINT count /* Number of sectors to read (1..128) */ +) +{ + auto sd2card = card.getSd2Card(); + if (count == 1) { + sd2card.readBlock(sector, buff); + return RES_OK; + } + + sd2card.readStart(sector); + while (count--) { + sd2card.readData(buff); + buff += 512; + } + sd2card.readStop(); + return RES_OK; +} + +DSTATUS disk_status ( + BYTE drv /* Physical drive number (0) */ +) +{ + return 0; +} + +DSTATUS disk_initialize ( + BYTE drv /* Physical drive number (0) */ +) { + //if already mounted, its already initialized! + if (card.isMounted()) { + return RES_OK; + } + + auto sd2card = card.getSd2Card(); + if (!sd2card.init(SPI_SPEED, SDSS) + #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) + && !sd2card.init(SPI_SPEED, LCD_SDSS) + #endif + ) { + return RES_ERROR; + } + + return RES_OK; +} + +#if _DISKIO_WRITE + DRESULT disk_write ( + BYTE drv, /* Physical drive number (0) */ + const BYTE *buff, /* Ponter to the data to write */ + DWORD sector, /* Start sector number (LBA) */ + UINT count /* Number of sectors to write (1..128) */ + ) + { + auto sd2card = card.getSd2Card(); + if (count == 1) { + sd2card.writeBlock(sector, buff); + return RES_OK; + } + + sd2card.writeStart(sector, count); + while (count--) + { + sd2card.writeData(buff); + buff += 512; + } + sd2card.writeStop(); + return RES_OK; + } +#endif // _DISKIO_WRITE + +#if _DISKIO_IOCTL + +DRESULT disk_ioctl ( + BYTE drv, /* Physical drive number (0) */ + BYTE cmd, /* Control command code */ + void *buff /* Pointer to the conrtol data */ +) +{ + DWORD *dp, st, ed; + + auto sd2card = card.getSd2Card(); + switch (cmd) { + case CTRL_SYNC: /* Wait for end of internal write process of the drive */ + break; + case GET_SECTOR_COUNT: /* Get drive capacity in unit of sector (DWORD) */ + *(int32_t*)buff = sd2card.cardSize(); + break; + case GET_BLOCK_SIZE: /* Get erase block size in unit of sector (DWORD) */ + break; + case CTRL_TRIM: /* Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1) */ + dp = (DWORD*)buff; st = dp[0]; ed = dp[1]; /* Load sector block */ + sd2card.erase(st, ed); + break; + } + + return RES_OK; +} + +#endif // _DISKIO_IOCTL + #endif // TARGET_LPC1768 From d814f97fe527d68a3850f76b0e4f31b6fcc417cb Mon Sep 17 00:00:00 2001 From: Scott Lahteine Date: Thu, 29 Oct 2020 00:46:28 -0500 Subject: [PATCH 2/2] Tweaky cleanup, no fixes --- Marlin/src/HAL/LPC1768/HAL.cpp | 111 +++++++++++++++------------------ 1 file changed, 52 insertions(+), 59 deletions(-) diff --git a/Marlin/src/HAL/LPC1768/HAL.cpp b/Marlin/src/HAL/LPC1768/HAL.cpp index fcc1c8d60b..8045a8e01c 100644 --- a/Marlin/src/HAL/LPC1768/HAL.cpp +++ b/Marlin/src/HAL/LPC1768/HAL.cpp @@ -44,7 +44,8 @@ extern "C" void u8g_10MicroDelay() { extern "C" void u8g_Delay(uint16_t val) { delay(val); } -//************************// + +//************************ // return free heap space int freeMemory() { @@ -57,9 +58,9 @@ int freeMemory() { return result; } -// scan command line for code -// return index into pin map array if found and the pin is valid. -// return dval if not found or not a valid pin. +// Scan command line for code +// Return index into pin map array if found and the pin is valid. +// Return dval if not found or not a valid pin. int16_t PARSED_PIN_INDEX(const char code, const int16_t dval) { const uint16_t val = (uint16_t)parser.intval(code, -1), port = val / 100, pin = val % 100; const int16_t ind = (port < ((NUM_DIGITAL_PINS) >> 5) && pin < 32) ? ((port << 5) | pin) : -2; @@ -86,12 +87,11 @@ uint8_t HAL_get_reset_source(void) { #include "../../sd/cardreader.h" DRESULT disk_read ( - BYTE drv, /* Physical drive number (0) */ - BYTE *buff, /* Pointer to the data buffer to store read data */ - DWORD sector, /* Start sector number (LBA) */ - UINT count /* Number of sectors to read (1..128) */ -) -{ + BYTE drv, // Physical drive number (0) + BYTE *buff, // Pointer to the data buffer to store read data + DWORD sector, // Start sector number (LBA) + UINT count // Number of sectors to read (1..128) +) { auto sd2card = card.getSd2Card(); if (count == 1) { sd2card.readBlock(sector, buff); @@ -107,41 +107,34 @@ DRESULT disk_read ( return RES_OK; } -DSTATUS disk_status ( - BYTE drv /* Physical drive number (0) */ -) -{ +DSTATUS disk_status(BYTE drv) { // Physical drive number (0) return 0; } -DSTATUS disk_initialize ( - BYTE drv /* Physical drive number (0) */ -) { - //if already mounted, its already initialized! - if (card.isMounted()) { - return RES_OK; - } - - auto sd2card = card.getSd2Card(); - if (!sd2card.init(SPI_SPEED, SDSS) - #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) - && !sd2card.init(SPI_SPEED, LCD_SDSS) - #endif - ) { - return RES_ERROR; +DSTATUS disk_initialize(BYTE drv) { // Physical drive number (0) + // If already mounted, it's already initialized! + if (!card.isMounted()) { + auto sd2card = card.getSd2Card(); + if (!sd2card.init(SPI_SPEED, SDSS) + #if defined(LCD_SDSS) && (LCD_SDSS != SDSS) + && !sd2card.init(SPI_SPEED, LCD_SDSS) + #endif + ) { + return RES_ERROR; + } } return RES_OK; } #if _DISKIO_WRITE - DRESULT disk_write ( - BYTE drv, /* Physical drive number (0) */ - const BYTE *buff, /* Ponter to the data to write */ - DWORD sector, /* Start sector number (LBA) */ - UINT count /* Number of sectors to write (1..128) */ - ) - { + + DRESULT disk_write( + BYTE drv, // Physical drive number (0) + const BYTE *buff, // Ponter to the data to write + DWORD sector, // Start sector number (LBA) + UINT count // Number of sectors to write (1..128) + ) { auto sd2card = card.getSd2Card(); if (count == 1) { sd2card.writeBlock(sector, buff); @@ -157,36 +150,36 @@ DSTATUS disk_initialize ( sd2card.writeStop(); return RES_OK; } + #endif // _DISKIO_WRITE #if _DISKIO_IOCTL -DRESULT disk_ioctl ( - BYTE drv, /* Physical drive number (0) */ - BYTE cmd, /* Control command code */ - void *buff /* Pointer to the conrtol data */ -) -{ - DWORD *dp, st, ed; + DRESULT disk_ioctl( + BYTE drv, // Physical drive number (0) + BYTE cmd, // Control command code + void *buff // Pointer to the conrtol data + ) { + DWORD *dp, st, ed; - auto sd2card = card.getSd2Card(); - switch (cmd) { - case CTRL_SYNC: /* Wait for end of internal write process of the drive */ - break; - case GET_SECTOR_COUNT: /* Get drive capacity in unit of sector (DWORD) */ - *(int32_t*)buff = sd2card.cardSize(); - break; - case GET_BLOCK_SIZE: /* Get erase block size in unit of sector (DWORD) */ - break; - case CTRL_TRIM: /* Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1) */ - dp = (DWORD*)buff; st = dp[0]; ed = dp[1]; /* Load sector block */ - sd2card.erase(st, ed); - break; + auto sd2card = card.getSd2Card(); + switch (cmd) { + case CTRL_SYNC: // Wait for end of internal write process of the drive + break; + case GET_SECTOR_COUNT: // Get drive capacity in unit of sector (DWORD) + *(int32_t*)buff = sd2card.cardSize(); + break; + case GET_BLOCK_SIZE: // Get erase block size in unit of sector (DWORD) + break; + case CTRL_TRIM: // Erase a block of sectors (used when _USE_TRIM in ffconf.h is 1) + dp = (DWORD*)buff; st = dp[0]; ed = dp[1]; // Load sector block + sd2card.erase(st, ed); + break; + } + + return RES_OK; } - return RES_OK; -} - #endif // _DISKIO_IOCTL #endif // TARGET_LPC1768