Pages: 1 [2] 3 4 ... 35   Go Down
Author Topic: Nuovi sviluppi IDE 1.5.x  (Read 22220 times)
0 Members and 1 Guest are viewing this topic.
Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ma se non erro la malloc viene usata molto spesso nelle librerie arduino, in primis la String, che usiamo praticamente tutti.

Direi proprio di no, il core di Arduino non usa la malloc() e nemmeno la String che è solo un tipo dato del C++, la definizione è allocata nello stack, i dati nel heap, idem per le varie funzioni della avrlibc.

Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

in arduino-1.0.4/hardware/arduino/cores/arduino/ c'è la classe WSrtring.hpèerò mi son sbagliato perchè usa solo la realloc() e non la malloc(), però per intenderci la malloc viene usata e spesso, tanto che anche l'operatore "new" la usa (che poi anche l'uso della new sia deprecabile è un'altra storia)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

però per intenderci la malloc viene usata e spesso, tanto che anche l'operatore "new" la usa (che poi anche l'uso della new sia deprecabile è un'altra storia)

Ok, fammi vedere il codice sorgente dove viene usata la malloc, io dico che non lo trovi.


Logged

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

trovata in:
libraries/Firmata/Firmata.cpp
libraries/SD/File.cpp

(e nel firmware della wifiShield ma non credo che lì venga usata la malloc() "di arduino")
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ma non credo che lì venga usata la malloc() "di arduino"

Non esiste la malloc() di Arduino, è una funzione del C ben definita e fa parte dello standard del linguaggio, poi tocca vedere come viene implementata dai vari compilatori.
Logged

Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2359
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se si sta parlando di AVR libc l'implementazione C++ è parziale http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_cplusplus le funzioni new e delete non sono implementate anche se con poche righe è possibile sopperire, mi sembra comunque un segno chiaro che sono da evitare

Sulla funzione malloc c'è qualche info su http://www.nongnu.org/avr-libc/user-manual/malloc.html non capisco che bug possa aver fissato Arduino essendo parte della libc
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma non credo che lì venga usata la malloc() "di arduino"

Non esiste la malloc() di Arduino, è una funzione del C ben definita e fa parte dello standard del linguaggio, poi tocca vedere come viene implementata dai vari compilatori.


Si, nella 1.0.4 hanno creato una funzione che si chiama malloc() che quindi va a sovrascrivere quella definita dalle librerie standard.
Il file è il nuovo malloc.c all'interno del core di Arduino.
« Last Edit: March 12, 2013, 03:33:57 am by PaoloP » Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Parma
Offline Offline
Edison Member
*
Karma: 20
Posts: 2359
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mumble, il malloc() l'hanno preso dalla libc con piccolissime modifiche, ho notato anche che il "new" è implementato nel core di arduino nel file new.h
Logged

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il New adesso presenta anche le sintassi New[] e Delete[] che nella 1.0.3 e precedenti non c'era.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ma non credo che lì venga usata la malloc() "di arduino"

Non esiste la malloc() di Arduino, è una funzione del C ben definita e fa parte dello standard del linguaggio, poi tocca vedere come viene implementata dai vari compilatori.


Si, nella 1.0.4 hanno creato una funzione che si chiama malloc() che quindi va a sovrascrivere quella definita dalle librerie standard.
Il file è il nuovo malloc.c all'interno del core di Arduino.

mi sa che era implementata da prima della 1.0.4, ma non so il motivo
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Cagliari, Italy
Online Online
Tesla Member
***
Karma: 110
Posts: 6975
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Nelle versioni precedenti alla 1.0.4 non c'è il file malloc.c quindi presumo che venisse utilizzata quella della libc stamdard.
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Nelle versioni precedenti alla 1.0.4 non c'è il file malloc.c quindi presumo che venisse utilizzata quella della libc stamdard.

Esatto, infatti questo file è apparso adesso con la 1.0.4, come scritto nel suo commento è lo stesso presente nelle avrlibc con alcune piccole modifiche.
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 54
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

...sul mio pc la compilazione e il trasferimento sono lentissimi ... Speriamo che migliori qualcosa con questo nuovo ide ...
Logged

https://www.facebook.com/pages/TonyMake/160740054064026

(mezzi a disposizione)*(intelligenza)= K (costante)

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

...sul mio pc la compilazione e il trasferimento sono lentissimi ... Speriamo che migliori qualcosa con questo nuovo ide ...

Prima di tutto bisogno vedere cosa intendi esattamente con lentissimi, magari se ci dai dei tempi in secondi con riferimento ad uno degli sketch di esempio è meglio, e comunque non possono cambiare con una nuova versione del IDE perché sia il compilatore (avr gcc) che il software gestore del caricamento (avrdude) sono sempre gli stessi.
Se realmente hai una eccessiva lentezza, da verificare, questo può dipendere solo da problemi legati al tuo pc e/o sistema operativo.
Logged

Naples (IT)
Offline Offline
God Member
*****
Karma: 6
Posts: 714
Andrea E.
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma perchè sotto ubuntu il repo di arduino è fermo ancora alla 1.0.1?
Logged

Arduino, MODs e DIY: blackstufflabs.com

Pages: 1 [2] 3 4 ... 35   Go Up
Jump to: