Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-05-2005, 08:54   #1
Cecilia76
Senior Member
 
L'Avatar di Cecilia76
 
Iscritto dal: Aug 2004
Messaggi: 1399
C++ e processori Sharc

Salve a tutti,

qualcuno sa qualcosa sulla programmazione dei processori Sharc DSP in C++? Sto facendo un progetto ma ho problema nella gestione della memoria: ogni volta che faccio una new ho un errore di out_of_memory.

Qualche anima santa???
__________________
If you eat a live frog in the morning, nothing worse will happen to
either of you for the rest of the day.
Cecilia76 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 08:48   #2
Cecilia76
Senior Member
 
L'Avatar di Cecilia76
 
Iscritto dal: Aug 2004
Messaggi: 1399
Uppettino.

Nessuno sa nulla?
__________________
If you eat a live frog in the morning, nothing worse will happen to
either of you for the rest of the day.
Cecilia76 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 09:31   #3
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Quote:
Originariamente inviato da Cecilia76
Salve a tutti,

qualcuno sa qualcosa sulla programmazione dei processori Sharc DSP in C++? Sto facendo un progetto ma ho problema nella gestione della memoria: ogni volta che faccio una new ho un errore di out_of_memory.

Qualche anima santa???
Ho scritto qualcosina per un DSP della famiglia SHARC, ma erano piccole routine in assembler, ottimizzate per la velocità.

Però posso provare a darti una mano: usi un sistema operativo sul DSP? Lo chiedo perché (da quello che so) per l'allocazione dinamica della memoria probabilmente è necessario o un sistema operativo o comunque qualcosa che gestisca lo spazio di memoria.
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 09:51   #4
Cecilia76
Senior Member
 
L'Avatar di Cecilia76
 
Iscritto dal: Aug 2004
Messaggi: 1399
Intanto grazie mille per la risposta.
Dunque, il processore (un ADSP-21161N) è piazzato su una evaluation board collegata al PC (sotto Windows purtroppo) tramite USB.
Io scrivo il codice con VisualDSP++ 4.00: è un programma in C++ con delle routine in assembler che gestiscono l'I/O delle seriali audio. Ti cerco di descrivere il problema.

Sono partito dall'esempio CTalkthru fornito con EZKit lite (il kit per l'evaluation board). Ho trasformato il progetto in un progetto C++ e dopo un pò di modifiche tutto è andato a posto.
Il problema è che sto usando il file LDF per la gestione della memoria di CTalkthru e non so se vada bene. I file LDF sono dei file del linker in cui si indica in che segmento di memoria allocare porzioni di codice.
Ogni volta che uso l'operatore new del C++ per l'allocazione della memoria (ad esempio per creare un oggetto) ho
un messaggio di out_of_memory nel seg_pmco.
Non so proprio che fare perchè la gestione LDF è piuttosto complicata e a me fondamentalmente non interessa:
sarebbe sufficiente potere allocare qualche oggetto e usarne un metodo nella funzione Process_Samples.
Ad esempio:

LoopOscillator* osc;

Process_Samples () {
double v = osc.tick ();
// parti per mandare v alla seriale d'uscita

}

int main () {
// inizializazione del processore
osc = new LoopOscillator ();

//settaggio flag di interrupt a Process_Samples
for (;; )
asm ("idle");

}

LoopOscillator è la mia classe ma quando nel main chiamo l'operatore new ho out_of_memory.
Non so se ho chiarito un pò il problema. Grazie ancora, Cec
__________________
If you eat a live frog in the morning, nothing worse will happen to
either of you for the rest of the day.
Cecilia76 è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 16:26   #5
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Purtroppo non ho familiarità con l'ambiente che utilizzi, e la mia esperienza con gli SHARC è molto datata (ADSP-21020) e limitata al solo assembler.

A quanto dici il problema sembra essere l'allocazione dinamica. Avresti problemi ad usare un'allocazione dell'oggetto direttamente come variabile statica senza bisogno del new:

LoopOscillator osc;
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
Old 14-05-2005, 23:03   #6
Cecilia76
Senior Member
 
L'Avatar di Cecilia76
 
Iscritto dal: Aug 2004
Messaggi: 1399
Ciao,

non posso allocare staticamente gli oggetti perche il costruttore richiede obbligatoriamente dei parametri. Dovrei cambiare l'architettura di tutto il sistema per evitarlo. Sarebbe sicuramente più proficuo capire meglio la gestione della memoria.

Cec
__________________
If you eat a live frog in the morning, nothing worse will happen to
either of you for the rest of the day.
Cecilia76 è offline   Rispondi citando il messaggio o parte di esso
Old 15-05-2005, 11:28   #7
lombardp
Senior Member
 
L'Avatar di lombardp
 
Iscritto dal: Jun 2002
Città: Firenze
Messaggi: 630
Quote:
Originariamente inviato da Cecilia76
Ciao,
non posso allocare staticamente gli oggetti perche il costruttore richiede obbligatoriamente dei parametri. Dovrei cambiare l'architettura di tutto il sistema per evitarlo. Sarebbe sicuramente più proficuo capire meglio la gestione della memoria.
Ho capito, dall'esempio che avevi riportato non avevo visto parametri, per cui ti avevo suggerito quella soluzione. Di sicuro capire meglio la gestione della memoria è la via maestra.


Comunque, se utilizzi l'allocazione dinamica "solo" per passare dei parametri al costruttore, non dovrebbe essere troppo problematico passare ad una allocazione statica (da quello che so, l'allocazione dinamica serve obbligatoriamente se non sai a priori "quanti" e "quali" oggetti allocare).


Invece di fare : LoopOscillator* osc;
e poi : osc = new LoopOscillator (par1, par2);

potresti fare : LoopOscillator osc;
e poi : osc.init(par1,par2);
__________________
---> Lombardp
CSS Certified Expert (Master Level) at Experts-Exchange
Proud user of LITHIUM forum : CPU technology
Webmaster of SEVEN-SEGMENTS : Elettronica per modellismo
lombardp è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Guild Wars 3 è ufficiale: ArenaNe...
I giocatori voltano le spalle a Linux? L...
Instagram Plus arriva in Italia: cosa in...
XBOX: la nuova CEO non ha ancora le idee...
Intel non ha intenzione di abbandonare i...
La AI Mode sarà attiva di default...
Marvel's Wolverine non sarà un op...
Star Wars Zero Company esce ad agosto: n...
Bonus Decoder: fino al 70% di sconto con...
Virtua Fighter è tornato e non &e...
Il ritorno di Fumito Ueda, autore di Sha...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 14:45.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v