| Author |
Message
|
lkapiec Poziom 3

Joined: 18 Apr 2005 Posts: 6 Location: Lublin
|
#1
09 May 2006 07:58 WinAvr - prob. z wyjscie poza obszar danych. |
|
|
|
Witam. To jest mój pierwszy post na elektrode.
Problem wygląda następująco:
AVR Memory Usage
----------------
Device: atmega128
Program: 39324 bytes (30.0% Full)
(.text + .data + .bootloader)
Data: 4113 bytes (100.4% Full)
(.data + .bss + .noinit)
(zaczolem programowac winavr dopiero miesiac temu - i jeszcze nie znam teog środowiska)
Chodzi dokladnie o wyjscie poza obszar danych, stąd moje pytania:
>>Data: 4113 bytes (100.4% Full)
>>(.data + .bss + .noinit)
1) czy to jest grozne ?? (kompilator poza taka informacja nic wroznego nie pisze)
2) jesli tak co moge robic by zmniejszyc zajetosc tej pamięci ?
(wrzucanie > static char tablica_stringow[] = {"ble", "bla", "ble"} ; do .progmem powoduje wieszanie sie :cry:)
Prosze o pomoc.
|
|
| Back to top |
|
 |
Google

|
#
09 May 2006 07:58 |
|
|
|
|
|
| Back to top |
|
 |
GienekS Poziom 22

Joined: 12 Oct 2003 Posts: 1964 Location: Tarnowskie Góry
|
#2
09 May 2006 08:17 Re: WinAvr - prob. z wyjscie poza obszar danych. |
|
|
|
| lkapiec wrote: |
(wrzucanie > static char tablica_stringow[] = {"ble", "bla", "ble"} ; do .progmem powoduje wieszanie sie :cry:)
Prosze o pomoc. |
Widocznie wszystkie dane chcesz mieć w pamięci danych. Musisz te co są mniej krytyczne wstawić do pamięci programu. W WinAVR jest to typ
| Code: |
| prog_char tablica_stringow[] = {"ble", "bla", "ble"} ; |
wtedy zwiększy się zajętość pamięci programu a nie danych.
|
|
| Back to top |
|
 |
Google

|
#
09 May 2006 08:17 |
|
|
|
|
|
| Back to top |
|
 |
adamusx Poziom 20

Joined: 28 Feb 2004 Posts: 856 Location: Poznań
|
#3
09 May 2006 09:17 Re: WinAvr - prob. z wyjscie poza obszar danych. |
|
|
|
Po prostu sie RAMik skonczyl :)
Ale z teg co widze to jakis dosc rozbudowany ten program, skoro przepelniles ATmege 128. Jesli uzywasz przerwan to staraj sie umieszczac jak najmniej kodu w nich, bez petli itp zeby stos byl maly.
No i oczywiscie wszystkie dane statyczne jak napisal GinekS powstawiaj do pamieci programu.
|
|
| Back to top |
|
 |
Google

|
#
09 May 2006 09:17 |
|
|
|
|
|
| Back to top |
|
 |
lkapiec Poziom 3

Joined: 18 Apr 2005 Posts: 6 Location: Lublin
|
#4
09 May 2006 12:57 Re: WinAvr - prob. z wyjscie poza obszar danych. |
|
|
|
Dzięki, natchneliscie mnie ...
rozwiązalem to w ten sposób :
... kod przykladowy ...
#include <avr/pgmspace.h>
/* definicje, deklaracje, takie tam */
const prog_char girl_agata[] = "Agata";
const prog_char girl_monika[] = "Monika";
const prog_char girl_beata[] = "Beata";
PGM_P dziewczyny[3] = {girl_agata, girl_monika, girl_beata};
unsigned char message_buffer_[18];
/* funkcje, program gówny */
int main(void)
{
strncpy_P(message_buffer_, dziewczyny[1], 5);
lcd_writetext(message_buffer_);
}
Pozdrawiam
|
|
| Back to top |
|
 |