Main Page | Modules | Related Pages | Examples

Memory


Detailed Description

The MCU ATmega128 has three different types of memory:
  1. PROGMEM - program memory, flash technology, size 128KB
  2. RAM - 4KB
  3. EEPROM - 4KB

TODO external 256KB SRAM

Some of the functions can access any of the memories.

mem.png

Memory model

For developer following functions simplify the memory access:

For wb() and ww() only the RAM or EEPROM makes sence.

Memory allocation

For RAM allocation you can use the standard malloc(), free() calls and
 #include <stdlib.h> 

To access EEPROM you must use emalloc(), efree() calls.

On PROGMEM

To insert some data into PROGMEM in compilation time you can use the attribute PROGMEM. Example:
u8 PROGMEM data[]={0,1,2,3};
includes {0,1,2,3} into PROGMEM.

To access such data you must use rb() or rw() calls.

u8 PROGMEM data[]={0,1,2,3};
u8 x;
u8 i;

for(i=0;i<sizeof(data);i++) x=rb(data+i);

Attention:
Because or very little RAM we suggest to put everything possible into PROGMEM, esp. strings.

There is a very little stack so use malloc()/free() rather than local arrays.

For details on PROGMEM please refer to AVR LIBC documentation.

Typedefs

Functions


Typedef Documentation

typedef short b16
 

signed 2bytes=16bits

typedef long b32
 

signed 4bytes=32bits

typedef char b8
 

signed 1byte=8bits

typedef unsigned short u16
 

unsigned 2bytes=16bits

typedef unsigned long u32
 

unsigned 4bytes=32bits

typedef unsigned char u8
 

unsigned 1byte=8bits

Examples:
sim/utils-src/sim_dump.c.


Function Documentation

void* app_data void   ) 
 

Return pointer on application persistent data.

u8* buf_A void   ) 
 

Pointer on buffer 1072 bytes long. Can be used only during one action. Content can be rewritten between actions.

Examples:
avrprog/module-src/avrprog.c, df/module-src/df.c, sim/module-src/sim.c, and turboadapter/module-src/turboadapter.c.

u8* buf_B void   ) 
 

Pointer on buffer 1072 bytes long. Can be used only during one action. Content can be rewritten between actions.

void efree void *  ptr  ) 
 

Free emalloc'ed chunk.

Parameters:
ptr 

void* emalloc u16  size  ) 
 

Same as malloc but in EEPROM.

Parameters:
size 

u8 ext_sram_rb u32  addr  ) 
 

Read byte from extern 256KB SRAM.

Parameters:
addr 

void ext_sram_wb u32  addr,
u8  value
 

Write byte to extern 256KB SRAM.

Parameters:
addr 
value 

u8 rb const void *  addr  ) 
 

Read byte from memory.

Parameters:
addr EEPROM, PROGMEM, RAM memory address.

void reg_app_data void *  data  ) 
 

Store (in EEPROM) pointer on application persistent data.

Parameters:
data 

u16 rw const void *  addr  ) 
 

Read word from memory.

Parameters:
addr EEPROM, PROGMEM, RAM memory address.

void wb void *  addr,
u8  val
 

Write byte to memory.

Parameters:
addr EEPROM, RAM memory address.
val value.

void ww void *  addr,
u16  val
 

Write word to memory.

Parameters:
addr EEPROM, RAM memory address.
val value.


Copyright © 2004 BLADOX
Turbo Programmer version 2.0