Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Iniziare con l'ARM

Tipologie, strumenti di sviluppo, hardware e progetti

Moderatore: Foto UtentePaolino

0
voti

[1] Iniziare con l'ARM

Messaggioda Foto Utentestrato » 29 nov 2013, 1:33

Buona notte forum!
Mai mi sarei immaginato di arrivare addirittura ad approcciarmi ad un micro,per di più all'ARM che "a pelle" credo sia molto più complicato del PIC (senza offese per il PIC ma credo che l'ARM sia un po' più esoterico).
Ovviamente la decisione è stata presa dall'alto..Nel mio percorso di studi ho un esame ,Misure per l'Automazione, che tra le varie cose che tratta c'è anche questo bel gioellino.
Il corso che seguii due anni fa non pretendeva affatto di insegnarti l'arte del microcontrollista..ma ti dava lo spunto per iniziare a muoverti in questo nuovo mondo (ho anche da farci un progettino,ma di questo ne voglio parlare più in là).
Dispongo della STM32F103 su qui è montato il cortex m-3.
Ho installato Microvision per programmare ed il Flash loader per caricare il programma sulla scheda.
Ricordo che il primo approccio in aula fu quello di "giocare" con i led gia predisposti sulla scheda,facendoli accendere in sequenza etc etc.
All'epoca ero un gregario e mi limitavo a vedere gli altri come facevano..gli altri se ne sono andati e so rimasto da solo :D
Il Reference Manual è qualcosa di assurdo e non riesco a capire granchè..Come posso iniziare quest'avventura?
Almeno a vedere se la scheda riesce a comunicare col PC.
Grazie dell'aiuto..come sempre.
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41

2
voti

[2] Re: iniziare con l'ARM

Messaggioda Foto UtenteTardoFreak » 29 nov 2013, 2:24

Per lavorarci: scaricati il sistema di sviluppo della Keil versione 4.73 free e scaricati il firmware per la scheda STM32VL-discovery.
Per conoscere il componente vai sul sito della ARM e leggi del Cortex-M3 "Generic user guide"
Poi guardati i progetti di demo del STM32F1xx ed esempi per farti un' idea.

La cosa più importante è capire che un Cortex-M è una MPU a se, ed ogni produttore gli mette sul chip memoria e periferiche. Non vederlo come un componente unico ma come un puzzle con la MPU al centro e tutto il resto collegato.
Non puoi pensare di partire al RESET come un PIC, devi prima prenderti cura del sistema che è dentro il chip stesso (inizializzare accesso alla FLASH, clock, interrupt e tutto il resto).
E' un po' incasinato ma quando ci prenderai la mano non lo sarà più.

Scusa se sono stato troppo sintetico ma l' ora è ... Tarda. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[3] Re: iniziare con l'ARM

Messaggioda Foto Utentestrato » 29 nov 2013, 20:23

Grazie della risposta Foto UtenteTardoFreak.
Il professore ci diede microvision 4.12 credi che con la 4.73 sia meglio?
Sul portatile non dispongo della seriale quindi devo utilizzare un adattatore seriale-USB ma il PC non mi abilita la porta.
Ho scaricato anche i driver..ma niente.

dispositivi.PNG
dispositivi.PNG (2.95 KiB) Osservato 5768 volte


suppongo che sia l'adattatore che è un po' vecchiotto,non lo so.
Ecco una foto
seriale-USB.PNG
seriale-USB.PNG (212.29 KiB) Osservato 5768 volte


Prima di cominciare a capire come programmare avrei desiderio innanzi tutto di riuscire ad interfacciare la scheda col PC.
Ho trovato alcuni esempi di programmi per far lampeggiare i led..ad esempio questo
Codice: Seleziona tutto
/**************************************************************************
*
*@data      05/03/2012

*@brief   Programma accensione led per la scheda ET-STM32F103
*         dotata di microcontrollore STM32F103RB, di cui è possibile
*         reperire i manuali di riferimento all'indirizzo web www.st.com ,
*         manuali utilizzati: - RM0008.pdf , Reference manual ;
*                        - User's Manual of ET-STM32F103.pdf
**************************************************************************/
/*
* word_address = 0x40021000 + 0x18 + 0x00;
* word_bit_band_base = 0x40000000 ;
* bit_band_alias_base = 0x42000000 ;
* bit_number = 4;
*
* 0x4242030C =   0x42000000 + [(0x40021018 - 0x40000000)*0x20] + (0x0C)
*
*/

