Memory
Detailed Description
The MCU ATmega128 has three different types of memory:
- PROGMEM - program memory, flash technology, size 128KB
- RAM - 4KB
- EEPROM - 4KB
TODO see also protected memory, idle malloc
Some of the functions can access any of the memories.
Memory model
For developer following functions simplify the memory access:
For wb() and ww() only the RAM or EEPROM makes sence.
For RAM allocation you can use the standard malloc()
, free()
calls and
To access EEPROM you must use emalloc(), efree() calls.
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.
Defines
Typedefs
- typedef unsigned char u8
- typedef unsigned short u16
- typedef unsigned long u32
- typedef char b8
- typedef short b16
- typedef long b32
Functions
Define Documentation
|
Indicates PROGMEM (flash memory). |
Typedef Documentation
typedef unsigned short u16
|
|
typedef unsigned long u32
|
|
Function Documentation
|
Copy data from PROGMEM to RAM and clear BSS. |
|
STK thread buffer. In this buffer STK command is composed, waits for FETCH and TERMINAL RESPONSE is stored. - Attention:
- Can be used only in stk_thread().
- Examples:
-
certs.c, mc.c, and stkcmd.c.
|
void efree |
( |
void * |
ptr |
) |
|
|
void* emalloc |
( |
u16 |
size |
) |
|
|
|
Return value of bit in the array. - Parameters:
-
buf | pointer on byte array (RAM only). |
bit | |
- Returns:
- 0 or 1.
- See also:
- set_bit()
|
u8 rb |
( |
const void * |
addr |
) |
|
|
|
Read byte from memory. - Parameters:
-
addr | EEPROM, PROGMEM, RAM memory address. |
- Examples:
-
certs.c, and fake_sim.c.
|
void reg_app_data |
( |
void * |
data |
) |
|
|
|
Store (in EEPROM) pointer on application persistent data. - Parameters:
-
- Examples:
-
certs.c, and fake_sim.c.
|
u16 rw |
( |
const void * |
addr |
) |
|
|
|
Read word from memory. - Parameters:
-
addr | EEPROM, PROGMEM, RAM memory address. |
- Examples:
-
certs.c, and fake_sim.c.
|
void set_bit |
( |
u8 * |
buf, |
|
|
u16 |
bit, |
|
|
u8 |
val |
|
) |
|
|
|
Set bit in the array. - Parameters:
-
buf | pointer on byte array (RAM only) |
bit | |
val | 0 or 1. |
- See also:
- get_bit()
|
|
Swap half-bytes, e.g. 0x10 = swap_nibble(0x01), - Parameters:
-
|
void wb |
( |
void * |
addr, |
|
|
u8 |
val |
|
) |
|
|
|
Write byte to memory. - Parameters:
-
addr | EEPROM, RAM memory address. |
val | value. |
- Examples:
-
certs.c, and fake_sim.c.
|
void ww |
( |
void * |
addr, |
|
|
u16 |
val |
|
) |
|
|
|
Write word to memory. - Parameters:
-
addr | EEPROM, RAM memory address. |
val | value. |
- Examples:
-
certs.c, and fake_sim.c.
|
Copyright © 2004 BLADOX
| Turbo version 1.0
|