Не удается выполнить запись в EEPROM на устройстве movesense

#movesense

#movesense

Вопрос:

Я хотел бы записать некоторые значения в EEPROM. Я пишу о документации по устройству movesense. Похоже, что onPutResult никогда не запускается, и устройство зависает после asyncPut.

Это мой App.cpp:

 #include "MoveWakeUpApp.h"
#include "movesense.h"

MOVESENSE_APPLICATION_STACKSIZE(1024)

MOVESENSE_PROVIDERS_BEGIN(1)

MOVESENSE_PROVIDER_DEF(MoveWakeUpApp)

MOVESENSE_PROVIDERS_END(1)

MOVESENSE_FEATURES_BEGIN()
// Explicitly enable or disable Movesense framework core modules.
// List of modules and their default state is found in documentation
OPTIONAL_CORE_MODULE(DataLogger, false)
OPTIONAL_CORE_MODULE(Logbook, false)
OPTIONAL_CORE_MODULE(LedService, true)
OPTIONAL_CORE_MODULE(IndicationService, true)
OPTIONAL_CORE_MODULE(BleService, true)
OPTIONAL_CORE_MODULE(EepromService, true)
OPTIONAL_CORE_MODULE(BypassService, false)
OPTIONAL_CORE_MODULE(SystemMemoryService, false)
OPTIONAL_CORE_MODULE(DebugService, true)
OPTIONAL_CORE_MODULE(BleStandardHRS, false)
OPTIONAL_CORE_MODULE(BleNordicUART, false)
OPTIONAL_CORE_MODULE(CustomGattService, false)

// NOTE: It is inadvisable to enable both Logbook/DataLogger and 
EepromService without
// explicit definition of Logbook memory are (see LOGBOOK_MEMORY_AREA 
macro in movesense.h and eeprom_logbook_app).
// Default setting is for Logbook to use the whole EEPROM memory area.

// NOTE: If building a simulator build, these macros are obligatory!
DEBUGSERVICE_BUFFER_SIZE(6, 120); // 6 lines, 120 characters total
DEBUG_EEPROM_MEMORY_AREA(true, 0, 1024);
//LOGBOOK_MEMORY_AREA(0, 384 * 1024);

APPINFO_NAME("MoveWakeUp");
APPINFO_VERSION("1.0.0");
APPINFO_COMPANY("Movesense");

// NOTE: SERIAL_COMMUNICATION macro has been DEPRECATED
BLE_COMMUNICATION(true)
MOVESENSE_FEATURES_END()
 

Я что-то пропустил?

Большое спасибо!

Ответ №1:

Сравниваю его с моим файлом App.CPP файл Я вижу, что я включил SystemMemoryService. А также другие службы, которые я использую с EEPROM.

 OPTIONAL_CORE_MODULE(**DataLogger, true**)
OPTIONAL_CORE_MODULE(**Logbook, true**)
OPTIONAL_CORE_MODULE(LedService, true)
OPTIONAL_CORE_MODULE(IndicationService, true)
OPTIONAL_CORE_MODULE(BleService, true)
OPTIONAL_CORE_MODULE(**EepromService, true**)
OPTIONAL_CORE_MODULE(BypassService, false)
OPTIONAL_CORE_MODULE(**SystemMemoryService, true**)
OPTIONAL_CORE_MODULE(DebugService, true)
//DEBUGSERVICE_BUFFER_SIZE(6,120); // 6 lines, 120 chars total
OPTIONAL_CORE_MODULE(BleStandardHRS, false)
OPTIONAL_CORE_MODULE(BleNordicUART, false)
OPTIONAL_CORE_MODULE(CustomGattService,false)

// NOTE: It is inadvisable to enable both Logbook/DataLogger and EepromService without
// explicit definition of Logbook memory are (see LOGBOOK_MEMORY_AREA macro in movesense.h and eeprom_logbook_app).
// Default setting is for Logbook to use the whole EEPROM memory area.
#define TIME_LENGTH 64
#define RESERVED  64
#define TOTAL_MEMMORY_SIZE (2097152   1048576) //read from the eeprom 
static const uint32_t offset = TIME_LENGTH   RESERVED;
static const uint32_t size = TOTAL_MEMMORY_SIZE - offset; // using all available space exept for space needed for persistant data
LOGBOOK_MEMORY_AREA(offset, size);
 

Может ли включение SystemMemoryService быть решением вашей проблемы?

Как вы можете видеть, я также использую регистратор данных / журнал регистрации и выделяю некоторое место в EEPROM для другого хранилища, поэтому не уверен на 100%, что необходимо для каждой из служб.

Комментарии:

1. Это устранило мою проблему! Большое вам спасибо!

2. Если бы это решило ваш вопрос, не могли бы вы сделать мой ответ ответом на вопрос?