Forum: Compiler & IDEs Atmel Studio: Speicherverschwendung?


von Mike (Gast)


Lesenswert?

Hallo,

beim Stöbern auf der 32bit Controller-Seite von Microchip bin ich auf 
die SAM D Serie gestoßen. Die sind bei gleicher Ausstattung noch ein 
wenig preisgünstiger als die vergleichbaren PIC32MM, ausserdem scheint 
die freie Version des Compilers (gcc) im Gegensatz zum XC32 nicht 
eingeschränkt zu sein. Allerdings kenne ich mich mit Cortex - im 
Gegensatz zum PIC32 - bisher nicht aus. Von Kollegen wurde mir von den 
Atmel-Controllern wegen der schlechten IDE (Atmel Studio) abgeraten. Das 
MPLAB X vom gleichen Hersteller finde ich aber ganz OK.

Daher wollte ich das Atmel Studio mal testen. Das einfachste 
Progrämmchen
1
int main(void)
2
{
3
    /* Initialize the SAM system */
4
    SystemInit();
5
6
    /* Replace with your application code */
7
    while (1) 
8
    {
9
    }
10
}

kompilierte problemlos, füllt aber mit 2128 bytes bereits mehr als die 
Hälfte des RAM. Mein erster Verdacht, dass die SystemInit - Routine 
schuld sei, bestätigte sich nicht.
Weiß jemand, was der Compiler da in den Speicher legt?

: Verschoben durch Moderator
von Jim M. (turboj)


Lesenswert?

Mike schrieb:
> kompilierte problemlos, füllt aber mit 2128 bytes bereits mehr als die
> Hälfte des RAM

Nur 4k RAM auf einem 32-bitter? Das ist extrem knausrig.

Bei den Cortex-M muss man auch drauf achten welche sonstigen Module mit 
im Projekt drin sind. Selbst bei leerer main() kann viel über die 
Interrupt Handler referenziert werden.

Ansonsten: Map File erstellen und nachschauen wo der RAM benutzt wird.

Beitrag #5061243 wurde von einem Moderator gelöscht.
von Stromverdichter (Gast)


Lesenswert?

Schau doch mal ins Linker-File. Da wird wohl für den Stack schon 2k 
reserviert sein. Macht ja auch Sinn, kannst du aber einfach ändern.
Bisher hatte ich immer 25% für den Stack gesehen, hatte aber noch nie so 
einen kleinen wie du.

von Rene K. (xdraconix)


Lesenswert?

Das ist kein Phänomen von Atmel Studio oder den SAMD, das ist wie oben 
schon gesagt eine Cortex-M Sache. Selbiges hier mit STM32 und SW4STM.

von neuer PIC Freund (Gast)


Lesenswert?

> Von Kollegen wurde mir von den Atmel-Controllern wegen der schlechten IDE (Atmel 
Studio) abgeraten.

Dazu Interview mit Steve Sanghi: "Langfristig betrachtet, werden wir es 
ermöglichen, dass die Atmel-MCUs auch auf unseren Entwicklungs-Tools 
laufen."

> im Gegensatz zum XC32 nicht eingeschränkt zu sein

Wer ein bisschen im Netz sucht, findet die 2-3 Binaries, die aus der 
Free- eine Vollversion machen. Für Linux hier im Forum. Natürlich muss 
man dann seine gerechtigkeitsliebenden Augen zudrücken, erhält dafür 
aber O2, O3, Os, flto und mips16.

Ansonsten über den Preis argumentieren. Der konkurriert ja fast mit den 
ATtiny, und da sind die freien 2k RAM doch ganz schön viel.

von Mike (Gast)


Lesenswert?

> Schau doch mal ins Linker-File. Da wird wohl für den Stack schon 2k
> reserviert sein. Macht ja auch Sinn, kannst du aber einfach ändern. Bisher
> hatte ich immer 25% für den Stack gesehen, hatte aber noch nie so einen
> kleinen wie du.

Ich habe mir mal das map-File angeschaut. Ja, der Stack belegt 25%, 
weitere 27% hat sich die libc reserviert. Wofür die so viel - statischen 
- Speicher braucht, verstehe ich allerdings nicht.

Wo kann man die Stack-Größe anpassen? Im Configuration Manager unter 
ARM/GNU Linker->Memory Settings hätte ich das vermutet, finde dort aber 
nichts.

Beitrag #5070354 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.