All Projects → olegv142 → NvTx

olegv142 / NvTx

Licence: Unlicense license
Transactional non volatile storage for Arduino

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to NvTx

arduino-remote-uploader
Over-the-air arduino programming via xbee, wifi or nordic
Stars: ✭ 31 (+82.35%)
Mutual labels:  arduino-library, eeprom
I2C EEPROM
Library for I2C EEPROM - 24LC256
Stars: ✭ 27 (+58.82%)
Mutual labels:  arduino-library, eeprom
extEEPROM
Arduino library to support external I2C EEPROMs.
Stars: ✭ 111 (+552.94%)
Mutual labels:  arduino-library, eeprom
miniboot
🏗️ An I2C bootloader for Arduino.
Stars: ✭ 62 (+264.71%)
Mutual labels:  arduino-library, eeprom
BME680
Arduino Library to access the Bosch BME680 - temperature, pressure, humidity and gas sensor
Stars: ✭ 30 (+76.47%)
Mutual labels:  arduino-library
DL1414
Arduino Library for DL1414 type 4 character miniature screen modules.
Stars: ✭ 14 (-17.65%)
Mutual labels:  arduino-library
MouseTo
Arduino library for moving mouse pointer to absolute screen coordinates
Stars: ✭ 47 (+176.47%)
Mutual labels:  arduino-library
KuiBaDB
Another OLAP database
Stars: ✭ 297 (+1647.06%)
Mutual labels:  transactions
ublox
Arduino and CMake library for communicating with uBlox GPS receivers.
Stars: ✭ 89 (+423.53%)
Mutual labels:  arduino-library
Seeed Arduino FreeRTOS
This library gives an example of how to get FreeRTOS running on Seeed production. The project can be used as a template to build your projects off of as well.
Stars: ✭ 27 (+58.82%)
Mutual labels:  arduino-library
Arduino-Log
Simple application log library. supporting multiple log levels, custom output & flash memory support.
Stars: ✭ 132 (+676.47%)
Mutual labels:  arduino-library
T-BOTS
Software for controlling and analysing T-Bots (Balancing robots)
Stars: ✭ 21 (+23.53%)
Mutual labels:  arduino-library
Seeed Arduino AS5600
The library comes with AS5600. Through this library, we can realize read the angles 、get magnetic from a magnet underneath the sensor.
Stars: ✭ 59 (+247.06%)
Mutual labels:  arduino-library
modbus-esp8266
Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave or both. Supports network transport (Modbus TCP) and Serial line/RS-485 (Modbus RTU). Supports Modbus TCP Security for ESP8266/ESP32.
Stars: ✭ 332 (+1852.94%)
Mutual labels:  arduino-library
Adafruit EPD
e-paper display driver for Arduino
Stars: ✭ 92 (+441.18%)
Mutual labels:  arduino-library
Apriori-and-Eclat-Frequent-Itemset-Mining
Implementation of the Apriori and Eclat algorithms, two of the best-known basic algorithms for mining frequent item sets in a set of transactions, implementation in Python.
Stars: ✭ 36 (+111.76%)
Mutual labels:  transactions
TransactionMaster
A tool for Windows that can make any program work within file-system transactions.
Stars: ✭ 49 (+188.24%)
Mutual labels:  transactions
ADS1115 WE
An Arduino library for the 16-bit, 4 channel ADS1115 ADC. Convenient to use. All features of the ADS1115 are implemented, including alert functions.
Stars: ✭ 39 (+129.41%)
Mutual labels:  arduino-library
Adafruit DAP
port of free-DAP to standalone arduino
Stars: ✭ 63 (+270.59%)
Mutual labels:  arduino-library
horse-messaging
Open Source Messaging Framework. Queues, Channels, Events, Transactions, Distributed Cache
Stars: ✭ 65 (+282.35%)
Mutual labels:  transactions

NvTx

Transactional non volatile storage for Arduino

Transactional non-volatile storage uses EEPROM for reliably storing client's data. It provides the following useful properties:

  • client will not read the data it have never written
  • client will not read the data corrupted for any reason
  • the data update will succeed either entirely or not at all, in the latter case old data will be read
  • the data is bound to the string tag and numerical instance id provided by the client so the data originally bound to the different tag or having different instance id will not be read to avoid erroneous interpretation of the semantically different data

To provide the above guarantees the data is saved in 2 copies in 2 adjacent storage 'cells'. The first 2 bytes of the cell contains the value ID calculated as CRC16 of the size and tag with instance ID as initial value. The high order bit of the first ID byte serves as 'valid' bit and always set to 1 on writing new value. The low order bit of the first ID byte serves as 1bit 'epoch' number. So the are 14 bits left for value ID. The last 2 bytes of the cell contains the value checksum with value ID used as initial CRC value.

NvTx cell format

The cells are written in round robin manner with the epoch number updated every time we start writimng the first cell.

NvTx cell epochs

The nv_tx_get call not only choose the latest value to read but also clear the valid bit in case the ID or checksum mismatch. So all subsequent nv_tx_put calls may just read the first byte of the cell to find out which cell should by written.

Author

Oleg Volkov ([email protected])

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].