www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik einige Fragen zu 24HJ256GP610-IPT


Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
MPLAP V8.40  und  C30  V3.21  PIC 24HJ256GP610-IPT

Habe mit C18 eine Variable im Flash(ROM) immer so gemacht.
far rom char table_ablauf[128];

C30 erkennt dieses nicht.

Gruß Siegfried

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich finde zwar anders ans angekündigt keine einzige Frage darin, aber du 
solltest "far rom" durch "const" ersetzen.

Und du solltest das Manual (Helpfile) lesen. Gibt's extra ein Kapitel zu 
den Unterschieden zwischen C18 und C30.

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
habe jetzt eine Variable(Array) im Ram angelegt.

#define max_table_funktion_memory 256

l_table_funktion_memory table_funktion_memory[max_table_funktion_memory] 
=
{
{0,0,0}    //  -->>
};

typedef struct _L_TABLE_FUNKTION_MEMORY
{
unsigned char *pAdr; // Pointer
byte Codex;
byte Bit;
} l_table_funktion_memory;

solange max_table_funktion_memory nicht größer 256 ist, funktionert es.

wenn größer, dann Fehlermeldung
memory.o: Link Error: Could not allocate section .nbss, size = 310 
bytes, attributes = bss near
Link Error: Could not allocate data memory

Gruß Siegfried

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt nach neudeutsch für "RAM ist voll".
Garantiert den richtigen Controller eingestellt?
Noch andere dicke Klöpse im RAM?

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
a) Controller
#if (defined(_PIC24HJ256GP610_))
#include <p24Hxxxx.h>
#else
#error  "PIC-TYP ist nicht richtig!"
#endif // #ifdef (lots of PIC24H devices)

b) wenn wert nicht größer 256

Program Memory  [Origin = 0x200, Length = 0x2aa00]

section       address   length (PC units)   length (bytes) (dec)
-------       -------   -----------------   --------------------
.text         0x200                0x90            0xd8  (216)
.const        0x290              0x1d00          0x2b80  (11136)
.dinit        0x1f90               0xe20          0x1530  (5424)
.text         0x2db0               0x6b2           0xa0b  (2571)
.isr          0x3462                 0x2             0x3  (3)

Total program memory used (bytes):         0x4b96  (19350) 7%


Data Memory  [Origin = 0x800, Length = 0x4000]

section   address      alignment gaps    total length  (dec)
-------   -------      --------------    -------------------
.ndata    0x800                   0          0x1500  (5376)
.nbss     0x1d00                   0           0x136  (310)
.ndata    0x1e36                   0             0x8  (8)
.nbss     0x1e3e                   0             0x2  (2)

Total data memory used (bytes):         0x1640  (5696) 34%


Dynamic Memory Usage

region    address                      maximum length  (dec)
------    -------                      ---------------------
heap      0                                   0  (0)
stack     0x1e40                              0x29c0  (10688)

Maximum dynamic memory (bytes):         0x29c0  (10688)

Executing: "C:\Programme\Microchip\MPLAB C30\bin\pic30-bin2hex.exe" 
"E:\Pic_24_Sourcecode\Stellpult_V1.1\StellpultController.cof"
Loaded E:\Pic_24_Sourcecode\Stellpult_V1.1\StellpultController.cof.
----------------------------------------------------------------------
Debug build of project 
`E:\Pic_24_Sourcecode\Stellpult_V1.1\StellpultController.mcp' succeeded.
Language tool versions: pic30-as.exe v3.21, pic30-gcc.exe v3.21, 
pic30-ld.exe v3.21, pic30-ar.exe v3.21
Preprocessor symbol `__DEBUG' is defined.
Sun Dec 20 19:37:36 2009
----------------------------------------------------------------------
BUILD SUCCEEDED


Gruß Siegfried

PS: arbeite mit C30 erst seit ein paar Tage

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
hier letztes ergebnis.
sind noch mehrere >> Noch andere dicke Klöpse im RAM?
Data Memory  [Origin = 0x800, Length = 0x4000]

section   address      alignment gaps    total length  (dec)
-------   -------      --------------    -------------------
.ndata    0x800                   0          0x1300  (4864)
.nbss     0x1b00                   0           0x136  (310)
.ndata    0x1c36                   0             0x8  (8)
.nbss     0x1c3e                   0             0x2  (2)

Total data memory used (bytes):         0x1440  (5184) 31%

Ram ist trotz der erweiterung noch genügend vorhanden.

Data Memory ist belegt mit 5184 von 16384 Byte

Gruß Siegfried

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Circa 10 Sekunden Suche im Handbuch ergab:
 -mlarge-data
für mehr als 8KB Datenadressraum (Grenze 0x1FFF).

Alternativ kannst du wahrscheinlich auch ein paar Arrays entsprechend 
deklarieren, damit du bei der effizienteren Standardeinstellung bleiben 
kannst und nur diese Klöpse umständlicher adressiert werden müssen.

Lies bitte endlich das verdammte Handbuch durch. Von vorn bis hinten.

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo  @A.K.
habe dieses als Beispiel gefunden.
int foo __attribute__((section("mysection"),address(0x900)));

Stell mir bitte dieses um.

#define max_table_funktion_memory 256 >> soll 512 sein
l_table_funktion_memory table_funktion_memory[max_table_funktion_memory] 
=
{
{0,0,0}    //  -->>
};

Habe es noch nicht gemacht.

Gruß Siegfried

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es hat mich wieder nur eine halbe Minute gekostet, den richtigen Weg 
dafür zu finden. Hatten wir hier im Thread übrigens fast schon, sollte 
dir also bekannt sein.

__attribute__() benötigst du dafür nicht.

Autor: Siegfried Saueressig (dieleena)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo  @ A.K.
habe es leider nur so hinbekommen.

l_table_auswahl_memory table_auswahl_memory[max_table_auswahl_memory] 
__attribute__((section("table_auswahl"),address(0x2000)));

Was mir nicht in den Sinn will, der C30 ist doch ein so moderner und 
leistungsfähiger Compiler, das dieser nicht selbst berechnen kann, wo 
ein Array mit der Größe X, angelegt wird.

Gruß Siegfried

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.