Ringbuffers en super arrays

Als doorbouwend merk je dat er dus veel meer potentie zit in de mogelijkheden van de SPI en I2C RAM ic's. Inmiddels is de hele architectuur alweer overhoop gegooid en is er een nieuw plaatje ontstaan:

De I2C memory controller is gereed. De Virtuele memory controller kan er al naar schrijven. Wat het geheel nu doet is:
Van elk IC bepalen hoeveel geheugen deze heeft. Alle geheugens worden vervolgens achter elkaar gezet om een groot virtueel geheugen te maken. Vanaf de gebruiker gezien maakt het niet uit wat voor IC's het zijn (F-RAM, I2C, SPI, SRAM etc).

Een schrijf operatie van een uint32_t duurt ongeveer 300usec dus dat valt mee. Er komt nog een malloc en een free functie op de virtuele memory controller zodat je geheugen uit de VM kan alloceren. Tja en dan kan je in feite het werk geheugen enorm uitbreiden. Er is een limiet echter. Elke virtuele variabele moet minimaal een 32bits adres opslaan in het lokale werk geheugen. En als je wat wil overpompen of ontvangen moet je wel ruimte reserveren om deze op te slaan.

Het beschikbare geheugen wordt in dit bestandje aangegeven:

/*
 Name:       MemoryConfiguration
 Created:    25-12-2018 10:45:00
 Author:     nico verduin
 Brief:      Defines the structure of all the memory chips used
 */

#ifndef MEMORYCONFIGURATION_H_
#define MEMORYCONFIGURATION_H_

// includes
#include <Arduino.h>

// our I2C chips. Make this static or the compiler will fail
static uint8_t I2CChipList[] = { 0x50, 0x51};

#endif /* MEMORYCONFIGURATION_H_ */

Wordt vervolgt....