#define RCC_APB2EN *((long*)0x40021018)
#define ODR_PORTB  *((long*)0x40010C0C)
#define CRH_PORTB  *((long*)0x40010C04) 
#define RCC_APB2ENR_IO_PB   *((long*)0x4242030C)  // indirizzo di bit banding per la porta B


int main(void)
{
unsigned int ii=0;
//RCC_APB2EN=RCC_APB2EN|0x00000008;      // viene abilitata la porta B GPIO
RCC_APB2ENR_IO_PB=1;                //Viene abilitata la porta B utilizzando il Bit bang alias bit
CRH_PORTB=0x11111111;                // viene configurata tutta la porta in uscita

while (1)
{   
for(ii=0;ii<1000000;) ii++;
ODR_PORTB=0xAA00;
for(ii=0;ii<1000000;) ii++;
ODR_PORTB=0x5500;
}
}


Se riesco a farla comunicare col PC,dovrei copiare il codice in muvision e salvarlo in che formato?

EDIT: dispongo di questa development board http://www.futurlec.com/STM32_Development_Board.shtml
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41

1
voti

[4] Re: Iniziare con l'ARM

Messaggioda Foto UtenteTardoFreak » 29 nov 2013, 23:24

Io non ho mai sviluppato senza l' emulatore perché ho adottato un approccio, diciamo, più tradizionale: software per lo sviluppo, scheda di sviluppo ed emulatore.
Nel caso del STM32 l' emulatore ST-LINK costa poco e funziona da Dio.
Non saprei come connettere la scheda che hai (che conosco), o meglio il suo bootloader, per scaricarle i programmi dentro, sempre che sia possibile. :(
Io uso uVision 4 e devo dire che è una potenza.
Però lo uso con gli emulatori quindi non riesco ad esserti d' aiuto.
sorry
Anche io mi connetto alla scheda di sviluppo (KEIL MCBSTM32E) con la seriale ma solo per poter sfruttare da programma l' USART2.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[5] Re: Iniziare con l'ARM

Messaggioda Foto Utentestrato » 30 nov 2013, 2:40

:( purtroppo Foto UtenteTardoFreaknon ti seguo..cioè non ho capito il tuo modus operandi...che intendi per emulatore?
Io con questa scheda di sviluppo cosa faccio di diverso da te?
Comunque io ricordo che si scriveva il programma in microvision e poi lo si caricava sulla scheda,quindi la possibilità c'è (se ho inteso quello che dicevi).
Purtroppo non ti seguo nemmeno quando dici che microvision è una potenza..non è semplicemente una piattaforma dove poter scrivere i programmi per l' ARM?tipo DevC O Eclipse?
Mettiamo il caso che io non disponga della scheda ma che volessi semplicemente iniziare a scrivere programmi per l'arm..c'è un modo per vedere se funziona?Questo intendi per emulatore?
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41

0
voti

[6] Re: Iniziare con l'ARM

Messaggioda Foto UtenteTardoFreak » 30 nov 2013, 2:44

Per ora potresti leggere questo.

A domani, ora vado a nanna.
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[7] Re: Iniziare con l'ARM

Messaggioda Foto Utentestrato » 30 nov 2013, 2:57

lo leggerò nel letto..grazie di vero cuore dell'interessamento Stefano
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41

0
voti

[8] Re: Iniziare con l'ARM

Messaggioda Foto UtenteTardoFreak » 30 nov 2013, 12:31

Forse una fotografia può aiutare.

sviluppoARM.jpg
sviluppoARM.jpg (198.25 KiB) Osservato 5699 volte


Come puoi notare è una scheda simile alla tua con sopra l' STM32 ed è collegata all' emulatore ST-LINK.
L' emulatore è praticamente il PicKit per gli ARM della ST, tutto qui.
Ed io uso la sceda (non solo quella ma anche i miei lavori) programmando il micro con il suo programmator/emulatore/debugger (chiamalo come vuoi).
Come dicevo prima la scheda monta anche un connettore per la seriale che è posto in basso a destra dell' immagine (quello sopra è per il CAN bus), al quale mi collego con un adattatore come il tuo ma solo per utilizzare la seriale del micro.

Sul uVision.
Sarebbe meglio parlare non di uVision ma di software di sviluppo della KEIL. E' ovviamente composto da un IDE (uVision), da un ottimo compilatore, e da un software per il debugging che è veramente fatto bene.
Quindi io scrivo il programma e poi premo il pulsantino magico per entrare in debug. Il programma mi viene scaricato in automatico nel micro, si apre la finestra di debug e lo faccio partire.

Come vedi uso un approccio normalissimo, diciamo canonico.

Ora l' ST-LINK (il baracchino bianco) costa poco ma funziona solo con gli STM32 come il SAM-ICE funziona solo con gli ARM della Atmel. Insieme alla scheda della KEIL (quella della foto) mi è stato fornito anche una versione piccolina dell' U-Link che va bene per tutti gli ARM.
Ma fra gli emulatori per ARM quello che preferisco è il J-Link. Io ho la versione "edu" fatta proprio per gli studenti e funziona benissimo con tutti gli ARM.

E questo è quanto, di più nin zò. :mrgreen:
"La follia sta nel fare sempre la stessa cosa aspettandosi risultati diversi".
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
Avatar utente
Foto UtenteTardoFreak
73,9k 8 12 13
-EY Legend-
-EY Legend-
 
Messaggi: 15754
Iscritto il: 16 dic 2009, 11:10
Località: Torino - 3° pianeta del Sistema Solare

0
voti

[9] Re: Iniziare con l'ARM

Messaggioda Foto Utentestrato » 1 dic 2013, 13:08

grazie Foto UtenteTardoFreak dell' articolo che reputo sia FONDAMENTALE.
Ma a me, con quella scheda di sviluppo che possiedo, non serve l'emulatore giusto?
Cioè io e te volendo otteniamo la stessa cosa ma con metodiche diverse...perché in sostanza la programmazione è identica se usiamo uno stesso ARM,giusto?
Ti ringrazio del tuo contributo :)
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41

0
voti

[10] Re: Iniziare con l'ARM

Messaggioda Foto Utentestrato » 5 dic 2013, 20:48

Foto UtenteTardoFreak mi permetto di taggarti perché volevo chiederti una cosa..ma i pin di uscita/ingresso della scheda di sviluppo che posseggo su cui è montato l' stm32f103 ,che tu sappia, possono essere programmati a mio piacimento,per qualsiasi cosa io voglia fare??
Mi spiego meglio...vorrei accendere dei LED esterni,ho pensato allora di spegnere il driver ,collegato alla porta B(8-15),che mi pilota quelli sulla scheda ed ho "tirato" fuori i pin da collegare ai LED, e fin qui tutto bene..mi sono detto "ma probabilmente cosi come accendo i LED con questa porta posso farlo con qualsiasi altra porta.."
Sono ritornato a mettere mano al codice,ho cambiato i registri e ho fatto quello che dovevo fare per configurare la portaA(0-7),il risultato è stato negativo..dei 10 pin liberi (in verità 8,perché due sono per GND e VCC) solo sei sono configurati correttamente,sugli altri due non arriva proprio tensione.
Stesso risultato se abilito la portaA(8-15), la portaB(0-7) e la porta C(8-13).
Il risultato sperato lo ottengo solo con la portaC(0-7).
Sono andato a controllare sui mille manuali che ho trovato in rete e su ognuno ho trovato che "every pin is freely programmable" "user is free to select functions independent without unlimited hardware system of board".
Mi prendono per il culo o sono io che sto sbagliando qualcosa?
A rigor di logica..se tutte le porte sono uguali e se eseguo la stessa procedura per abilitarle..perché solo 2 funzionano correttamente su 6?
Avatar utente
Foto Utentestrato
978 4 7
Expert
Expert
 
Messaggi: 358
Iscritto il: 12 dic 2011, 22:41


Torna a Realizzazioni, interfacciamento e nozioni generali.

Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti