The Mikroe STM32 F4 board now uses /dev/config for configuration data storage. From Ken Pettit

This commit is contained in:
Gregory Nutt 2013-11-01 07:50:35 -06:00
parent 74b0933088
commit 3a8c1cdccd
3 changed files with 63 additions and 16 deletions

View File

@ -718,4 +718,5 @@
data. From Ken Pettit (2013-10-30).
* apps/nshlib/nsh_dbgcmds.c and others: Add skip= and count=
options to the hexdump command. From Ken Pettit (2013-11-1).
* apps/platrorm/mikroe-stm32f4: Now uses /dev/config for configuration
data storage. From Ken Pettit (2013-11-1).

View File

@ -12,7 +12,7 @@ choice
default MIKROE_STM32F4_CONFIGDATA_PART
config MIKROE_STM32F4_CONFIGDATA_PART
bool "Dedicated FLASH partition"
bool "Dedicated FLASH partition using /dev/config"
config MIKROE_STM32F4_CONFIGDATA_FS
bool "File system file"
@ -32,14 +32,6 @@ config MIKROE_STM32F4_CONFIGDATA_FILENAME
endif
if MIKROE_STM32F4_CONFIGDATA_PART
config MIKROE_STM32F4_CONFIGDATA_PART_SIZE
int "Size (in erase blocks) of configuration data partition"
default 2
endif
endif
endif

View File

@ -46,6 +46,8 @@
#include <debug.h>
#include <apps/platform/configdata.h>
#include <nuttx/fs/ioctl.h>
#include <nuttx/configdata.h>
#ifdef CONFIG_PLATFORM_CONFIGDATA
@ -108,6 +110,11 @@ int platform_setconfig(enum config_data_e id, int instance,
#ifdef CONFIG_MIKROE_STM32F4_CONFIGDATA_FS
FILE* fd;
#endif
#if CONFIG_MIKROE_STM32F4_CONFIGDATA_PART
struct config_data_s config;
int ret;
int fd;
#endif
switch (id)
{
@ -137,9 +144,29 @@ int platform_setconfig(enum config_data_e id, int instance,
fclose(fd);
return OK;
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_PART
# error This configuration not supported yet!
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_PART
/* Try to open the /dev/config device file */
if ((fd = open("/dev/config", O_RDOK)) == -1)
{
/* Error opening the config device */
return -1;
}
/* Setup structure for the SETCONFIG ioctl */
config.id = (enum config_data_e)id;
config.instance = instance;
config.configdata = (FAR uint8_t *) configdata;
config.len = datalen;
ret = ioctl(fd, CFGDIOC_SETCONFIG, (unsigned long) &config);
close(fd);
return ret;
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
/* We are reading from a read-only system, so nothing to do. */
@ -194,12 +221,17 @@ int platform_getconfig(enum config_data_e id, int instance,
size_t bytes;
enum config_data_e saved_id;
int saved_instance;
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
static const uint8_t touch_cal_data[] = {
0x9a, 0x2f, 0x00, 0x00,
0x9a, 0x2f, 0x00, 0x00,
0x40, 0xbc, 0x69, 0xfe, 0x70, 0x2e, 0x00,
0x00, 0xb8, 0x2d, 0xdb, 0xff };
#endif
#if CONFIG_MIKROE_STM32F4_CONFIGDATA_PART
struct config_data_s config;
int ret;
int fd;
#endif
switch (id)
{
@ -240,7 +272,29 @@ int platform_getconfig(enum config_data_e id, int instance,
return OK;
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_PART
/* Try to open the /dev/config device file */
if ((fd = open("/dev/config", O_RDOK)) == -1)
{
/* Error opening the config device */
return -1;
}
/* Setup structure for the SETCONFIG ioctl */
config.id = (enum config_data_e)id;
config.instance = instance;
config.configdata = configdata;
config.len = datalen;
ret = ioctl(fd, CFGDIOC_GETCONFIG, (unsigned long) &config);
close(fd);
return ret;
#elif CONFIG_MIKROE_STM32F4_CONFIGDATA_ROM
memcpy(configdata, touch_cal_data, datalen);
return OK;