quanto scendere a basso livello sugli ARM
Moderatore:
Paolino
23 messaggi
• Pagina 2 di 3 • 1, 2, 3
0
voti
Scusate la mia ignoranza: ma conviene costruirsi a mano il protocollo I2C quando stm32 ha già pronta la sua implementazione hardware di questo protocollo?
xyz ho dato un occhiata agli esempi per stm32 delle openocm e la libreria mi sembra molto simile alla SPL di St che sto utilizzando. Purtroppo ST le sta abbandonando in favore delle HAL che ho provato e non mi piacciono per niente. In più ne parlano tutti male perché parecchio bacate.
1
voti
Su STM32 ho verificato proprio oggi (stimolato dalla discussione) che anche per STM32F4 c'è la nuova versione della libreria con la separazione del basso livello dal resto. Secondo me almeno quel livello (i file con prefisso ll_) vale la pena di utilizzarlo Sono praticamente le SPL riscritte, aggiornate e ampliate ai nuovi modelli.
Quanto all'I2C, chiaro che per dadduni alle prime armi può sembrare impegnativo, scrivere il driver muovendo un bit alla volta aiuta sicuramente a capire le cose. Personalmente ho trovato molto semplice utilizzare la periferica degli STM basta gestire i bit nella routine di interrupt per fare avanzare la macchina a stati dell I2C. Nessun delay a numero di istruzioni fa tutto la periferica che alza un bit con relativo interrupt quando ha finito un'operazione.
Quanto all'I2C, chiaro che per dadduni alle prime armi può sembrare impegnativo, scrivere il driver muovendo un bit alla volta aiuta sicuramente a capire le cose. Personalmente ho trovato molto semplice utilizzare la periferica degli STM basta gestire i bit nella routine di interrupt per fare avanzare la macchina a stati dell I2C. Nessun delay a numero di istruzioni fa tutto la periferica che alza un bit con relativo interrupt quando ha finito un'operazione.
-

luxinterior
4.311 3 4 9 - Master EY

- Messaggi: 2690
- Iscritto il: 6 gen 2016, 17:48
0
voti
In effetti ho visto che la ST si sta impegnando a sviluppare le LL per tutti i core. C'è anche un tool per migrare da SPL a LL:
http://www.st.com/content/st_com/en/pro ... erter.html
probabilmente si sono accorti che le HAL non sono state gradite e stanno correndo ai ripari. Spero che le LL vengano supportate presto da MDK.
2
voti
Io mi chiedo perché la ST continui a tirare fuori pxttxnate di continuo.
Basterebbe una buona libreria standard, ben documentata (non solo con il Doxigen ma con dei pdf e parecchi esempi) che comprenda tutti i modelli e che si posso utilizzare con i vari sistemi di sviluppo come il Keil, IAR e magari con la toolchain gnu.
A mio avviso stanno facendo solo un casino monumentale che crea confusione per niente.
Basterebbe una buona libreria standard, ben documentata (non solo con il Doxigen ma con dei pdf e parecchi esempi) che comprenda tutti i modelli e che si posso utilizzare con i vari sistemi di sviluppo come il Keil, IAR e magari con la toolchain gnu.
A mio avviso stanno facendo solo un casino monumentale che crea confusione per niente.
"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.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
Concordo fanno e disfano di continuo sia nel fw che nell'hw
Hanno una miriade di versioni di micro e se non scegli il filone giusto fai pure fatica a trovarli.
Io stavo per diventare isterico con i registri del power control di un STM32L0 Secondo me nemmeno loro sanno destreggiarsi tra le Nmila opzioni da abilitare/diabilitare a destra e a manca.
Il vantaggio è che nel marasma ci sono cose notevoli a prezzi abbordabili. A suo tempo usavo texas, un altro mondo, fw delle llibrerie scritto in modo meraviglioso ma prezzi molto molto più alti.
Credo che la strada inidcata da Tardofreak sia la migliore usare il minimo indispensabile magari la versione LL vista l'età della SPL e costruirsi da soli gli strati sopra limitandosi a quello che serve.
Hanno una miriade di versioni di micro e se non scegli il filone giusto fai pure fatica a trovarli.
Io stavo per diventare isterico con i registri del power control di un STM32L0 Secondo me nemmeno loro sanno destreggiarsi tra le Nmila opzioni da abilitare/diabilitare a destra e a manca.
Il vantaggio è che nel marasma ci sono cose notevoli a prezzi abbordabili. A suo tempo usavo texas, un altro mondo, fw delle llibrerie scritto in modo meraviglioso ma prezzi molto molto più alti.
Credo che la strada inidcata da Tardofreak sia la migliore usare il minimo indispensabile magari la versione LL vista l'età della SPL e costruirsi da soli gli strati sopra limitandosi a quello che serve.
-

luxinterior
4.311 3 4 9 - Master EY

