Skip to content

Commit 974baaf

Browse files
authored
Merge pull request #12143 from VeijoPesonen/blockdevices_testable
Blockdevice config changes to make it possible to run littlefs filesystem tests
2 parents 222d31c + 9763ad3 commit 974baaf

File tree

12 files changed

+230
-54
lines changed

12 files changed

+230
-54
lines changed

components/storage/blockdevice/COMPONENT_DATAFLASH/DataFlashBlockDevice.h

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,21 @@
2323
#include "drivers/SPI.h"
2424
#include "drivers/DigitalOut.h"
2525

26+
#ifndef MBED_CONF_DATAFLASH_SPI_MOSI
27+
#define MBED_CONF_DATAFLASH_SPI_MOSI NC
28+
#endif
29+
#ifndef MBED_CONF_DATAFLASH_SPI_MISO
30+
#define MBED_CONF_DATAFLASH_SPI_MISO NC
31+
#endif
32+
#ifndef MBED_CONF_DATAFLASH_SPI_CLK
33+
#define MBED_CONF_DATAFLASH_SPI_CLK NC
34+
#endif
35+
#ifndef MBED_CONF_DATAFLASH_SPI_CS
36+
#define MBED_CONF_DATAFLASH_SPI_CS NC
37+
#endif
38+
#ifndef MBED_CONF_DATAFLASH_SPI_FREQ
39+
#define MBED_CONF_DATAFLASH_SPI_FREQ 40000000
40+
#endif
2641

2742
/** BlockDevice for DataFlash flash devices
2843
*
@@ -72,13 +87,14 @@ class DataFlashBlockDevice : public mbed::BlockDevice {
7287
* @param csel SPI chip select pin
7388
* @param nowp GPIO not-write-protect
7489
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
90+
* @param nwp Not-write-protected pin
7591
*/
76-
DataFlashBlockDevice(PinName mosi,
77-
PinName miso,
78-
PinName sclk,
79-
PinName csel,
92+
DataFlashBlockDevice(PinName mosi = MBED_CONF_DATAFLASH_SPI_MOSI,
93+
PinName miso = MBED_CONF_DATAFLASH_SPI_MISO,
94+
PinName sclk = MBED_CONF_DATAFLASH_SPI_CLK,
95+
PinName csel = MBED_CONF_DATAFLASH_SPI_CS,
8096
int freq = MBED_CONF_DATAFLASH_SPI_FREQ,
81-
PinName nowp = NC);
97+
PinName nwp = NC);
8298

8399
/** Initialize a block device
84100
*

components/storage/blockdevice/COMPONENT_QSPIF/QSPIFBlockDevice.h

Lines changed: 33 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,31 @@
1919
#include "drivers/QSPI.h"
2020
#include "features/storage/blockdevice/BlockDevice.h"
2121

22+
#ifndef MBED_CONF_QSPIF_QSPI_IO0
23+
#define MBED_CONF_QSPIF_QSPI_IO0 NC
24+
#endif
25+
#ifndef MBED_CONF_QSPIF_QSPI_IO1
26+
#define MBED_CONF_QSPIF_QSPI_IO1 NC
27+
#endif
28+
#ifndef MBED_CONF_QSPIF_QSPI_IO2
29+
#define MBED_CONF_QSPIF_QSPI_IO2 NC
30+
#endif
31+
#ifndef MBED_CONF_QSPIF_QSPI_IO3
32+
#define MBED_CONF_QSPIF_QSPI_IO3 NC
33+
#endif
34+
#ifndef MBED_CONF_QSPIF_QSPI_SCK
35+
#define MBED_CONF_QSPIF_QSPI_SCK NC
36+
#endif
37+
#ifndef MBED_CONF_QSPIF_QSPI_CSN
38+
#define MBED_CONF_QSPIF_QSPI_CSN NC
39+
#endif
40+
#ifndef MBED_CONF_QSPIF_QSPI_POLARITY_MODE
41+
#define MBED_CONF_QSPIF_QSPI_POLARITY_MODE 0
42+
#endif
43+
#ifndef MBED_CONF_QSPIF_QSPI_FREQ
44+
#define MBED_CONF_QSPIF_QSPI_FREQ 40000000
45+
#endif
46+
2247
/** Enum qspif standard error codes
2348
*
2449
* @enum qspif_bd_error
@@ -98,10 +123,15 @@ class QSPIFBlockDevice : public mbed::BlockDevice {
98123
* @param clock_mode specifies the QSPI Clock Polarity mode (QSPIF_POLARITY_MODE_0/QSPIF_POLARITY_MODE_1)
99124
* default value = 0
100125
* @param freq Clock frequency of the QSPI bus (defaults to 40MHz)
101-
*
102126
*/
103-
QSPIFBlockDevice(PinName io0, PinName io1, PinName io2, PinName io3, PinName sclk, PinName csel,
104-
int clock_mode, int freq = MBED_CONF_QSPIF_QSPI_FREQ);
127+
QSPIFBlockDevice(PinName io0 = MBED_CONF_QSPIF_QSPI_IO0,
128+
PinName io1 = MBED_CONF_QSPIF_QSPI_IO1,
129+
PinName io2 = MBED_CONF_QSPIF_QSPI_IO2,
130+
PinName io3 = MBED_CONF_QSPIF_QSPI_IO3,
131+
PinName sclk = MBED_CONF_QSPIF_QSPI_SCK,
132+
PinName csel = MBED_CONF_QSPIF_QSPI_CSN,
133+
int clock_mode = MBED_CONF_QSPIF_QSPI_POLARITY_MODE,
134+
int freq = MBED_CONF_QSPIF_QSPI_FREQ);
105135

106136
/** Initialize a block device
107137
*

components/storage/blockdevice/COMPONENT_RSPIF/SPIFReducedBlockDevice.h

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,22 @@
2020
#include "drivers/DigitalOut.h"
2121
#include "features/storage/blockdevice/BlockDevice.h"
2222

23+
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_MOSI
24+
#define MBED_CONF_RSPIF_DRIVER_SPI_MOSI NC
25+
#endif
26+
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_MISO
27+
#define MBED_CONF_RSPIF_DRIVER_SPI_MISO NC
28+
#endif
29+
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_CLK
30+
#define MBED_CONF_RSPIF_DRIVER_SPI_CLK NC
31+
#endif
32+
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_CS
33+
#define MBED_CONF_RSPIF_DRIVER_SPI_CS NC
34+
#endif
35+
#ifndef MBED_CONF_RSPIF_DRIVER_SPI_FREQ
36+
#define MBED_CONF_RSPIF_DRIVER_SPI_FREQ 40000000
37+
#endif
38+
2339
/** Reduced BlockDevice for SPI based flash devices
2440
* *Should only be used by Boot Loader*
2541
*
@@ -66,7 +82,11 @@ class SPIFReducedBlockDevice : public mbed::BlockDevice {
6682
* @param csel SPI chip select pin
6783
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
6884
*/
69-
SPIFReducedBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName csel, int freq = 40000000);
85+
SPIFReducedBlockDevice(PinName mosi = MBED_CONF_RSPIF_DRIVER_SPI_MOSI,
86+
PinName miso = MBED_CONF_RSPIF_DRIVER_SPI_MISO,
87+
PinName sclk = MBED_CONF_RSPIF_DRIVER_SPI_CLK,
88+
PinName csel = MBED_CONF_RSPIF_DRIVER_SPI_CS,
89+
int freq = MBED_CONF_RSPIF_DRIVER_SPI_FREQ);
7090

