Skip to content

Commit e179791

Browse files
committed
revolution support tf card & build linker debug
1 parent e1fcc3c commit e179791

File tree

8 files changed

+88
-38
lines changed

8 files changed

+88
-38
lines changed

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ $(foreach var, $(SANITIZE_DEPRECATED_VARS), $(eval $(call SANITIZE_VAR,$(var),de
108108

109109
# Decide on a verbosity level based on the V= parameter
110110
export AT := @
111+
# V := 1
111112
ifndef V
112113
export V0 :=
113114
export V1 := $(AT)

flight/make/common-defs.mk

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ LDFLAGS += -Wl,-Map=$(OUTDIR)/$(TARGET).map,--cref
204204
LDFLAGS += $(patsubst %,-L%,$(EXTRA_LIBDIRS))
205205
LDFLAGS += $(patsubst %,-l%,$(EXTRA_LIBS))
206206
LDFLAGS += -lc -lgcc
207+
LDFLAGS += -specs=nosys.specs
207208

208209
ifneq ($(DEBUG), YES)
209210
LDFLAGS += -Wl,-static

flight/pios/common/pios_dosfs_logfs.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ struct flashfs_logfs_cfg;
3838
/**
3939
* glue macros for file IO
4040
**/
41+
#ifdef SIMPOSIX // use posix api
42+
4143
#define FILEINFO FILE *
4244
#define PIOS_FOPEN_READ(filename, file) (file = fopen((char *)filename, "r")) == NULL
4345
#define PIOS_FOPEN_WRITE(filename, file) (file = fopen((char *)filename, "w")) == NULL
@@ -46,6 +48,25 @@ struct flashfs_logfs_cfg;
4648
#define PIOS_FCLOSE(file) fclose(file)
4749
#define PIOS_FUNLINK(file) unlink((char *)filename)
4850

51+
#else // use dosfs libs
52+
53+
/**
54+
* glue macros for file IO
55+
* STM32 uses DOSFS for file IO
56+
*/
57+
#define PIOS_FOPEN_READ(filename, file) DFS_OpenFile(&PIOS_SDCARD_VolInfo, (uint8_t *)filename, DFS_READ, PIOS_SDCARD_Sector, &file) != DFS_OK
58+
59+
#define PIOS_FOPEN_WRITE(filename, file) DFS_OpenFile(&PIOS_SDCARD_VolInfo, (uint8_t *)filename, DFS_WRITE, PIOS_SDCARD_Sector, &file) != DFS_OK
60+
61+
#define PIOS_FREAD(file, bufferadr, length, resultadr) DFS_ReadFile(file, PIOS_SDCARD_Sector, (uint8_t *)bufferadr, resultadr, length) != DFS_OK
62+
63+
#define PIOS_FWRITE(file, bufferadr, length, resultadr) DFS_WriteFile(file, PIOS_SDCARD_Sector, (uint8_t *)bufferadr, resultadr, length)
64+
65+
#define PIOS_FCLOSE(file) DFS_Close(&file)
66+
67+
#define PIOS_FUNLINK(filename) DFS_UnlinkFile(&PIOS_SDCARD_VolInfo, (uint8_t *)filename, PIOS_SDCARD_Sector)
68+
69+
#endif // SIMPOSIX
4970

5071
/**
5172
* Get an 8 character (plus extension) filename for the object.

flight/pios/common/pios_sdcard.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ int32_t PIOS_SDCARD_PowerOn(void)
142142
PIOS_DELAY_WaituS(1000);
143143

144144
/* Send CMD0 to reset the media */
145-
if ((status = PIOS_SDCARD_SendSDCCmd(SDCMD_GO_IDLE_STATE, 0, SDCMD_GO_IDLE_STATE_CRC)) < 0) {
145+
if ((status = PIOS_SDCARD_SendSDCCmd(SDCMD_GO_IDLE_STATE, 0/*Addr*/, SDCMD_GO_IDLE_STATE_CRC)) < 0) {
146146
goto error;
147147
}
148148

flight/pios/stm32f4xx/link_STM32F4xx_RM_sections.ld

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ SECTIONS
138138
/* extend the heap up to the top of SRAM */
139139
. = ORIGIN(SRAM) + LENGTH(SRAM) - ABSOLUTE(_sheap);
140140
_eheap = .;
141+
end = .; /* dosfs link error */
141142
} > SRAM
142143

143144
/*

flight/targets/boards/revolution/firmware/Makefile

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,31 +34,31 @@ USE_DSP_LIB ?= NO
3434
# List of mandatory modules to include
3535
MODULES += Sensors
3636
MODULES += StateEstimation
37-
MODULES += Airspeed
37+
#MODULES += Airspeed
3838
MODULES += Stabilization
3939
MODULES += ManualControl
4040
MODULES += Receiver
4141
MODULES += Actuator
4242
MODULES += GPS
43-
MODULES += TxPID
44-
MODULES += CameraStab
45-
MODULES += CameraControl
46-
MODULES += Battery
43+
#MODULES += TxPID
44+
#MODULES += CameraStab
45+
#MODULES += CameraControl
46+
#MODULES += Battery
4747
MODULES += FirmwareIAP
4848
MODULES += Radio
4949
MODULES += PathPlanner
5050
MODULES += PathFollower
51-
MODULES += Osd/osdoutout
51+
#MODULES += Osd/osdoutout
5252
MODULES += Logging
5353
MODULES += Telemetry
5454
MODULES += Notify
5555

56-
OPTMODULES += AutoTune
57-
OPTMODULES += ComUsbBridge
58-
OPTMODULES += UAVOHottBridge
59-
OPTMODULES += UAVOMSPBridge
60-
OPTMODULES += UAVOMavlinkBridge
61-
OPTMODULES += UAVOFrSKYSensorHubBridge
56+
#OPTMODULES += AutoTune
57+
#OPTMODULES += ComUsbBridge
58+
#OPTMODULES += UAVOHottBridge
59+
#OPTMODULES += UAVOMSPBridge
60+
#OPTMODULES += UAVOMavlinkBridge
61+
#OPTMODULES += UAVOFrSKYSensorHubBridge
6262

6363
SRC += $(FLIGHTLIB)/notification.c
6464

@@ -85,8 +85,11 @@ ifndef TESTAPP
8585
SRC += $(OPUAVOBJ)/uavobjectmanager.c
8686
SRC += $(OPUAVOBJ)/uavobjectpersistence.c
8787
SRC += $(OPUAVOBJ)/eventdispatcher.c
88-
SRC += $(PIOSCOMMON)/pios_flashfs_logfs.c
89-
SRC += $(PIOSCOMMON)/pios_flash_jedec.c
88+
SRC += $(PIOSCOMMON)/pios_dosfs_logfs.c
89+
# SRC += $(PIOSCOMMON)/pios_sdcard.c
90+
91+
#SRC += $(PIOSCOMMON)/pios_flashfs_logfs.c
92+
# SRC += $(PIOSCOMMON)/pios_flash_jedec.c
9093

9194
## Misc library functions
9295
SRC += $(FLIGHTLIB)/paths.c
@@ -109,6 +112,8 @@ endif
109112
# Optional component libraries
110113
include $(FLIGHTLIB)/rscode/library.mk
111114

115+
include $(PIOS)/common/libraries/dosfs/library.mk
116+
112117
#include $(FLIGHTLIB)/PyMite/pymite.mk
113118

114119

flight/targets/boards/revolution/firmware/inc/pios_config.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,12 +127,17 @@
127127
/* #define PIOS_INCLUDE_I2C_ESC */
128128
/* #define PIOS_INCLUDE_OVERO */
129129
/* #define PIOS_OVERO_SPI */
130-
/* #define PIOS_INCLUDE_SDCARD */
131-
/* #define LOG_FILENAME "startup.log" */
132130
#define PIOS_INCLUDE_FLASH
133-
#define PIOS_INCLUDE_FLASH_INTERNAL
134-
#define PIOS_INCLUDE_FLASH_LOGFS_SETTINGS
135-
#define FLASH_FREERTOS
131+
// TODO: put fs API into pios_dosfs_logfs.h
132+
133+
// #define PIOS_INCLUDE_FLASH_INTERNAL
134+
// #define PIOS_INCLUDE_FLASH_LOGFS_SETTINGS
135+
//#define FLASH_FREERTOS
136+
137+
#define PIOS_INCLUDE_SDCARD
138+
#define LOG_FILENAME "startup.log"
139+
#define PIOS_USE_SETTINGS_ON_SDCARD
140+
136141
/* #define PIOS_INCLUDE_FLASH_EEPROM */
137142

138143
#define PIOS_INCLUDE_DEBUGLOG

flight/targets/boards/revolution/firmware/pios_board.c

Lines changed: 34 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -130,39 +130,52 @@ void PIOS_Board_Init(void)
130130
}
131131

132132
/* Set up the SPI interface to the flash and rfm22b */
133+
//if (PIOS_SPI_Init(&pios_spi_telem_flash_adapter_id, &pios_spi_telem_flash_cfg)) {
134+
// PIOS_DEBUG_Assert(0);
135+
//}
136+
/* Set up the SPI interface to the tfcard and rfm22b */
133137
if (PIOS_SPI_Init(&pios_spi_telem_flash_adapter_id, &pios_spi_telem_flash_cfg)) {
134138
PIOS_DEBUG_Assert(0);
135139
}
136140

137141
#if defined(PIOS_INCLUDE_FLASH)
138142
/* Connect flash to the appropriate interface and configure it */
139-
uintptr_t flash_id;
143+
// uintptr_t flash_id;
140144

141145
// Initialize the external USER flash
142-
if (PIOS_Flash_Jedec_Init(&flash_id, pios_spi_telem_flash_adapter_id, 1)) {
143-
PIOS_DEBUG_Assert(0);
144-
}
146+
// if (PIOS_Flash_Jedec_Init(&flash_id, pios_spi_telem_flash_adapter_id, 1)) {
147+
// PIOS_DEBUG_Assert(0);
148+
// }
149+
150+
// if (PIOS_FLASHFS_Logfs_Init(&pios_uavo_settings_fs_id, &flashfs_external_system_cfg, &pios_jedec_flash_driver, flash_id)) {
151+
// PIOS_DEBUG_Assert(0);
152+
// }
145153

146-
if (PIOS_FLASHFS_Logfs_Init(&pios_uavo_settings_fs_id, &flashfs_external_system_cfg, &pios_jedec_flash_driver, flash_id)) {
147-
PIOS_DEBUG_Assert(0);
148-
}
149154
#endif /* if defined(PIOS_INCLUDE_FLASH) */
150155

156+
#if defined(PIOS_INCLUDE_SDCARD)
157+
/* Enable and mount the SDCard */
158+
// SPI is initialized above
159+
PIOS_SDCARD_Init(pios_spi_telem_flash_adapter_id/*TODO: use flash is stupid!*/);
160+
PIOS_SDCARD_MountFS(0);
161+
PIOS_FLASHFS_Logfs_Init(&pios_uavo_settings_fs_id, NULL, NULL, 0);
162+
#endif
163+
151164
#if defined(PIOS_INCLUDE_RTC)
152165
PIOS_RTC_Init(&pios_rtc_main_cfg);
153166
#endif
154167

155168
/* IAP System Setup */
156169
PIOS_IAP_Init();
157170
// check for safe mode commands from gcs
158-
if (PIOS_IAP_ReadBootCmd(0) == PIOS_IAP_CLEAR_FLASH_CMD_0 &&
159-
PIOS_IAP_ReadBootCmd(1) == PIOS_IAP_CLEAR_FLASH_CMD_1 &&
160-
PIOS_IAP_ReadBootCmd(2) == PIOS_IAP_CLEAR_FLASH_CMD_2) {
161-
PIOS_FLASHFS_Format(pios_uavo_settings_fs_id);
162-
PIOS_IAP_WriteBootCmd(0, 0);
163-
PIOS_IAP_WriteBootCmd(1, 0);
164-
PIOS_IAP_WriteBootCmd(2, 0);
165-
}
171+
//if (PIOS_IAP_ReadBootCmd(0) == PIOS_IAP_CLEAR_FLASH_CMD_0 &&
172+
// PIOS_IAP_ReadBootCmd(1) == PIOS_IAP_CLEAR_FLASH_CMD_1 &&
173+
// PIOS_IAP_ReadBootCmd(2) == PIOS_IAP_CLEAR_FLASH_CMD_2) {
174+
// PIOS_FLASHFS_Format(pios_uavo_settings_fs_id);
175+
// PIOS_IAP_WriteBootCmd(0, 0);
176+
// PIOS_IAP_WriteBootCmd(1, 0);
177+
// PIOS_IAP_WriteBootCmd(2, 0);
178+
//}
166179

167180
#ifdef PIOS_INCLUDE_WDG
168181
PIOS_WDG_Init();
@@ -232,9 +245,12 @@ void PIOS_Board_Init(void)
232245

233246
/* Moved this here to allow DSM binding on flexiport */
234247
#if defined(PIOS_INCLUDE_FLASH)
235-
if (PIOS_FLASHFS_Logfs_Init(&pios_user_fs_id, &flashfs_external_user_cfg, &pios_jedec_flash_driver, flash_id)) {
236-
PIOS_DEBUG_Assert(0);
237-
}
248+
//if (PIOS_FLASHFS_Logfs_Init(&pios_user_fs_id, &flashfs_external_user_cfg, &pios_jedec_flash_driver, flash_id)) {
249+
// PIOS_DEBUG_Assert(0);
250+
//}
251+
//if (PIOS_FLASHFS_Logfs_Init(&pios_user_fs_id, &flashfs_external_user_cfg, &pios_jedec_flash_driver, 0)) {
252+
// PIOS_DEBUG_Assert(0);
253+
//}
238254
#endif /* if defined(PIOS_INCLUDE_FLASH) */
239255

240256

0 commit comments

Comments
 (0)