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.
It is possible to share memory between application, i.e. one application may have access to some data of another application.
Shared memory is implemented by key to pointer association, where key is for simplicity one byte number. First application prepares memory and uses u8 shmem_reg_key(u8 key, void *pointer) to associate key<->pointer. Another application makes lookup on given key and pointer is returned by void * shmem_key(u8 key).
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. |
|
General GSM buffer. All the ME<->TURBO<->SIM communication happens here. - Attention:
- Can be modified only in stk_thread() and its content is not valid after STK command.
- Examples:
-
adc.c, braping.c, calc.c, certs.c, fake_sim.c, mc.c, net.c, shmem.c, sysinfo.c, temperature.c, test_idle.c, and test_prot_mem.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 |
) |
|
|
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 |
) |
|
|
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()
|
void* shmem_key |
( |
u8 |
key |
) |
|
|
|
Find pointer associated with key. - Parameters:
-
- Returns:
- pointer or NULL
- Examples:
-
shmem.c.
|
u8 shmem_reg_key |
( |
u8 |
key, |
|
|
void * |
pointer |
|
) |
|
|
|
Register shared memory key - used for finding/denoting shared memory between application.
- Parameters:
-
key | number/byte denoting the shared memory |
pointer | store pointer to be associated with key |
- Returns:
- NO_ERROR or ERR_UNKNOWN if cannot be created
- Examples:
-
shmem.c.
|
|
Swap half-bytes, e.g. 0x10 = swap_nibble(0x01), - Parameters:
-
|
void wb |
( |
void * |
addr, |
|
|
u8 |
val |
|
) |
|
|
void ww |
( |
void * |
addr, |
|
|
u16 |
val |
|
) |
|
|
Copyright © 2004-2006 BLADOX
| Turbo version 1.2
|