mirror of
https://github.com/apache/nuttx.git
synced 2026-05-20 20:44:39 +08:00
Adds the ability to use the STM32F2 and STM32F4 Battery Backedup SRAM in the file system. With an option to Save Panic context to one of the files. From David Sidrane.
This commit is contained in:
@@ -1134,7 +1134,7 @@ config STM32_BKP
|
||||
depends on STM32_STM32F10XX
|
||||
|
||||
config STM32_BKPSRAM
|
||||
bool "BKP RAM"
|
||||
bool "Enable BKP RAM Domain"
|
||||
default n
|
||||
depends on STM32_STM32F207 || STM32_STM32F40XX
|
||||
|
||||
@@ -3254,6 +3254,22 @@ config SDIO_WIDTH_D1_ONLY
|
||||
|
||||
endmenu
|
||||
|
||||
if STM32_BKPSRAM
|
||||
|
||||
config STM32_BBSRAM
|
||||
bool "BBSRAM File Support"
|
||||
default n
|
||||
|
||||
config STM32_BBSRAM_FILES
|
||||
int "Max Files to support in BBSRAM"
|
||||
default 4
|
||||
|
||||
config STM32_SAVE_CRASHDUMP
|
||||
bool "Enable Saving Panic to BBSRAM"
|
||||
default n
|
||||
|
||||
endif # STM32_BKPSRAM
|
||||
|
||||
config STM32_HAVE_RTC_SUBSECONDS
|
||||
bool
|
||||
default n
|
||||
|
||||
@@ -233,3 +233,7 @@ endif
|
||||
ifeq ($(CONFIG_STM32_AES),y)
|
||||
CHIP_CSRCS += stm32_aes.c
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_STM32_BBSRAM),y)
|
||||
CHIP_CSRCS += stm32_bbsram.c
|
||||
endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,166 @@
|
||||
/****************************************************************************
|
||||
* arch/arm/src/stm32/stm32_bbsram.h
|
||||
*
|
||||
* Copyright (C) 2015 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
* David Sidrane <david_s5@nscdg.com>
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* 3. Neither the name NuttX nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
|
||||
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
|
||||
* OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
||||
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ARCH_ARM_SRC_STM32_STM32_BBSRAM_H
|
||||
#define __ARCH_ARM_SRC_STM32_STM32_BBSRAM_H
|
||||
|
||||
/****************************************************************************
|
||||
* The purpose of this driver is to add battery backup file to the file
|
||||
* system. There can be CONFIG_STM32_BBRSRAM_COUNT files defined.
|
||||
* These files are of fixed size up to the maximum of the backing SRAM.
|
||||
* In the care of the STM32F2 and STM32F4 this is a maximum of 4K Bytes.
|
||||
*
|
||||
* If CONFIG_SAVE_CRASHDUMP is defined The driver also supports a feature
|
||||
* to save the context of a PANIC in one of these files.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/****************************************************************************
|
||||
* Included Files
|
||||
****************************************************************************/
|
||||
|
||||
#include <nuttx/config.h>
|
||||
#include <nuttx/fs/ioctl.h>
|
||||
|
||||
/****************************************************************************
|
||||
* Pre-processor Definitions
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_STM32_STM32F20XX) || defined(CONFIG_STM32_STM32F40XX)
|
||||
# define STM32_BBSRAM_SIZE 4096
|
||||
#else
|
||||
# error No backup SRAM on this STM32
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_STM32_BBSRAM_FILES)
|
||||
# define CONFIG_STM32_BBSRAM_FILES 4
|
||||
#endif
|
||||
|
||||
/* REVISIT: What guarantees that STM32_BBSRAM_GETDESC_IOCTL has a unique
|
||||
* value among all over _DIOC() values?
|
||||
*/
|
||||
|
||||
#define STM32_BBSRAM_GETDESC_IOCTL _DIOC(0x0010) /* Returns a bbsramd_s */
|
||||
|
||||
/****************************************************************************
|
||||
* Public Types
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
enum bbsramdf_e
|
||||
{
|
||||
eCRCValid = 1, /* The crc is valid */
|
||||
eDirty = 2, /* The file was closed */
|
||||
|
||||
};
|
||||
|
||||
struct bbsramd_s
|
||||
{
|
||||
uint8_t flags; /* The crc is valid and the file was closed */
|
||||
uint8_t fileno; /* The minor number */
|
||||
uint16_t len; /* Total Bytes in this file*/
|
||||
struct timespec lastwrite; /* Last write time */
|
||||
};
|
||||
|
||||
/****************************************************************************
|
||||
* Public Data
|
||||
****************************************************************************/
|
||||
|
||||
#undef EXTERN
|
||||
#if defined(__cplusplus)
|
||||
# define EXTERN extern "C"
|
||||
extern "C"
|
||||
{
|
||||
#else
|
||||
# define EXTERN extern
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
* Public Function Prototypes
|
||||
****************************************************************************/
|
||||
/****************************************************************************
|
||||
* Function: stm32_bbsraminitialize
|
||||
*
|
||||
* Description:
|
||||
* Initialize the Battery Backed up SRAM driver.
|
||||
*
|
||||
* Parameters:
|
||||
* devpath - the path to instantiate the files.
|
||||
* sizes - Pointer to a any array of file sizes to create
|
||||
* the last entry should be 0
|
||||
* A size of -1 will use all the remaining spaces
|
||||
*
|
||||
* If the length of sizes is greater then CONFIG_STM32_BBSRAM_FILES
|
||||
* CONFIG_STM32_BBSRAM_FILES will be returned.
|
||||
*
|
||||
* Returned Value:
|
||||
* Number of files created on success; Negated errno on failure.
|
||||
*
|
||||
* Assumptions:
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
int stm32_bbsraminitialize(char *devpath, int *sizes);
|
||||
|
||||
/****************************************************************************
|
||||
* Function: stm32_bbsram_savepanic
|
||||
*
|
||||
* Description:
|
||||
* Saves the panic context in a previously allocated BBSRAM file
|
||||
*
|
||||
* Parameters:
|
||||
* fileno - the value returned by the ioctl STM32_BBSRAM_GETDESC_IOCTL
|
||||
* context - Pointer to a any array of bytes to save
|
||||
* length - The length of the data pointed to byt context
|
||||
*
|
||||
* Returned Value:
|
||||
* Length saved or negated errno.
|
||||
*
|
||||
* Assumptions:
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#if defined(CONFIG_STM32_SAVE_CRASHDUMP)
|
||||
int stm32_bbsram_savepanic(int fileno, uint8_t *context, int length);
|
||||
#endif
|
||||
|
||||
#undef EXTERN
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __ASSEMBLY__ */
|
||||
#endif /* __ARCH_ARM_SRC_STM32_STM32_BBSRAM_H */
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Reference in New Issue
Block a user