Atmel Studio: Speicherverschwendung?

Gast #5061224
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?
#5061235
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.
Gast #5061251
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.
Gast #5061303
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.
Gast #5061460
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren