Accedere all'ETM di una Nucleo F 401RE tramite codice
-
- Messaggi: 23
- Iscritto il: gio 22 mar 2018, 18:15
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Ciao,
figurati , come si diceva nel film l'uomo bicentenario: "l'uomo è lieto di poter servire"
Comunque sì, nel tuo main chiamerai la tua printf e devi solo aspettarti a terminale seriale le stringhe. Ovviamente debuggala prima perché è sempre codice OpenSource e lascia il tempo che trova in termini di strafalcioni .
figurati , come si diceva nel film l'uomo bicentenario: "l'uomo è lieto di poter servire"
Comunque sì, nel tuo main chiamerai la tua printf e devi solo aspettarti a terminale seriale le stringhe. Ovviamente debuggala prima perché è sempre codice OpenSource e lascia il tempo che trova in termini di strafalcioni .
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Dopo una discreta assenza eccomi ancora, ma sono stato impegnato tra lavoro e università.Antennato81 ha scritto: ↑mar 25 set 2018, 20:31 Ciao,
figurati , come si diceva nel film l'uomo bicentenario: "l'uomo è lieto di poter servire"
Comunque sì, nel tuo main chiamerai la tua printf e devi solo aspettarti a terminale seriale le stringhe. Ovviamente debuggala prima perché è sempre codice OpenSource e lascia il tempo che trova in termini di strafalcioni .
Essendo che i due file printf.h e printf.c li devo includere nel mio progetto mi è sorta una domanda.
Io sto utilizzando il tool IAR.
Ho inizializzato la porta seriale tramite il programma STM32Cube Mx.
Quando apro il progetto su IAR avrò tre cartelle principali:
1) Application
2) Drivers
3) Output
le prime due hanno delle altre sottocartelle che sono rispettivamente:
1.1) EWARM
1.2) Users
2.1) CMSIS
2.2) STM32F4xx_HAL_Driver
Ora mi chiedevo dove fosse più corretto inserire questi due file (printf.h e printf.c ). Essendo che nella 2.2) è presente il file .h relativo alla uart pensavo di inserirlo li. Che ne pensi ?
Grazie
-
- Messaggi: 23
- Iscritto il: gio 22 mar 2018, 18:15
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Ciao lorenrus,
puoi salvare il tuo codice o nella cartella Users oppure creartene una tua dove mettere il codice creato.
Ciao a presto
puoi salvare il tuo codice o nella cartella Users oppure creartene una tua dove mettere il codice creato.
Ciao a presto
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Non ho ben capito se utilizzi il C classico o qualche variante ma se non ho capito maile hai bisogno di accedere al valore della memoria prelevato in qualche registro e da quello che vedo non è il metodo giusto. Anche l'uso della printf è errato.
L'assegnazione di un indirizzo di memoria nel C puro può essere fatta solo tramite & ad un puntatore.
int *p;
int y = 5;
p = &y; //assegna l'indirizzo di memoria di y a p e non il valore 5
L'uso della printf invece dovrebbe avere questo formato a seconda di cio che si vuole stampare:
printf("Indirizzo di memoria di y: %p", &y);
printf("Valore di y: %d", y);
printf("Valore di y dal puntatore p: %d", *p);
-- Output:
Indirizzo di memoria di y: 0x7ffd5076a464
Valore di y: 5
Valore di y dal puntatore p: 5
L'assegnazione di un indirizzo di memoria nel C puro può essere fatta solo tramite & ad un puntatore.
int *p;
int y = 5;
p = &y; //assegna l'indirizzo di memoria di y a p e non il valore 5
L'uso della printf invece dovrebbe avere questo formato a seconda di cio che si vuole stampare:
printf("Indirizzo di memoria di y: %p", &y);
printf("Valore di y: %d", y);
printf("Valore di y dal puntatore p: %d", *p);
-- Output:
Indirizzo di memoria di y: 0x7ffd5076a464
Valore di y: 5
Valore di y dal puntatore p: 5
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Ciao grazie per la rispostatba.free ha scritto: ↑gio 1 nov 2018, 22:05 Non ho ben capito se utilizzi il C classico o qualche variante ma se non ho capito maile hai bisogno di accedere al valore della memoria prelevato in qualche registro e da quello che vedo non è il metodo giusto. Anche l'uso della printf è errato.
L'assegnazione di un indirizzo di memoria nel C puro può essere fatta solo tramite & ad un puntatore.
int *p;
int y = 5;
p = &y; //assegna l'indirizzo di memoria di y a p e non il valore 5
L'uso della printf invece dovrebbe avere questo formato a seconda di cio che si vuole stampare:
printf("Indirizzo di memoria di y: %p", &y);
printf("Valore di y: %d", y);
printf("Valore di y dal puntatore p: %d", *p);
-- Output:
Indirizzo di memoria di y: 0x7ffd5076a464
Valore di y: 5
Valore di y dal puntatore p: 5
Sul puntatore si quello che dici è corretto ma io semplicemente non devo assegnare un indirizzo di memoria come fai tu con: p = &y.
Come ho detto negli altri messaggi io avevo bisogno di vedere il contenuto di un indirizzo che già ho. E' per questo che ho assegnato ad un'altra variabile il contenuto presente in quell'indirizzo e non l'indirizzo in cui è salvato il contenuto.
Ma il mio problema era usare la printf senza un kit esterno di debug e come illustratomi dall'utente Antennato 81 ho dovuto creare una seriale casalinga
.
Grazie
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
La printf funziona bene dopo le modifiche. Il puntatore mi punta correttamente all'indirizzo desiderato. E anche il contenuto è quello presente in quella locazione di memoria. Dico questo perchè ho aperto la finestra di tutti i registri della memoria e nel mio indirizzo ho proprio il contenuto da me visualizzato. Ora un piccolo inconveniente è il seguente: Se voglio modificare il contenuto di tale indirizzo di memoria non me lo modifica nel modo corretto.Antennato81 ha scritto: ↑mer 31 ott 2018, 22:10 Ciao lorenrus,
puoi salvare il tuo codice o nella cartella Users oppure creartene una tua dove mettere il codice creato.
Ciao a presto
Facendo un esempio:
Inizialmente leggendo il contenuto del mio indirizzo ho:
unsigned int +pointer = 0x12
Se lo modifico, ad esempio, con:
unsigned int var = 0x1
*pointer = var;
mi aspetto di trovare nel contenuto di pointer invece di 0x12, 0x1.
Sto sbagliando qualcosa?
Inoltre quando nel tool di IAR sempre dopo aver lanciato il debug vado ad aprire la finestra della memoria,anche sopra citata, se riuscissi a modificare il contenuto di pointer dovrebbe modificarsi anche nella finestra della memoria?
In riferimento ai due allegati.
Le configurazioni che si visualizzano sono quelle che ho trovato all'apertura del programma. Volevo sapere se erano corrette , soprattutto l'allegato in cui si parla del driver del dubugger, li c'è scritto ST-LINK, ma io non lo sto usando.
Grazie di tutto
- Allegati
-
- 2.PNG (24.14 KiB) Visto 5088 volte
-
- 1.PNG (32.62 KiB) Visto 5088 volte
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Qualcuno mi può aiutare ?
Grazie
Grazie
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Ciao,
occorre avere un poco di pazienza... Antennato probabilmente è impegnato... non ha risposto alle mail di lavoro
Re: Accedere all'ETM di una Nucleo F 401RE tramite codice
Ma si certo ci mancherebbe non intendevo lamentarami, anzi non mi permetterei mai. Era solo per stimolare il resto del pubblico del forum
In ogni caso chiedo scusa non era mia intenzione.