summaryrefslogtreecommitdiff
path: root/software
diff options
context:
space:
mode:
authorChristian Pointner <equinox@mur.at>2014-04-09 04:22:00 +0200
committerChristian Pointner <equinox@mur.at>2014-04-09 04:22:00 +0200
commita324fa64bf9c1070d37b2089973e644cecbd240f (patch)
tree0ff08df4dd6f484645a5f8c476de1a1fd7613214 /software
parentadded gitingore (diff)
added SDIO for F405 and blockstore
Diffstat (limited to 'software')
-rw-r--r--software/mpu/Makefile1
-rw-r--r--software/mpu/blockstore.c70
-rw-r--r--software/mpu/blockstore.h39
-rw-r--r--software/mpu/board-F405/board.c28
-rw-r--r--software/mpu/board-F405/board.h128
-rw-r--r--software/mpu/halconf.h16
-rw-r--r--software/mpu/main.c3
7 files changed, 220 insertions, 65 deletions
diff --git a/software/mpu/Makefile b/software/mpu/Makefile
index a1393b1..528b4ea 100644
--- a/software/mpu/Makefile
+++ b/software/mpu/Makefile
@@ -109,6 +109,7 @@ CSRC = $(PORTSRC) \
heartbeat.c \
usb-cdc-shell.c \
ihu.c \
+ blockstore.c \
main.c
# C++ sources that can be compiled in ARM or THUMB mode depending on the global
diff --git a/software/mpu/blockstore.c b/software/mpu/blockstore.c
new file mode 100644
index 0000000..fc22321
--- /dev/null
+++ b/software/mpu/blockstore.c
@@ -0,0 +1,70 @@
+/*
+ *
+ * mur.sat
+ *
+ * Somewhen in the year 2012, mur.at will have a nano satellite launched
+ * into a low earth orbit (310 km above the surface of our planet). The
+ * satellite itself is a TubeSat personal satellite kit, developed and
+ * launched by interorbital systems. mur.sat is a joint venture of mur.at,
+ * ESC im Labor and realraum.
+ *
+ * Please visit the project hompage at sat.mur.at for further information.
+ *
+ *
+ * Copyright (C) 2014 Christian Pointner <equinox@mur.at>
+ *
+ * This file is part of mur.sat.
+ *
+ * mur.sat is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * mur.sat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with mur.sat. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#include "ch.h"
+#include "hal.h"
+
+#include "blockstore.h"
+
+static Thread *tpBlockstore;
+static WORKING_AREA(waBlockstore, 128);
+static msg_t blockstoreRun(void *arg)
+{
+ BaseBlockDevice *bd = arg;
+ chRegSetThreadName("blockstore");
+
+ for(;;) {
+ blkstate_t s = blkGetDriverState(bd);
+ if(BLK_STOP == s || BLK_UNINIT) {
+ return 0;
+ }
+ // DO something
+ chThdSleepMilliseconds(100);
+ }
+ return 0;
+}
+
+static const SDCConfig sdccfg = {
+ 0
+};
+
+void blockstoreInit(void)
+{
+ sdcStart(&SDCD1, &sdccfg);
+ tpBlockstore = chThdCreateStatic(waBlockstore, sizeof(waBlockstore), NORMALPRIO, blockstoreRun, &SDCD1);
+}
+
+void blockstoreStop(void)
+{
+ sdcStop(&SDCD1); // we probably shouldn't do that without checking the state...
+ chThdWait(tpBlockstore);
+}
diff --git a/software/mpu/blockstore.h b/software/mpu/blockstore.h
new file mode 100644
index 0000000..9dc4230
--- /dev/null
+++ b/software/mpu/blockstore.h
@@ -0,0 +1,39 @@
+/*
+ *
+ * mur.sat
+ *
+ * Somewhen in the year 2012, mur.at will have a nano satellite launched
+ * into a low earth orbit (310 km above the surface of our planet). The
+ * satellite itself is a TubeSat personal satellite kit, developed and
+ * launched by interorbital systems. mur.sat is a joint venture of mur.at,
+ * ESC im Labor and realraum.
+ *
+ * Please visit the project hompage at sat.mur.at for further information.
+ *
+ *
+ * Copyright (C) 2014 Christian Pointner <equinox@mur.at>
+ *
+ * This file is part of mur.sat.
+ *
+ * mur.sat is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * any later version.
+ *
+ * mur.sat is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with mur.sat. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+#ifndef MURSAT_blockstore_h_INCLUDED
+#define MURSAT_blockstore_h_INCLUDED
+
+void blockstoreInit(void);
+void blockstoreStop(void);
+
+#endif
diff --git a/software/mpu/board-F405/board.c b/software/mpu/board-F405/board.c
index e66dd1c..0813bb6 100644
--- a/software/mpu/board-F405/board.c
+++ b/software/mpu/board-F405/board.c
@@ -61,3 +61,31 @@ void __early_init(void) {
*/
void boardInit(void) {
}
+
+#if HAL_USE_SDC
+/**
+ * @brief Insertion monitor function.
+ *
+ * @param[in] sdcp pointer to the @p SDCDriver object
+ *
+ * @notapi
+ */
+bool_t sdc_lld_is_card_inserted(SDCDriver *sdcp) {
+
+ (void)sdcp;
+ return !palReadPad(GPIOA, GPIOA_SDIO_CD);
+}
+
+/**
+ * @brief Protection detection.
+ *
+ * @param[in] sdcp pointer to the @p SDCDriver object
+ *
+ * @notapi
+ */
+bool_t sdc_lld_is_write_protected(SDCDriver *sdcp) {
+
+ (void)sdcp;
+ return !palReadPad(GPIOA, GPIOA_SDIO_WP);
+}
+#endif /* HAL_USE_SDC */
diff --git a/software/mpu/board-F405/board.h b/software/mpu/board-F405/board.h
index 9f2017c..f056102 100644
--- a/software/mpu/board-F405/board.h
+++ b/software/mpu/board-F405/board.h
@@ -67,8 +67,8 @@
#define GPIOA_USB_DM 11
#define GPIOA_USB_DP 12
#define GPIOA_USB_DISC 13
-#define GPIOA_PIN14 14
-#define GPIOA_PIN15 15
+#define GPIOA_SDIO_WP 14
+#define GPIOA_SDIO_CD 15
#define GPIOB_PIN0 0
#define GPIOB_PIN1 1
@@ -95,18 +95,18 @@
#define GPIOC_PIN5 5
#define GPIOC_PIN6 6
#define GPIOC_PIN7 7
-#define GPIOC_PIN8 8
-#define GPIOC_PIN9 9
-#define GPIOC_PIN10 10
-#define GPIOC_PIN11 11
-#define GPIOC_PIN12 12
+#define GPIOC_SDIO_D0 8
+#define GPIOC_SDIO_D1 9
+#define GPIOC_SDIO_D2 10
+#define GPIOC_SDIO_D3 11
+#define GPIOC_SDIO_CK 12
#define GPIOC_PIN13 13
#define GPIOC_PIN14 14
#define GPIOC_PIN15 15
#define GPIOD_PIN0 0
#define GPIOD_PIN1 1
-#define GPIOD_PIN2 2
+#define GPIOD_SDIO_CMD 2
#define GPIOD_PIN3 3
#define GPIOD_PIN4 4
#define GPIOD_PIN5 5
@@ -245,8 +245,8 @@
* PA11 - USB_DM (alternate 10).
* PA12 - USB_DP (alternate 10).
* PA13 - USB_DISC (output pushpull maximum).
- * PA14 - PIN14 (input pullup).
- * PA15 - PIN15 (input pullup).
+ * PA14 - SDIO_WP (input pullup).
+ * PA15 - SDIO_CD (input pullup).
*/
#define VAL_GPIOA_MODER (PIN_MODE_INPUT(GPIOA_PIN0) | \
PIN_MODE_INPUT(GPIOA_PIN1) | \
@@ -262,8 +262,8 @@
PIN_MODE_ALTERNATE(GPIOA_USB_DM) | \
PIN_MODE_ALTERNATE(GPIOA_USB_DP) | \
PIN_MODE_OUTPUT(GPIOA_USB_DISC) | \
- PIN_MODE_INPUT(GPIOA_PIN14) | \
- PIN_MODE_INPUT(GPIOA_PIN15))
+ PIN_MODE_INPUT(GPIOA_SDIO_WP) | \
+ PIN_MODE_INPUT(GPIOA_SDIO_CD))
#define VAL_GPIOA_OTYPER (PIN_OTYPE_PUSHPULL(GPIOA_PIN0) | \
PIN_OTYPE_PUSHPULL(GPIOA_PIN1) | \
PIN_OTYPE_PUSHPULL(GPIOA_PIN2) | \
@@ -278,8 +278,8 @@
PIN_OTYPE_PUSHPULL(GPIOA_USB_DM) | \
PIN_OTYPE_PUSHPULL(GPIOA_USB_DP) | \
PIN_OTYPE_PUSHPULL(GPIOA_USB_DISC) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN14) | \
- PIN_OTYPE_PUSHPULL(GPIOA_PIN15))
+ PIN_OTYPE_PUSHPULL(GPIOA_SDIO_WP) | \
+ PIN_OTYPE_PUSHPULL(GPIOA_SDIO_CD))
#define VAL_GPIOA_OSPEEDR (PIN_OSPEED_100M(GPIOA_PIN0) | \
PIN_OSPEED_100M(GPIOA_PIN1) | \
PIN_OSPEED_100M(GPIOA_PIN2) | \
@@ -294,8 +294,8 @@
PIN_OSPEED_100M(GPIOA_USB_DM) | \
PIN_OSPEED_100M(GPIOA_USB_DP) | \
PIN_OSPEED_100M(GPIOA_USB_DISC) | \
- PIN_OSPEED_100M(GPIOA_PIN14) | \
- PIN_OSPEED_100M(GPIOA_PIN15))
+ PIN_OSPEED_100M(GPIOA_SDIO_WP) | \
+ PIN_OSPEED_100M(GPIOA_SDIO_CD))
#define VAL_GPIOA_PUPDR (PIN_PUPDR_PULLUP(GPIOA_PIN0) | \
PIN_PUPDR_PULLUP(GPIOA_PIN1) | \
PIN_PUPDR_PULLUP(GPIOA_PIN2) | \
@@ -309,8 +309,8 @@
PIN_PUPDR_FLOATING(GPIOA_USB_DM) | \
PIN_PUPDR_FLOATING(GPIOA_USB_DP) | \
PIN_PUPDR_FLOATING(GPIOA_USB_DISC) | \
- PIN_PUPDR_PULLDOWN(GPIOA_PIN14) | \
- PIN_PUPDR_FLOATING(GPIOA_PIN15))
+ PIN_PUPDR_PULLUP(GPIOA_SDIO_WP) | \
+ PIN_PUPDR_PULLUP(GPIOA_SDIO_CD))
#define VAL_GPIOA_ODR (PIN_ODR_HIGH(GPIOA_PIN0) | \
PIN_ODR_HIGH(GPIOA_PIN1) | \
PIN_ODR_HIGH(GPIOA_PIN2) | \
@@ -325,8 +325,8 @@
PIN_ODR_HIGH(GPIOA_USB_DM) | \
PIN_ODR_HIGH(GPIOA_USB_DP) | \
PIN_ODR_HIGH(GPIOA_USB_DISC) | \
- PIN_ODR_HIGH(GPIOA_PIN14) | \
- PIN_ODR_HIGH(GPIOA_PIN15))
+ PIN_ODR_HIGH(GPIOA_SDIO_WP) | \
+ PIN_ODR_HIGH(GPIOA_SDIO_CD))
#define VAL_GPIOA_AFRL (PIN_AFIO_AF(GPIOA_PIN0, 0) | \
PIN_AFIO_AF(GPIOA_PIN1, 0) | \
PIN_AFIO_AF(GPIOA_PIN2, 7) | \
@@ -341,8 +341,8 @@
PIN_AFIO_AF(GPIOA_USB_DM, 10) | \
PIN_AFIO_AF(GPIOA_USB_DP, 10) | \
PIN_AFIO_AF(GPIOA_USB_DISC, 0) | \
- PIN_AFIO_AF(GPIOA_PIN14, 0) | \
- PIN_AFIO_AF(GPIOA_PIN15, 0))
+ PIN_AFIO_AF(GPIOA_SDIO_WP, 0) | \
+ PIN_AFIO_AF(GPIOA_SDIO_CD, 0))
/*
* GPIOB setup:
@@ -473,11 +473,11 @@
* PC5 - PIN5 (input pullup).
* PC6 - PIN6 (input pullup).
* PC7 - PIN7 (input pullup).
- * PC8 - PIN8 (input pullup).
- * PC9 - PIN9 (input pullup).
- * PC10 - PIN10 (input pullup).
- * PC11 - PIN11 (input pullup).
- * PC12 - PIN12 (input pullup).
+ * PC8 - SDIO_D0 (alternate function 12).
+ * PC9 - SDIO_D1 (alternate function 12).
+ * PC10 - SDIO_D2 (alternate function 12).
+ * PC11 - SDIO_D3 (alternate function 12).
+ * PC12 - SDIO_CK (alternate function 12).
* PC13 - PIN13 (input pullup).
* PC14 - PIN14 (input pullup).
* PC15 - PIN15 (input pullup).
@@ -490,11 +490,11 @@
PIN_MODE_INPUT(GPIOC_PIN5) | \
PIN_MODE_INPUT(GPIOC_PIN6) | \
PIN_MODE_INPUT(GPIOC_PIN7) | \
- PIN_MODE_INPUT(GPIOC_PIN8) | \
- PIN_MODE_INPUT(GPIOC_PIN9) | \
- PIN_MODE_INPUT(GPIOC_PIN10) | \
- PIN_MODE_INPUT(GPIOC_PIN11) | \
- PIN_MODE_INPUT(GPIOC_PIN12) | \
+ PIN_MODE_ALTERNATE(GPIOC_SDIO_D0) | \
+ PIN_MODE_ALTERNATE(GPIOC_SDIO_D1) | \
+ PIN_MODE_ALTERNATE(GPIOC_SDIO_D2) | \
+ PIN_MODE_ALTERNATE(GPIOC_SDIO_D3) | \
+ PIN_MODE_ALTERNATE(GPIOC_SDIO_CK) | \
PIN_MODE_INPUT(GPIOC_PIN13) | \
PIN_MODE_INPUT(GPIOC_PIN14) | \
PIN_MODE_INPUT(GPIOC_PIN15))
@@ -506,11 +506,11 @@
PIN_OTYPE_PUSHPULL(GPIOC_PIN5) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN6) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN7) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN8) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN9) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN10) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN11) | \
- PIN_OTYPE_PUSHPULL(GPIOC_PIN12) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_SDIO_D0) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_SDIO_D1) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_SDIO_D2) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_SDIO_D3) | \
+ PIN_OTYPE_PUSHPULL(GPIOC_SDIO_CK) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN13) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN14) | \
PIN_OTYPE_PUSHPULL(GPIOC_PIN15))
@@ -522,11 +522,11 @@
PIN_OSPEED_100M(GPIOC_PIN5) | \
PIN_OSPEED_100M(GPIOC_PIN6) | \
PIN_OSPEED_100M(GPIOC_PIN7) | \
- PIN_OSPEED_100M(GPIOC_PIN8) | \
- PIN_OSPEED_100M(GPIOC_PIN9) | \
- PIN_OSPEED_100M(GPIOC_PIN10) | \
- PIN_OSPEED_100M(GPIOC_PIN11) | \
- PIN_OSPEED_100M(GPIOC_PIN12) | \
+ PIN_OSPEED_100M(GPIOC_SDIO_D0) | \
+ PIN_OSPEED_100M(GPIOC_SDIO_D1) | \
+ PIN_OSPEED_100M(GPIOC_SDIO_D2) | \
+ PIN_OSPEED_100M(GPIOC_SDIO_D3) | \
+ PIN_OSPEED_100M(GPIOC_SDIO_CK) | \
PIN_OSPEED_100M(GPIOC_PIN13) | \
PIN_OSPEED_100M(GPIOC_PIN14) | \
PIN_OSPEED_100M(GPIOC_PIN15))
@@ -538,11 +538,11 @@
PIN_PUPDR_PULLUP(GPIOC_PIN5) | \
PIN_PUPDR_PULLUP(GPIOC_PIN6) | \
PIN_PUPDR_PULLUP(GPIOC_PIN7) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN8) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN9) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN10) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN11) | \
- PIN_PUPDR_PULLUP(GPIOC_PIN12) | \
+ PIN_PUPDR_PULLUP(GPIOC_SDIO_D0) | \
+ PIN_PUPDR_PULLUP(GPIOC_SDIO_D1) | \
+ PIN_PUPDR_PULLUP(GPIOC_SDIO_D2) | \
+ PIN_PUPDR_PULLUP(GPIOC_SDIO_D3) | \
+ PIN_PUPDR_PULLUP(GPIOC_SDIO_CK) | \
PIN_PUPDR_PULLUP(GPIOC_PIN13) | \
PIN_PUPDR_PULLUP(GPIOC_PIN14) | \
PIN_PUPDR_PULLUP(GPIOC_PIN15))
@@ -554,11 +554,11 @@
PIN_ODR_HIGH(GPIOC_PIN5) | \
PIN_ODR_HIGH(GPIOC_PIN6) | \
PIN_ODR_HIGH(GPIOC_PIN7) | \
- PIN_ODR_HIGH(GPIOC_PIN8) | \
- PIN_ODR_HIGH(GPIOC_PIN9) | \
- PIN_ODR_HIGH(GPIOC_PIN10) | \
- PIN_ODR_HIGH(GPIOC_PIN11) | \
- PIN_ODR_HIGH(GPIOC_PIN12) | \
+ PIN_ODR_HIGH(GPIOC_SDIO_D0) | \
+ PIN_ODR_HIGH(GPIOC_SDIO_D1) | \
+ PIN_ODR_HIGH(GPIOC_SDIO_D2) | \
+ PIN_ODR_HIGH(GPIOC_SDIO_D3) | \
+ PIN_ODR_HIGH(GPIOC_SDIO_CK) | \
PIN_ODR_HIGH(GPIOC_PIN13) | \
PIN_ODR_HIGH(GPIOC_PIN14) | \
PIN_ODR_HIGH(GPIOC_PIN15))
@@ -570,11 +570,11 @@
PIN_AFIO_AF(GPIOC_PIN5, 0) | \
PIN_AFIO_AF(GPIOC_PIN6, 0) | \
PIN_AFIO_AF(GPIOC_PIN7, 0))
-#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_PIN8, 0) | \
- PIN_AFIO_AF(GPIOC_PIN9, 0) | \
- PIN_AFIO_AF(GPIOC_PIN10, 0) | \
- PIN_AFIO_AF(GPIOC_PIN11, 0) | \
- PIN_AFIO_AF(GPIOC_PIN12, 0) | \
+#define VAL_GPIOC_AFRH (PIN_AFIO_AF(GPIOC_SDIO_D0, 12) | \
+ PIN_AFIO_AF(GPIOC_SDIO_D1, 12) | \
+ PIN_AFIO_AF(GPIOC_SDIO_D2, 12) | \
+ PIN_AFIO_AF(GPIOC_SDIO_D3, 12) | \
+ PIN_AFIO_AF(GPIOC_SDIO_CK, 12) | \
PIN_AFIO_AF(GPIOC_PIN13, 0) | \
PIN_AFIO_AF(GPIOC_PIN14, 0) | \
PIN_AFIO_AF(GPIOC_PIN15, 0))
@@ -585,7 +585,7 @@
*
* PD0 - PIN0 (input pullup).
* PD1 - PIN1 (input pullup).
- * PD2 - PIN2 (input pullup).
+ * PD2 - SDIO_CMD (alternate function 12).
* PD3 - PIN3 (input pullup).
* PD4 - PIN4 (input pullup).
* PD5 - PIN5 (input pullup).
@@ -602,7 +602,7 @@
*/
#define VAL_GPIOD_MODER (PIN_MODE_INPUT(GPIOD_PIN0) | \
PIN_MODE_INPUT(GPIOD_PIN1) | \
- PIN_MODE_INPUT(GPIOD_PIN2) | \
+ PIN_MODE_ALTERNATE(GPIOD_SDIO_CMD) | \
PIN_MODE_INPUT(GPIOD_PIN3) | \
PIN_MODE_INPUT(GPIOD_PIN4) | \
PIN_MODE_INPUT(GPIOD_PIN5) | \
@@ -618,7 +618,7 @@
PIN_MODE_INPUT(GPIOD_PIN15))
#define VAL_GPIOD_OTYPER (PIN_OTYPE_PUSHPULL(GPIOD_PIN0) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN1) | \
- PIN_OTYPE_PUSHPULL(GPIOD_PIN2) | \
+ PIN_OTYPE_PUSHPULL(GPIOD_SDIO_CMD) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN3) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN4) | \
PIN_OTYPE_PUSHPULL(GPIOD_PIN5) | \
@@ -634,7 +634,7 @@
PIN_OTYPE_PUSHPULL(GPIOD_PIN15))
#define VAL_GPIOD_OSPEEDR (PIN_OSPEED_100M(GPIOD_PIN0) | \
PIN_OSPEED_100M(GPIOD_PIN1) | \
- PIN_OSPEED_100M(GPIOD_PIN2) | \
+ PIN_OSPEED_100M(GPIOD_SDIO_CMD) | \
PIN_OSPEED_100M(GPIOD_PIN3) | \
PIN_OSPEED_100M(GPIOD_PIN4) | \
PIN_OSPEED_100M(GPIOD_PIN5) | \
@@ -650,7 +650,7 @@
PIN_OSPEED_100M(GPIOD_PIN15))
#define VAL_GPIOD_PUPDR (PIN_PUPDR_PULLUP(GPIOD_PIN0) | \
PIN_PUPDR_PULLUP(GPIOD_PIN1) | \
- PIN_PUPDR_PULLUP(GPIOD_PIN2) | \
+ PIN_PUPDR_PULLUP(GPIOD_SDIO_CMD) | \
PIN_PUPDR_PULLUP(GPIOD_PIN3) | \
PIN_PUPDR_PULLUP(GPIOD_PIN4) | \
PIN_PUPDR_PULLUP(GPIOD_PIN5) | \
@@ -666,7 +666,7 @@
PIN_PUPDR_PULLUP(GPIOD_PIN15))
#define VAL_GPIOD_ODR (PIN_ODR_HIGH(GPIOD_PIN0) | \
PIN_ODR_HIGH(GPIOD_PIN1) | \
- PIN_ODR_HIGH(GPIOD_PIN2) | \
+ PIN_ODR_HIGH(GPIOD_SDIO_CMD) | \
PIN_ODR_HIGH(GPIOD_PIN3) | \
PIN_ODR_HIGH(GPIOD_PIN4) | \
PIN_ODR_HIGH(GPIOD_PIN5) | \
@@ -682,7 +682,7 @@
PIN_ODR_HIGH(GPIOD_PIN15))
#define VAL_GPIOD_AFRL (PIN_AFIO_AF(GPIOD_PIN0, 0) | \
PIN_AFIO_AF(GPIOD_PIN1, 0) | \
- PIN_AFIO_AF(GPIOD_PIN2, 0) | \
+ PIN_AFIO_AF(GPIOD_SDIO_CMD, 12) | \
PIN_AFIO_AF(GPIOD_PIN3, 0) | \
PIN_AFIO_AF(GPIOD_PIN4, 0) | \
PIN_AFIO_AF(GPIOD_PIN5, 0) | \
diff --git a/software/mpu/halconf.h b/software/mpu/halconf.h
index 31a845e..25f5c2a 100644
--- a/software/mpu/halconf.h
+++ b/software/mpu/halconf.h
@@ -118,7 +118,7 @@
* @brief Enables the SDC subsystem.
*/
#if !defined(HAL_USE_SDC) || defined(__DOXYGEN__)
-#define HAL_USE_SDC FALSE
+#define HAL_USE_SDC TRUE
#endif
/**
@@ -263,6 +263,20 @@
#define SDC_NICE_WAITING TRUE
#endif
+/**
+ * @brief Write timeout in milliseconds.
+ */
+#if !defined(SDC_WRITE_TIMEOUT_MS) || defined(__DOXYGEN__)
+#define SDC_WRITE_TIMEOUT_MS 250
+#endif
+
+/**
+ * @brief Read timeout in milliseconds.
+ */
+#if !defined(SDC_READ_TIMEOUT_MS) || defined(__DOXYGEN__)
+#define SDC_READ_TIMEOUT_MS 5
+#endif
+
/*===========================================================================*/
/* SERIAL driver related settings. */
/*===========================================================================*/
diff --git a/software/mpu/main.c b/software/mpu/main.c
index 99ca5a2..3bae9f0 100644
--- a/software/mpu/main.c
+++ b/software/mpu/main.c
@@ -37,6 +37,7 @@
#include "usb-cdc-shell.h"
#include "ihu.h"
+#include "blockstore.h"
static void sysInit(void)
{
@@ -55,6 +56,7 @@ static void subsystemsInit(void)
{
/* call init functions of all subsystems which should spawn threads for their task */
heartbeatInit();
+ blockstoreInit();
ihuInit();
}
@@ -63,6 +65,7 @@ static void subsystemsStop(void)
/* Safely stop critical threads, aka call shutdown functions of all subsystems */
/* -> invoke the xxxStop() method on all the active device drivers */
ihuStop();
+ blockstoreStop();
}
static void sysShutdown(void)