7191
/** Initialize a block device
7292
*

components/storage/blockdevice/COMPONENT_RSPIF/mbed_lib.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
{
22
"name": "rspif-driver",
33
"config": {
4-
"SPI_MOSI": "NC",
5-
"SPI_MISO": "NC",
6-
"SPI_CLK": "NC",
7-
"SPI_CS": "NC",
8-
"SPI_FREQ": "40000000"
4+
"SPI_MOSI": "SPI_MOSI",
5+
"SPI_MISO": "SPI_MISO",
6+
"SPI_CLK": "SPI_SCK",
7+
"SPI_CS": "SPI_CS",
8+
"SPI_FREQ":"40000000"
99
},
1010
"target_overrides": {
1111
"K82F": {

components/storage/blockdevice/COMPONENT_SD/SDBlockDevice.h

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,28 @@
2929
#include "platform/PlatformMutex.h"
3030
#include "hal/static_pinmap.h"
3131

32+
#ifndef MBED_CONF_SD_SPI_MOSI
33+
#define MBED_CONF_SD_SPI_MOSI NC
34+
#endif
35+
#ifndef MBED_CONF_SD_SPI_MISO
36+
#define MBED_CONF_SD_SPI_MISO NC
37+
#endif
38+
#ifndef MBED_CONF_SD_SPI_CLK
39+
#define MBED_CONF_SD_SPI_CLK NC
40+
#endif
41+
#ifndef MBED_CONF_SD_SPI_CS
42+
#define MBED_CONF_SD_SPI_CS NC
43+
#endif
44+
#ifndef MBED_CONF_SD_INIT_FREQUENCY
45+
#define MBED_CONF_SD_INIT_FREQUENCY 100000
46+
#endif
47+
#ifndef MBED_CONF_SD_TRX_FREQUENCY
48+
#define MBED_CONF_SD_TRX_FREQUENCY 1000000
49+
#endif
50+
#ifndef MBED_CONF_SD_CRC_ENABLED
51+
#define MBED_CONF_SD_CRC_ENABLED 0
52+
#endif
53+
3254
/** SDBlockDevice class
3355
*
3456
* Access an SD Card using SPI bus
@@ -44,15 +66,23 @@ class SDBlockDevice : public mbed::BlockDevice {
4466
* @param hz Clock speed of the SPI bus (defaults to 1MHz)
4567
* @param crc_on Enable cyclic redundancy check (defaults to disabled)
4668
*/
47-
SDBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName cs, uint64_t hz = 1000000, bool crc_on = 0);
69+
SDBlockDevice(PinName mosi = MBED_CONF_SD_SPI_MOSI,
70+
PinName miso = MBED_CONF_SD_SPI_MISO,
71+
PinName sclk = MBED_CONF_SD_SPI_CLK,
72+
PinName cs = MBED_CONF_SD_SPI_CS,
73+
uint64_t hz = MBED_CONF_SD_TRX_FREQUENCY,
74+
bool crc_on = MBED_CONF_SD_CRC_ENABLED);
4875

4976
/** Creates an SDBlockDevice on a SPI bus specified by pins (using static pin-map)
5077
*
5178
* @param spi_pinmap Static SPI pin-map
5279
* @param hz Clock speed of the SPI bus (defaults to 1MHz)
5380
* @param crc_on Enable cyclic redundancy check (defaults to disabled)
5481
*/
55-
SDBlockDevice(const spi_pinmap_t &spi_pinmap, PinName cs, uint64_t hz = 1000000, bool crc_on = 0);
82+
SDBlockDevice(const spi_pinmap_t &spi_pinmap,
83+
PinName cs = MBED_CONF_SD_SPI_CS,
84+
uint64_t hz = MBED_CONF_SD_TRX_FREQUENCY,
85+
bool crc_on = MBED_CONF_SD_CRC_ENABLED);
5686

5787
virtual ~SDBlockDevice();
5888

components/storage/blockdevice/COMPONENT_SD/mbed_lib.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@
99
"CMD_TIMEOUT": 10000,
1010
"CMD0_IDLE_STATE_RETRIES": 5,
1111
"INIT_FREQUENCY": 100000,
12-
"CRC_ENABLED": 1,
12+
"TRX_FREQUENCY": 1000000,
13+
"CRC_ENABLED": 0,
1314
"TEST_BUFFER": 8192
1415
},
1516
"target_overrides": {

components/storage/blockdevice/COMPONENT_SPIF/SPIFBlockDevice.h

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,22 @@
2121
#include "drivers/DigitalOut.h"
2222
#include "features/storage/blockdevice/BlockDevice.h"
2323

24+
#ifndef MBED_CONF_SPIF_DRIVER_SPI_MOSI
25+
#define MBED_CONF_SPIF_DRIVER_SPI_MOSI NC
26+
#endif
27+
#ifndef MBED_CONF_SPIF_DRIVER_SPI_MISO
28+
#define MBED_CONF_SPIF_DRIVER_SPI_MISO NC
29+
#endif
30+
#ifndef MBED_CONF_SPIF_DRIVER_SPI_CLK
31+
#define MBED_CONF_SPIF_DRIVER_SPI_CLK NC
32+
#endif
33+
#ifndef MBED_CONF_SPIF_DRIVER_SPI_CS
34+
#define MBED_CONF_SPIF_DRIVER_SPI_CS NC
35+
#endif
36+
#ifndef MBED_CONF_SPIF_DRIVER_SPI_FREQ
37+
#define MBED_CONF_SPIF_DRIVER_SPI_FREQ 40000000
38+
#endif
39+
2440
/** Enum spif standard error codes
2541
*
2642
* @enum spif_bd_error
@@ -82,8 +98,14 @@ class SPIFBlockDevice : public mbed::BlockDevice {
8298
* @param sclk SPI clock pin
8399
* @param csel SPI chip select pin
84100
* @param freq Clock speed of the SPI bus (defaults to 40MHz)
101+
*
102+
*
85103
*/
86-
SPIFBlockDevice(PinName mosi, PinName miso, PinName sclk, PinName csel, int freq = 40000000);
104+
SPIFBlockDevice(PinName mosi = MBED_CONF_SPIF_DRIVER_SPI_MOSI,
105+
PinName miso = MBED_CONF_SPIF_DRIVER_SPI_MISO,
106+
PinName sclk = MBED_CONF_SPIF_DRIVER_SPI_CLK,
107+
PinName csel = MBED_CONF_SPIF_DRIVER_SPI_CS,
108+
int freq = MBED_CONF_SPIF_DRIVER_SPI_FREQ);
87109

88110
/** Initialize a block device
89111
*

features/storage/system_storage/SystemStorage.cpp

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -64,51 +64,25 @@ MBED_WEAK BlockDevice *BlockDevice::get_default_instance()
6464
{
6565
#if COMPONENT_SPIF
6666

67-
static SPIFBlockDevice default_bd(
68-
MBED_CONF_SPIF_DRIVER_SPI_MOSI,
69-
MBED_CONF_SPIF_DRIVER_SPI_MISO,
70-
MBED_CONF_SPIF_DRIVER_SPI_CLK,
71-
MBED_CONF_SPIF_DRIVER_SPI_CS,
72-
MBED_CONF_SPIF_DRIVER_SPI_FREQ
73-
);
67+
static SPIFBlockDevice default_bd;
7468

7569
return &default_bd;
7670

7771
#elif COMPONENT_RSPIF
7872

79-
static SPIFReducedBlockDevice default_bd(
80-
MBED_CONF_RSPIF_DRIVER_SPI_MOSI,
81-
MBED_CONF_RSPIF_DRIVER_SPI_MISO,
82-
MBED_CONF_RSPIF_DRIVER_SPI_CLK,
83-
MBED_CONF_RSPIF_DRIVER_SPI_CS,
84-
MBED_CONF_RSPIF_DRIVER_SPI_FREQ
85-
);
73+
static SPIFReducedBlockDevice default_bd;
8674

8775
return &default_bd;
8876

8977
#elif COMPONENT_QSPIF
9078

91-
static QSPIFBlockDevice default_bd(
92-
MBED_CONF_QSPIF_QSPI_IO0,
93-
MBED_CONF_QSPIF_QSPI_IO1,
94-
MBED_CONF_QSPIF_QSPI_IO2,
95-
MBED_CONF_QSPIF_QSPI_IO3,
96-
MBED_CONF_QSPIF_QSPI_SCK,
97-
MBED_CONF_QSPIF_QSPI_CSN,
98-
MBED_CONF_QSPIF_QSPI_POLARITY_MODE,
99-
MBED_CONF_QSPIF_QSPI_FREQ
100-
);
79+
static QSPIFBlockDevice default_bd;
10180

10281
return &default_bd;
10382

10483
#elif COMPONENT_DATAFLASH
10584

106-
static DataFlashBlockDevice default_bd(
107-
MBED_CONF_DATAFLASH_SPI_MOSI,
108-
MBED_CONF_DATAFLASH_SPI_MISO,
109-
MBED_CONF_DATAFLASH_SPI_CLK,
110-
MBED_CONF_DATAFLASH_SPI_CS
111-
);
85+
static DataFlashBlockDevice default_bd;
11286

11387
return &default_bd;
11488

@@ -120,12 +94,7 @@ MBED_WEAK BlockDevice *BlockDevice::get_default_instance()
12094
MBED_CONF_SD_SPI_CS
12195
);
12296
#else
123-
static SDBlockDevice default_bd(
124-
MBED_CONF_SD_SPI_MOSI,
125-
MBED_CONF_SD_SPI_MISO,
126-
MBED_CONF_SD_SPI_CLK,
127-
MBED_CONF_SD_SPI_CS
128-
);
97+
static SDBlockDevice default_bd;
12998
#endif
13099

131100
return &default_bd;
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"config": {
3+
"sim-blockdevice": {
4+
"help": "Simulated block device, requires sufficient heap",
5+
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
6+
"value": "HeapBlockDevice"
7+
},
8+
"test-blockdevice": {
9+
"help": "Used blockdevice",
10+
"macro_name": "MBED_TEST_BLOCKDEVICE",
11+
"value": "QSPIFBlockDevice"
12+
},
13+
"test-filesystem": {
14+
"help": "Used filesystem",
15+
"macro_name": "MBED_TEST_FILESYSTEM",
16+
"value": "LittleFileSystem"
17+
}
18+
}
19+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"config": {
3+
"sim-blockdevice": {
4+
"help": "Simulated block device, requires sufficient heap",
5+
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
6+
"value": "HeapBlockDevice"
7+
},
8+
"test-blockdevice": {
9+
"help": "Used blockdevice",
10+
"macro_name": "MBED_TEST_BLOCKDEVICE",
11+
"value": "SPIFReducedBlockDevice"
12+
},
13+
"test-filesystem": {
14+
"help": "Used filesystem",
15+
"macro_name": "MBED_TEST_FILESYSTEM",
16+
"value": "LittleFileSystem"
17+
}
18+
},
19+
"target_overrides": {
20+
"NRF52840_DK": {
21+
"target.components_remove": ["QSPI", "QSPIF"],
22+
"target.components_add" : ["SPI", "RSPIF"]
23+
}
24+
}
25+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{
2+
"config": {
3+
"sim-blockdevice": {
4+
"help": "Simulated block device, requires sufficient heap",
5+
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
6+
"value": "HeapBlockDevice"
7+
},
8+
"test-blockdevice": {
9+
"help": "Used blockdevice",
10+
"macro_name": "MBED_TEST_BLOCKDEVICE",
11+
"value": "SDBlockDevice"
12+
},
13+
"test-filesystem": {
14+
"help": "Used filesystem",
15+
"macro_name": "MBED_TEST_FILESYSTEM",
16+
"value": "LittleFileSystem"
17+
}
18+
}
19+
}

0 commit comments

Comments
 (0)