From 97a0846af906cde677742bff810fb7965c38fbb7 Mon Sep 17 00:00:00 2001 From: Paul Sokolovsky Date: Sat, 6 Feb 2016 14:48:58 +0200 Subject: [PATCH] stmhal/diskio: Introduce MICROPY_HW_HAS_FLASH setting. To allow to reuse stmhal/diskio for ports which don't have flash but have other storage devices. --- stmhal/boards/CERB40/mpconfigboard.h | 1 + stmhal/boards/ESPRUINO_PICO/mpconfigboard.h | 1 + stmhal/boards/HYDRABUS/mpconfigboard.h | 1 + stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h | 1 + stmhal/boards/PYBLITEV10/mpconfigboard.h | 1 + stmhal/boards/PYBV10/mpconfigboard.h | 1 + stmhal/boards/PYBV11/mpconfigboard.h | 1 + stmhal/boards/PYBV3/mpconfigboard.h | 1 + stmhal/boards/PYBV4/mpconfigboard.h | 1 + stmhal/boards/STM32F411DISC/mpconfigboard.h | 1 + stmhal/boards/STM32F429DISC/mpconfigboard.h | 1 + stmhal/boards/STM32F4DISC/mpconfigboard.h | 1 + stmhal/boards/STM32F7DISC/mpconfigboard.h | 1 + stmhal/diskio.c | 10 +++++++++- 14 files changed, 22 insertions(+), 1 deletion(-) diff --git a/stmhal/boards/CERB40/mpconfigboard.h b/stmhal/boards/CERB40/mpconfigboard.h index ac3560905b..432e0af79b 100644 --- a/stmhal/boards/CERB40/mpconfigboard.h +++ b/stmhal/boards/CERB40/mpconfigboard.h @@ -5,6 +5,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (0) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (0) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/ESPRUINO_PICO/mpconfigboard.h b/stmhal/boards/ESPRUINO_PICO/mpconfigboard.h index e7a338d3e1..0da57b6078 100644 --- a/stmhal/boards/ESPRUINO_PICO/mpconfigboard.h +++ b/stmhal/boards/ESPRUINO_PICO/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (0) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/HYDRABUS/mpconfigboard.h b/stmhal/boards/HYDRABUS/mpconfigboard.h index b63974e806..4fe0874d73 100644 --- a/stmhal/boards/HYDRABUS/mpconfigboard.h +++ b/stmhal/boards/HYDRABUS/mpconfigboard.h @@ -4,6 +4,7 @@ #define MICROPY_HW_MCU_NAME "STM32F4" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h b/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h index a609869272..872e285ae2 100644 --- a/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h +++ b/stmhal/boards/NETDUINO_PLUS_2/mpconfigboard.h @@ -5,6 +5,7 @@ #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) // On the netuino, the sdcard appears to be wired up as a 1-bit // SPI, so the driver needs to be converted to support that before // we can turn this on. diff --git a/stmhal/boards/PYBLITEV10/mpconfigboard.h b/stmhal/boards/PYBLITEV10/mpconfigboard.h index 452d3061ad..97c972095a 100644 --- a/stmhal/boards/PYBLITEV10/mpconfigboard.h +++ b/stmhal/boards/PYBLITEV10/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (1) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/PYBV10/mpconfigboard.h b/stmhal/boards/PYBV10/mpconfigboard.h index f8cb14b518..bc1d848b77 100644 --- a/stmhal/boards/PYBV10/mpconfigboard.h +++ b/stmhal/boards/PYBV10/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (1) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/PYBV11/mpconfigboard.h b/stmhal/boards/PYBV11/mpconfigboard.h index 30a14badec..b3c0983e34 100644 --- a/stmhal/boards/PYBV11/mpconfigboard.h +++ b/stmhal/boards/PYBV11/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (1) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/PYBV3/mpconfigboard.h b/stmhal/boards/PYBV3/mpconfigboard.h index 34c6a596f4..67877fd0b2 100644 --- a/stmhal/boards/PYBV3/mpconfigboard.h +++ b/stmhal/boards/PYBV3/mpconfigboard.h @@ -2,6 +2,7 @@ #define MICROPY_HW_MCU_NAME "STM32F405RG" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (1) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/PYBV4/mpconfigboard.h b/stmhal/boards/PYBV4/mpconfigboard.h index 663564eb98..7c75508ed4 100644 --- a/stmhal/boards/PYBV4/mpconfigboard.h +++ b/stmhal/boards/PYBV4/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (1) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/STM32F411DISC/mpconfigboard.h b/stmhal/boards/STM32F411DISC/mpconfigboard.h index 57ae542df1..3bab1304c0 100644 --- a/stmhal/boards/STM32F411DISC/mpconfigboard.h +++ b/stmhal/boards/STM32F411DISC/mpconfigboard.h @@ -3,6 +3,7 @@ #define MICROPY_PY_SYS_PLATFORM "pyboard" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (0) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/STM32F429DISC/mpconfigboard.h b/stmhal/boards/STM32F429DISC/mpconfigboard.h index 33dd507d51..e6c2fc9ef6 100644 --- a/stmhal/boards/STM32F429DISC/mpconfigboard.h +++ b/stmhal/boards/STM32F429DISC/mpconfigboard.h @@ -4,6 +4,7 @@ #define MICROPY_HW_MCU_NAME "STM32F429" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (0) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/boards/STM32F4DISC/mpconfigboard.h b/stmhal/boards/STM32F4DISC/mpconfigboard.h index edfca36704..4b0745259b 100644 --- a/stmhal/boards/STM32F4DISC/mpconfigboard.h +++ b/stmhal/boards/STM32F4DISC/mpconfigboard.h @@ -4,6 +4,7 @@ #define MICROPY_HW_MCU_NAME "STM32F407" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (0) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (1) diff --git a/stmhal/boards/STM32F7DISC/mpconfigboard.h b/stmhal/boards/STM32F7DISC/mpconfigboard.h index 0bfb54a627..c0e47c3ceb 100644 --- a/stmhal/boards/STM32F7DISC/mpconfigboard.h +++ b/stmhal/boards/STM32F7DISC/mpconfigboard.h @@ -4,6 +4,7 @@ #define MICROPY_HW_MCU_NAME "STM32F746" #define MICROPY_HW_HAS_SWITCH (1) +#define MICROPY_HW_HAS_FLASH (1) #define MICROPY_HW_HAS_SDCARD (1) #define MICROPY_HW_HAS_MMA7660 (0) #define MICROPY_HW_HAS_LIS3DSH (0) diff --git a/stmhal/diskio.c b/stmhal/diskio.c index 6d0a8b40cd..136291d5c2 100644 --- a/stmhal/diskio.c +++ b/stmhal/diskio.c @@ -30,7 +30,7 @@ #include #include -#include STM32_HAL_H +#include "py/mphal.h" #include "py/runtime.h" #include "lib/fatfs/ff.h" /* FatFs lower layer API */ @@ -60,9 +60,11 @@ DSTATUS disk_initialize ( ) { switch (pdrv) { +#if MICROPY_HW_HAS_FLASH case PD_FLASH: storage_init(); return 0; +#endif #if MICROPY_HW_HAS_SDCARD case PD_SDCARD: @@ -130,6 +132,7 @@ DRESULT disk_read ( ) { switch (pdrv) { +#if MICROPY_HW_HAS_FLASH case PD_FLASH: for (int i = 0; i < count; i++) { if (!storage_read_block(buff + i * FLASH_BLOCK_SIZE, sector + i)) { @@ -137,6 +140,7 @@ DRESULT disk_read ( } } return RES_OK; +#endif #if MICROPY_HW_HAS_SDCARD case PD_SDCARD: @@ -173,6 +177,7 @@ DRESULT disk_write ( ) { switch (pdrv) { +#if MICROPY_HW_HAS_FLASH case PD_FLASH: for (int i = 0; i < count; i++) { if (!storage_write_block(buff + i * FLASH_BLOCK_SIZE, sector + i)) { @@ -180,6 +185,7 @@ DRESULT disk_write ( } } return RES_OK; +#endif #if MICROPY_HW_HAS_SDCARD case PD_SDCARD: @@ -221,6 +227,7 @@ DRESULT disk_ioctl ( ) { switch (pdrv) { +#if MICROPY_HW_HAS_FLASH case PD_FLASH: switch (cmd) { case CTRL_SYNC: @@ -232,6 +239,7 @@ DRESULT disk_ioctl ( return RES_OK; } break; +#endif #if MICROPY_HW_HAS_SDCARD case PD_SDCARD: