Merge pull request #12143 from VeijoPesonen/blockdevices_testable

Blockdevice config changes to make it possible to run littlefs filesystem tests
pull/12225/head
Martin Kojtal 2020-01-09 12:04:20 +01:00 committed by GitHub
commit 974baaf199
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 230 additions and 54 deletions

View File

@ -23,6 +23,21 @@
#include "drivers/SPI.h"
#include "drivers/DigitalOut.h"
#ifndef MBED_CONF_DATAFLASH_SPI_MOSI
#define MBED_CONF_DATAFLASH_SPI_MOSI NC
#endif
#ifndef MBED_CONF_DATAFLASH_SPI_MISO
#define MBED_CONF_DATAFLASH_SPI_MISO NC
#endif
#ifndef MBED_CONF_DATAFLASH_SPI_CLK
#define MBED_CONF_DATAFLASH_SPI_CLK NC
#endif
#ifndef MBED_CONF_DATAFLASH_SPI_CS
#define MBED_CONF_DATAFLASH_SPI_CS NC
#endif
#ifndef MBED_CONF_DATAFLASH_SPI_FREQ
#define MBED_CONF_DATAFLASH_SPI_FREQ 40000000
#endif
/** BlockDevice for DataFlash flash devices
*
@ -72,13 +87,14 @@ public:
* @param csel SPI chip select pin
* @param nowp GPIO not-write-protect
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
* @param nwp Not-write-protected pin
*/
DataFlashBlockDevice(PinName mosi,
PinName miso,
PinName sclk,
PinName csel,
DataFlashBlockDevice(PinName mosi = MBED_CONF_DATAFLASH_SPI_MOSI,
PinName miso = MBED_CONF_DATAFLASH_SPI_MISO,
PinName sclk = MBED_CONF_DATAFLASH_SPI_CLK,
PinName csel = MBED_CONF_DATAFLASH_SPI_CS,
int freq = MBED_CONF_DATAFLASH_SPI_FREQ,
PinName nowp = NC);
PinName nwp = NC);
/** Initialize a block device
*

View File

@ -19,6 +19,31 @@
#include "drivers/QSPI.h"
#include "features/storage/blockdevice/BlockDevice.h"
#ifndef MBED_CONF_QSPIF_QSPI_IO0
#define MBED_CONF_QSPIF_QSPI_IO0 NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_IO1
#define MBED_CONF_QSPIF_QSPI_IO1 NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_IO2
#define MBED_CONF_QSPIF_QSPI_IO2 NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_IO3
#define MBED_CONF_QSPIF_QSPI_IO3 NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_SCK
#define MBED_CONF_QSPIF_QSPI_SCK NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_CSN
#define MBED_CONF_QSPIF_QSPI_CSN NC
#endif
#ifndef MBED_CONF_QSPIF_QSPI_POLARITY_MODE
#define MBED_CONF_QSPIF_QSPI_POLARITY_MODE 0
#endif
#ifndef MBED_CONF_QSPIF_QSPI_FREQ
#define MBED_CONF_QSPIF_QSPI_FREQ 40000000
#endif
/** Enum qspif standard error codes
*
* @enum qspif_bd_error
@ -98,10 +123,15 @@ public:
* @param clock_mode specifies the QSPI Clock Polarity mode (QSPIF_POLARITY_MODE_0/QSPIF_POLARITY_MODE_1)
* default value = 0
* @param freq Clock frequency of the QSPI bus (defaults to 40MHz)
*
*/
QSPIFBlockDevice(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName csel,
int clock_mode, int freq = MBED_CONF_QSPIF_QSPI_FREQ);
QSPIFBlockDevice(PinName io0 = MBED_CONF_QSPIF_QSPI_IO0,
PinName io1 = MBED_CONF_QSPIF_QSPI_IO1,
PinName io2 = MBED_CONF_QSPIF_QSPI_IO2,
PinName io3 = MBED_CONF_QSPIF_QSPI_IO3,
PinName sclk = MBED_CONF_QSPIF_QSPI_SCK,
PinName csel = MBED_CONF_QSPIF_QSPI_CSN,
int clock_mode = MBED_CONF_QSPIF_QSPI_POLARITY_MODE,
int freq = MBED_CONF_QSPIF_QSPI_FREQ);
/** Initialize a block device
*

View File

@ -20,6 +20,22 @@
#include "drivers/DigitalOut.h"
#include "features/storage/blockdevice/BlockDevice.h"
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_MOSI
#define MBED_CONF_RSPIF_DRIVER_SPI_MOSI NC
#endif
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_MISO
#define MBED_CONF_RSPIF_DRIVER_SPI_MISO NC
#endif
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_CLK
#define MBED_CONF_RSPIF_DRIVER_SPI_CLK NC
#endif
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_CS
#define MBED_CONF_RSPIF_DRIVER_SPI_CS NC
#endif
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_FREQ
#define MBED_CONF_RSPIF_DRIVER_SPI_FREQ 40000000
#endif
/** Reduced BlockDevice for SPI based flash devices
* *Should only be used by Boot Loader*
*
@ -66,7 +82,11 @@ public:
* @param csel SPI chip select pin
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
*/
SPIFReducedBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName csel, int freq = 40000000);
SPIFReducedBlockDevice(PinName mosi = MBED_CONF_RSPIF_DRIVER_SPI_MOSI,
PinName miso = MBED_CONF_RSPIF_DRIVER_SPI_MISO,
PinName sclk = MBED_CONF_RSPIF_DRIVER_SPI_CLK,
PinName csel = MBED_CONF_RSPIF_DRIVER_SPI_CS,
int freq = MBED_CONF_RSPIF_DRIVER_SPI_FREQ);
/** Initialize a block device
*

View File

@ -1,11 +1,11 @@
{
"name": "rspif-driver",
"config": {
"SPI_MOSI": "NC",
"SPI_MISO": "NC",
"SPI_CLK": "NC",
"SPI_CS": "NC",
"SPI_FREQ": "40000000"
"SPI_MOSI": "SPI_MOSI",
"SPI_MISO": "SPI_MISO",
"SPI_CLK": "SPI_SCK",
"SPI_CS": "SPI_CS",
"SPI_FREQ":"40000000"
},
"target_overrides": {
"K82F": {

View File

@ -29,6 +29,28 @@
#include "platform/PlatformMutex.h"
#include "hal/static_pinmap.h"
#ifndef MBED_CONF_SD_SPI_MOSI
#define MBED_CONF_SD_SPI_MOSI NC
#endif
#ifndef MBED_CONF_SD_SPI_MISO
#define MBED_CONF_SD_SPI_MISO NC
#endif
#ifndef MBED_CONF_SD_SPI_CLK
#define MBED_CONF_SD_SPI_CLK NC
#endif
#ifndef MBED_CONF_SD_SPI_CS
#define MBED_CONF_SD_SPI_CS NC
#endif
#ifndef MBED_CONF_SD_INIT_FREQUENCY
#define MBED_CONF_SD_INIT_FREQUENCY 100000
#endif
#ifndef MBED_CONF_SD_TRX_FREQUENCY
#define MBED_CONF_SD_TRX_FREQUENCY 1000000
#endif
#ifndef MBED_CONF_SD_CRC_ENABLED
#define MBED_CONF_SD_CRC_ENABLED 0
#endif
/** SDBlockDevice class
*
* Access an SD Card using SPI bus
@ -44,7 +66,12 @@ public:
* @param hz Clock speed of the SPI bus (defaults to 1MHz)
* @param crc_on Enable cyclic redundancy check (defaults to disabled)
*/
SDBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName cs, uint64_t hz = 1000000, bool crc_on = 0);
SDBlockDevice(PinName mosi = MBED_CONF_SD_SPI_MOSI,
PinName miso = MBED_CONF_SD_SPI_MISO,
PinName sclk = MBED_CONF_SD_SPI_CLK,
PinName cs = MBED_CONF_SD_SPI_CS,
uint64_t hz = MBED_CONF_SD_TRX_FREQUENCY,
bool crc_on = MBED_CONF_SD_CRC_ENABLED);
/** Creates an SDBlockDevice on a SPI bus specified by pins (using static pin-map)
*
@ -52,7 +79,10 @@ public:
* @param hz Clock speed of the SPI bus (defaults to 1MHz)
* @param crc_on Enable cyclic redundancy check (defaults to disabled)
*/
SDBlockDevice(const spi_pinmap_t &spi_pinmap, PinName cs, uint64_t hz = 1000000, bool crc_on = 0);
SDBlockDevice(const spi_pinmap_t &spi_pinmap,
PinName cs = MBED_CONF_SD_SPI_CS,
uint64_t hz = MBED_CONF_SD_TRX_FREQUENCY,
bool crc_on = MBED_CONF_SD_CRC_ENABLED);
virtual ~SDBlockDevice();

View File

@ -9,7 +9,8 @@
"CMD_TIMEOUT": 10000,
"CMD0_IDLE_STATE_RETRIES": 5,
"INIT_FREQUENCY": 100000,
"CRC_ENABLED": 1,
"TRX_FREQUENCY": 1000000,
"CRC_ENABLED": 0,
"TEST_BUFFER": 8192
},
"target_overrides": {

View File

@ -21,6 +21,22 @@
#include "drivers/DigitalOut.h"
#include "features/storage/blockdevice/BlockDevice.h"
#ifndef MBED_CONF_SPIF_DRIVER_SPI_MOSI
#define MBED_CONF_SPIF_DRIVER_SPI_MOSI NC
#endif
#ifndef MBED_CONF_SPIF_DRIVER_SPI_MISO
#define MBED_CONF_SPIF_DRIVER_SPI_MISO NC
#endif
#ifndef MBED_CONF_SPIF_DRIVER_SPI_CLK
#define MBED_CONF_SPIF_DRIVER_SPI_CLK NC
#endif
#ifndef MBED_CONF_SPIF_DRIVER_SPI_CS
#define MBED_CONF_SPIF_DRIVER_SPI_CS NC
#endif
#ifndef MBED_CONF_SPIF_DRIVER_SPI_FREQ
#define MBED_CONF_SPIF_DRIVER_SPI_FREQ 40000000
#endif
/** Enum spif standard error codes
*
* @enum spif_bd_error
@ -82,8 +98,14 @@ public:
* @param sclk SPI clock pin
* @param csel SPI chip select pin
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
*
*
*/
SPIFBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName csel, int freq = 40000000);
SPIFBlockDevice(PinName mosi = MBED_CONF_SPIF_DRIVER_SPI_MOSI,
PinName miso = MBED_CONF_SPIF_DRIVER_SPI_MISO,
PinName sclk = MBED_CONF_SPIF_DRIVER_SPI_CLK,
PinName csel = MBED_CONF_SPIF_DRIVER_SPI_CS,
int freq = MBED_CONF_SPIF_DRIVER_SPI_FREQ);
/** Initialize a block device
*

View File

@ -64,51 +64,25 @@ MBED_WEAK BlockDevice *BlockDevice::get_default_instance()
{
#if COMPONENT_SPIF
static SPIFBlockDevice default_bd(
MBED_CONF_SPIF_DRIVER_SPI_MOSI,
MBED_CONF_SPIF_DRIVER_SPI_MISO,
MBED_CONF_SPIF_DRIVER_SPI_CLK,
MBED_CONF_SPIF_DRIVER_SPI_CS,
MBED_CONF_SPIF_DRIVER_SPI_FREQ
);
static SPIFBlockDevice default_bd;
return &default_bd;
#elif COMPONENT_RSPIF
static SPIFReducedBlockDevice default_bd(
MBED_CONF_RSPIF_DRIVER_SPI_MOSI,
MBED_CONF_RSPIF_DRIVER_SPI_MISO,
MBED_CONF_RSPIF_DRIVER_SPI_CLK,
MBED_CONF_RSPIF_DRIVER_SPI_CS,
MBED_CONF_RSPIF_DRIVER_SPI_FREQ
);
static SPIFReducedBlockDevice default_bd;
return &default_bd;
#elif COMPONENT_QSPIF
static QSPIFBlockDevice default_bd(
MBED_CONF_QSPIF_QSPI_IO0,
MBED_CONF_QSPIF_QSPI_IO1,
MBED_CONF_QSPIF_QSPI_IO2,
MBED_CONF_QSPIF_QSPI_IO3,
MBED_CONF_QSPIF_QSPI_SCK,
MBED_CONF_QSPIF_QSPI_CSN,
MBED_CONF_QSPIF_QSPI_POLARITY_MODE,
MBED_CONF_QSPIF_QSPI_FREQ
);
static QSPIFBlockDevice default_bd;
return &default_bd;
#elif COMPONENT_DATAFLASH
static DataFlashBlockDevice default_bd(
MBED_CONF_DATAFLASH_SPI_MOSI,
MBED_CONF_DATAFLASH_SPI_MISO,
MBED_CONF_DATAFLASH_SPI_CLK,
MBED_CONF_DATAFLASH_SPI_CS
);
static DataFlashBlockDevice default_bd;
return &default_bd;
@ -120,12 +94,7 @@ MBED_WEAK BlockDevice *BlockDevice::get_default_instance()
MBED_CONF_SD_SPI_CS
);
#else
static SDBlockDevice default_bd(
MBED_CONF_SD_SPI_MOSI,
MBED_CONF_SD_SPI_MISO,
MBED_CONF_SD_SPI_CLK,
MBED_CONF_SD_SPI_CS
);
static SDBlockDevice default_bd;
#endif
return &default_bd;

View File

@ -0,0 +1,19 @@
{
"config": {
"sim-blockdevice": {
"help": "Simulated block device, requires sufficient heap",
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
"value": "HeapBlockDevice"
},
"test-blockdevice": {
"help": "Used blockdevice",
"macro_name": "MBED_TEST_BLOCKDEVICE",
"value": "QSPIFBlockDevice"
},
"test-filesystem": {
"help": "Used filesystem",
"macro_name": "MBED_TEST_FILESYSTEM",
"value": "LittleFileSystem"
}
}
}

View File

@ -0,0 +1,25 @@
{
"config": {
"sim-blockdevice": {
"help": "Simulated block device, requires sufficient heap",
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
"value": "HeapBlockDevice"
},
"test-blockdevice": {
"help": "Used blockdevice",
"macro_name": "MBED_TEST_BLOCKDEVICE",
"value": "SPIFReducedBlockDevice"
},
"test-filesystem": {
"help": "Used filesystem",
"macro_name": "MBED_TEST_FILESYSTEM",
"value": "LittleFileSystem"
}
},
"target_overrides": {
"NRF52840_DK": {
"target.components_remove": ["QSPI", "QSPIF"],
"target.components_add" : ["SPI", "RSPIF"]
}
}
}

View File

@ -0,0 +1,19 @@
{
"config": {
"sim-blockdevice": {
"help": "Simulated block device, requires sufficient heap",
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
"value": "HeapBlockDevice"
},
"test-blockdevice": {
"help": "Used blockdevice",
"macro_name": "MBED_TEST_BLOCKDEVICE",
"value": "SDBlockDevice"
},
"test-filesystem": {
"help": "Used filesystem",
"macro_name": "MBED_TEST_FILESYSTEM",
"value": "LittleFileSystem"
}
}
}

View File

@ -0,0 +1,25 @@
{
"config": {
"sim-blockdevice": {
"help": "Simulated block device, requires sufficient heap",
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
"value": "HeapBlockDevice"
},
"test-blockdevice": {
"help": "Used blockdevice",
"macro_name": "MBED_TEST_BLOCKDEVICE",
"value": "SPIFBlockDevice"
},
"test-filesystem": {
"help": "Used filesystem",
"macro_name": "MBED_TEST_FILESYSTEM",
"value": "LittleFileSystem"
}
},
"target_overrides": {
"NRF52840_DK": {
"target.components_remove": ["QSPI", "QSPIF"],
"target.components_add" : ["SPI", "SPIF"]
}
}
}