- Messaggi: 2690
- Iscritto il: 6 gen 2016, 17:48
0
voti
Sto leggendo questo:
https://www.google.it/url?sa=t&source=w ... FvYXM3Gtke
Mi pare che le LL siano più o meno quello che chiedeva tardofreak.
Non so quanta documentazione sia disponibile.
https://www.google.it/url?sa=t&source=w ... FvYXM3Gtke
Mi pare che le LL siano più o meno quello che chiedeva tardofreak.
Non so quanta documentazione sia disponibile.
0
voti
Io ho risolto la portabilità del firmware scrivendo funzioni che utilizzano puntatori a funzioni. Faccio un esempio: le classiche funzioni per pilotare i display LCD alfanumerici. Uso questa funzione di inizializzazione:
Dove
- writeDigitFnc E la funzione che scrive i 4 bit nelle linee D4-D7
- setEfnc 1 o 0 per pilotare la linea E
- setRSfnc 1 o 0 per pilotare la linea RS
- delay10UsFnc per generare un ritardo di n * 10us.
ho scritto le funzioni per praticamente ogni dispositivo che uso insieme ai micro, sia che siano ARM o AVR o PIC.
Per interfacciarmi, per esempio, con una FLASH esterna devo solo scrivere le funzioni per leggere/scrivere bytes o blocchi e per cancellare la memoria o un determinato blocco, e via dicendo. Il modulo contiene invece molte funzioni (anche complesse) per organizzare i dati all'interno della memoria.
Scrivere queste funzioncine che svolgono questi semplici compiti è un lavoro semplicissimo. A volte uso le funzioni di libreria ma il più delle volte non le uso perché, ripeto, sono facili da scrivere.
Con buona pace di tutte le astrazioni messe a disposizione.
Inoltre ho il vantaggio di usare sempre gli stessi moduli indipendentemente dal micro.
E, cosa non da poco, evito di correre sempre dietro alle nuove release delle librerie. Se dovessi farlo diventerei pazzo.
- Codice: Seleziona tutto
void HD44780init(uint32_t linee, uint32_t colonne, uint32_t lineeHW,
void (*writeDigitFnc) (uint32_t dato),
void (*setEfnc) (uint32_t val),
void (*setRSfnc) (uint32_t val),
void (*delay10UsFnc) (uint32_t val))
Dove
- writeDigitFnc E la funzione che scrive i 4 bit nelle linee D4-D7
- setEfnc 1 o 0 per pilotare la linea E
- setRSfnc 1 o 0 per pilotare la linea RS
- delay10UsFnc per generare un ritardo di n * 10us.
ho scritto le funzioni per praticamente ogni dispositivo che uso insieme ai micro, sia che siano ARM o AVR o PIC.
Per interfacciarmi, per esempio, con una FLASH esterna devo solo scrivere le funzioni per leggere/scrivere bytes o blocchi e per cancellare la memoria o un determinato blocco, e via dicendo. Il modulo contiene invece molte funzioni (anche complesse) per organizzare i dati all'interno della memoria.
Scrivere queste funzioncine che svolgono questi semplici compiti è un lavoro semplicissimo. A volte uso le funzioni di libreria ma il più delle volte non le uso perché, ripeto, sono facili da scrivere.
Con buona pace di tutte le astrazioni messe a disposizione.
Inoltre ho il vantaggio di usare sempre gli stessi moduli indipendentemente dal micro.
E, cosa non da poco, evito di correre sempre dietro alle nuove release delle librerie. Se dovessi farlo diventerei pazzo.
"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.
"Parla soltanto quando sei sicuro che quello che dirai è più bello del silenzio".
Rispondere è cortesia, ma lasciare l'ultima parola ai cretini è arte.
-

TardoFreak
73,9k 8 12 13 - -EY Legend-

- Messaggi: 15754
- Iscritto il: 16 dic 2009, 11:10
- Località: Torino - 3° pianeta del Sistema Solare
0
voti
io conoscevo il C in maniera abbastanza approfondita su PC, poi quando ho studiato il VHDL mi sono detto che era troppo difficile rispetto al C e mi sono dedicato a quello, dopo di che adesso che sto tornando al C su micro non ci sto capendo più nulla

0
voti
Cube genera correttamente il codice LL per MDK. E' utile come base di partenza. Vedo che con le LL sono supportati tutti i core...molto bene.
Non riesco a trovare la documentazione... tocca spulciarsi i sorgenti o c'è qualcosa in giro?
grazie
0
voti
luxinterior ha scritto:Ultimamente ho usato la versione per cortex L0 dove c'è uno strato minimale formato dai files con prefisso LL (credo acronimo di Low Level) che è un vestito cucito sopra i vari registri. Ottimo per avere un'interfaccia già pronta con nomi standard predefiniti e i controlli di debug sui parametri
Mi scuso per il parziale OT, sto affrontando lo stesso problema con un pic32.
Col compilatore XC16 esisteva una directory support contenente i file .h descrittori per le singole MCU, bastava includere il file giusto nel sorgente e si potevano usare direttamente i nomi dei registri.
Adesso col pic32 ci vuole il compilatore XC32 e questo va bene, ma pare che i file .h siano spariti, come debbo fare?
P.S. sembra che la frase magica adesso sia:
#include <xc.h>
però non funziona ancora: compila, programma, verifica ma poi non esegue. Stranezze coi fusebit?
23 messaggi
• Pagina 2 di 3 • 1, 2, 3
Torna a Realizzazioni, interfacciamento e nozioni generali.
Chi c’è in linea
Visitano il forum: Nessuno e 2 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)



