[OT] PIC, 8051, MCU e CPU varie

Sono daccordo, ma se lo dici ad Astro ti infila un chip a 144 pin dentro un occhio! Secondo me lui setta ogni singolo bit di ogni singolo registro possibile, e ti dice che non si può fare altrimenti, pena il decadimento del 97% delle prestazioni della MCU... :grin:

Quella pagina non è così nascosta smiley-wink
Se vai qui:
http://www.microchip.com/xcdemo/xcpluspromo.aspx
e poi clicchi in alto a destra la voce "read me" sotto a XC32 vieni ricondotto proprio a lei, anzi ad una versione più aggiornata.

Vero, rimane il fatto che io non ci sono riuscito ad arrivare a quella pagina e che visto che sono contorto non mi aspetto la release note sotto il link readme, non oso pensare quanto sia difficile per me trovare il link ai sorgenti visto che degli eseguibili per linux non me ne faccio nulla.

Io sento proprio di non essere amico di microchip, sento molto più vicino TI anche più di atmel, tanto che spenderò dei soldini per TI.

Al link seguente c'è spunto per collegarci ad un link in cui abbiamo dipanato la questione di licenza a cui a partecipato Babbuino, anzi forse quel thread lo ha creato lui. In sostanza mspgcc non può essere rilasciato GPL perchè non c'è stato accordo per la licenza GPL e quindi TI e Red Hat si sono messe insieme per creare un nuovo back-end. Bella storia no.
Poi in 30 secondi ho trovato il link di mio interesse sul sito di TI Arm-based processor design & development | TI.com,
30 secondi perchè la connessione è lenta statera :smiley:
Decisamente mi sento a casa con TI.

PS:
sono meravigliato dal datasheet del PIC.... è spiegato il Program Counter, come viene gestito lo stack, le modalità di indirizzamento della memoria.... incredibile. Nei d/s Atmel 'ste cose non le ho mai viste!

Si, ma non avevano scelta, perché quella informazione è chiusa dentro il compilatore, mentre per avr-gcc è aperta dentro il compilatore. Che differenza fa una sola parola eh.

Ciao.

Sono daccordo, ma se lo dici ad Astro ti infila un chip a 144 pin dentro un occhio! Secondo me lui setta ogni singolo bit di ogni singolo registro possibile, e ti dice che non si può fare altrimenti, pena il decadimento del 97% delle prestazioni della MCU... smiley-mr-green

Astro le macro le conosce da prima che le conoscessi io, quindi dubito che si metta li a riscrivere da zero, poi tutti i programmatori hanno le proprie librerie di funzioni personali.

Ciao.

@Mauro:
sicuramente ne sai molto più di me perché vedo che "bazzichi" il codice GNU GPL da diverso tempo.
Però io leggendo il file citato di Microchip leggo:

GNU General Public License

The MPLAB® XC32 Compiler for PIC32 MCUs tools are written and distributed under the GNU General Public License (GPL) which means that its source code is freely distributed and available to the public.

The source for the tools under the GNU GPL may be downloaded separately from the Microchip WWW web page. You may read the GNU GPL in the file named COPYING3.GPL located the docs subdirectory of your install directory. A general discussion of principles underlying the GPL may be found at What is Copyleft? - GNU Project - Free Software Foundation.

Support code provided for the header files, linker scripts, and runtime libraries are proprietary code and not covered under the GPL. See the full MPLAB® XC32 Compiler for PIC32 MCUs License Agreement for details.

Loro si appoggiano a gcc, che è GNU. Così come gli altri strumenti che usano (linker, librerie ecc...).
La restrizione è legata solo al software specificato nell'ultimo paragrafo: essi forniscono degli strumenti "chiusi" che sono proprietari Microchip e di cui non forniscono il codice. Che sono poi quelli che regolano anche il grado di ottimizzazione del codice (immagino).

Prendi Atmel. E' vero che fornisce binari precompilati per Linux e sorgenti della toolchain ma la compilazione della toolchain è un vero dramma omerico, ed è difficile che un utente normale ci riesca. Alla fine, questo sceglie i binari precompilati.

C'è anche il nuovo Launchpad con MSP430F5529 con caratteristiche hardware (porte RAM e flash) simili al Mega ma a 25MHz e con AD a 12 bit, più porta USB nativa e altro a 13$ compreso la spedizione.

L'ISA e' pubblica per entrambi, ogni compilatore si rifa' all'ISA per implementare la machine layer. Sono scelte diverse, cosa mettere nei datasheet e cosa no.

Quindi tu dici che visto che L'ISA è publica, tutti i compilatori per AVR usano lo stesso modo di creare e gestire lo stack?
No vero, lo stack dipende anche dalla implementazione del compilatore?
Pure come viene usato PC dipende dal compilatore.

Perobabilmente diciamo la stessa cosa ma ci sono una infinità di dettagli, comunque anche nel DS di Atmel c'è riferimento a PC, ma manca lo stack.

Loro si appoggiano a gcc, che è GNU. Così come gli altri strumenti che usano (linker, librerie ecc...).
La restrizione è legata solo al software specificato nell'ultimo paragrafo: essi forniscono degli strumenti "chiusi" che sono proprietari Microchip e di cui non forniscono il codice. Che sono poi quelli che regolano anche il grado di ottimizzazione del codice (immagino).

Prendi Atmel. E' vero che fornisce binari precompilati per Linux e sorgenti della toolchain ma la compilazione della toolchain è un vero dramma omerico, ed è difficile che un utente normale ci riesca. Alla fine, questo sceglie i binari precompilati.

Non perdo tempo con quel compilatore, quindi non so cosa hanno di proprietario, cioè non mi basta che dicano runtime library, linker script, lo considero una perdita di tempo e nascono discorsi campati in aria, cioè "probabilmente" la runtime library è una libreria shared .so che visto si tratta di 32bit c'è spazio per caricare librerie a tempo di esecuzione. Per i linker script si tratta appunto di codice script protetto ma visionabile in quanto si tratta di file ASCII.

Come dicevo è il far west, c'è un modo prestabilito per fare le cose, conosciuto da tutti, praticabile, accessibile, documentato, ecc, ma questi scelgono la strada che conoscono solo loro. Poi ci sono quelli duri di orecchio e di cervello (senza offesa), se c'è licenza GPL, prima di tutto il sorgente, il binario è opzionale. Rispettando la GPL posso assicurare che non ho mai avuto difficolta a passare da sorgente a binario, il contrario non mi è mai riuscito :stuck_out_tongue_closed_eyes:

Leggendo la discussione tra Red Hat e TI emergono i soliti discorsi, gli sviluppatori GNU, sono scettici di fronte allo sviluppo partecipato tra GNU e major, perchè la storia ci insegna che il tentativo è di chiudere il codice, in questo caso tutto sembra essere fatto nel rispetto della GPL e nella prassi consolidata da anni di sviluppo GNU, quindi mail list e tutti gli strumenti che permettono di lasciare traccia indelebile negli anni a venire. Poi Red Hat è un nome una garanzia come pure Debian, quell'altra francese con il nome del fumetto e quella tedesca di nome dimenticato hanno sbandato e continuano a correre fuori strada con un mezzo non adatto al fuori strada e quindi e solo questione di tempo. :stuck_out_tongue:

Ciao.

Ragà se ci incartiamo ancora una volta con la storia delle Licenze, non ne usciamo più... :frowning:

Il post aveva altre intenzioni...

zoomx:
C'è anche il nuovo Launchpad con MSP430F5529 con caratteristiche hardware (porte RAM e flash) simili al Mega ma a 25MHz e con AD a 12 bit, più porta USB nativa e altro a 13$ compreso la spedizione.

Cè anche una versione Launchpad che viene fornita di 2 chip DIP e viene spedita GRATIS!

Tornando ai PIC c'è l'architettura a 16 bit con la serie PIC24 (i dsPIC sono dei PIC24 con l'engine DSP).

Le differenze con la 8bit non sono enormi, però sono sostanziali.

Ovviamente c'è una maggiore potenza di elaborazione, questo perchè un PIC 8bit esegue una istruzione (non tutte) ogni 4 cicli di clock, mentre i 16bit una istruzione ogni soli 2 cicli di clock. Ovviamente poi c'è il data path che si alllarga di altri 8bit, c'è un moltiplicatore hardware e un "mezzo" divisore harware che potenzia ulteriomente le istruzioni matematiche.
Poi ci sono altre funzioni in più o potenziate rispetto agli 8bit, ma esulano dall'uso dell'Hobbista medio, tipo sapere che lo stack dei 16bit è software, che c'è un modulo di Barrel Shifting, un Program Space visibility ecc.

Innanzitutto ci sono i bit di configurazione. I 16 bit sono dotati di una enorme mole di registri di configurazione, e settarli tutti è complesso. La notizia buona è che quasi tutti si possonono lasciare di default, quindi senza dover per forza inserire qualche word di configurazione.
Una volta presa confidenza con le funzioni principali, e superato felicemente il trauma del passaggio dagli 8bit, si può aprire i "cassetti" interni, vedere cosa c'è dentro e come funziona.

Un semplice programma scritto per un 8bit può girare anche su un 16bit.

Facendo l'esempio della lettura di un ingresso analogico, se usiamo la modalità "complicata", pura, ovvero di settare tutti i registri a mano, il programma non sarà affatto uguale, perchè i registri del 16 sono di più e più "lunghi", però se usiamo la solita libreria per l'ADC, versione 16bit, ecco che quanto scritto per l'8bit, e cioè:

int val;
val = ADC_Read(2):

per un 16bit diventa:

int val;
val = ADC_Read(2);

Interessante, vero?

Io ho le lauchpad MSP430 (prese 2), TivaC e Stellaris. Con il WIFI launchpad, ottime: costano poco e rendono molto.

Se pensi che per una UNO devi spendere più di 20 euro, e per una MEGA anche più di 40, mi viene da dire alla faccia della destinazione "economica" per studenti!

Stellaris è a 32 bit e l'ho pagata 9.99 dollari, senza IVA o tasse, quindi meno di 8 euro...

BaBBuino:
Se pensi che per una UNO devi spendere più di 20 euro, e per una MEGA anche più di 40, mi viene da dire alla faccia della destinazione "economica" per studenti!

Stellaris è a 32 bit e l'ho pagata 9.99 dollari, senza IVA o tasse, quindi meno di 8 euro...

E' vero,una ce l'ho pure io , ma...
Arduino da da mangiare agli italiani, ha un supporto pressochè infinito finche cè il Forum (noi compresi) ed è un prodotto made in Italy.

E poi sono prodotti con targhet diversi basti pensare alla facilità d'uso dell'ide di arduino (con i suoi pro e contro), non è semplicissimo usare IAR per compilare programmi per quei chippettini e pure alcuni prof delle superiori, e di questo ne sono certo, non sarebbero in grado di configurare IAR ne altri compilatori... Arduino escluso (in quanto non cèun tubo da configurare :P)

Vero, infatti la forza di Arduino non è nell'Harware ma semplicisticamente nell'IDE, ossia in quel porting da un linguaggio ostico(?) come il C ANSI per Embedded, ad un C più amichevole, cui viene nascosto all'utente la parte più rognosa.

Il resto, il supporto da millemila utenti, non può essere un valore considerato strettamente commerciale (anche se in ultima analisi lo è) perchè è lavoro nostro, degli utenti, non del Team interno.

Arduino può essere inizio e fine di un percorso per chiunque abbia (ma nemmeno tanto importante) minime cognizioni "elettriche", ma per chi ha qualche competenza tecnica di settore, non può essere che una piattaforma di lancio verso Hardware più gratificanti.

Io stesso devo ringraziare Arduino che, dopo 20 anni di progettazione analogica che mi ha dato grandi soddisfazioni, mi ha reintrodotto in quel mondo digitale che avevo seguito con grande interesse (se non amore..) e profitto durante il periodo scolastico.

Ma una volta visto che tutto è relativamente facile, si passa oltre. Ovvio che questo oltre è contingentato all'uso che se ne deve fare, se ludico, hobbistico, o professionale. E in quest'ultimo caso bisogna fare il distinguo tra chi, come me, ne fa un uso marginale, occasionale e non critico, sebbene ad uso Aziendale, e chi invece ne deve fare pesantemente uso continuativo, con tutti gli strumenti che il mercato offre per il Prosumer.

Ma avete visto Energia? Si usa il linguaggio Arduino anche su quelle schedine, certo, non supporta molte librerie, ma per progetti basic non è male..

Il porting di Arduino credo che sia oramai cosa di quasi tutte le piattaforme di MCU:

  • Microchip PIC: Pinguino, chipKIT
  • Texas Instruments MSP430: Energia
  • Renesas: Sakura (un mostro 32 bit a 96 MHz e quasi 150 MIPS)
  • ST STM32: Maple

Più le varie LinuX embedded con qualche chip Arduino compatibile, con IDE installabile sul SOP.

Se non vi bastano 8 bit e 16 MHz per far lampeggiare il vostro LED, e temete che ci sia qualche ritardo nell'eseguire le istruzioni di delay ad 1Hz... potete comprarvi questa: :grin:

Gadget Renesas SAKURA board (Arduino compatible) based on Renesas RX63N series 32-bit MCU. It has on-chip flash memory and enhanced communication functions, including an Ethernet controller and USB 2.0 Host/Function.

On-chip flash memory of RX63N is programmable by USB mass storage mode, and the on-chip flash memory of RX63N is visible as a drive on your PC.

You can program the Gadget Renesas SAKURA board with the Cloud base compiler supported by Renesas. With the Applet on the Android smart phone, makes it possible to build an application with a module plug-in your own application. In this way, anyone can build a system without complex programming.

Summary of the GR-SAKURA board

MCU :RX63N (R5F563NBDDFP)
built-in FPU
Operating frequency :96MHz
Flash Memory :1MB
RAM :125KB
Interface Ethernet-enabled
USB function / Host
XBee™ support
JTAG-compatible
I/O 55: Digital I / O pin
16 pin analog input
LAN (RJ45) connector,
5VDC jack and a micro SD card socket already soldered on board. -

Bella, la comprerei solo per il suo color rosina :stuck_out_tongue_closed_eyes:

BTW, tornando al post precedente.... la diffusione di Arduino è data proprio dalla relativa semplicità di programmazione. Il pezzo forte di Arduino è proprio quello di aver scritto un core che altro non è se non un'estensione al C++ che ti offre su un piatto d'argento la "pappa scodellata", come si dice dalle mie parti. Ossia vuoi leggere un pin? Ti fai un digitalRead senza preoccuparti di tante cose.
Vuoi un segnale PWM? Fai un analogWrite così che è il codice che si occupa di settare i timer per te.

Ma il fatto strano è che anche molte altre MCU hanno la possibilità di essere programmate "quasi" così.

Il fatto di aggeggiare i registri confesso che è intrigante quando capisci cosa fare, e almeno su Seriale UART e ADC sarebbe da imparare come fanno a funzionare a basso livello. Non sono poi così difficili da configurare.

Poi se uno vuole fare con una singola istruzione ADC_Read(2); o UART1_Init(9600); lo può fare anche con altre MCU.

Anzi... se si guarda all'istruzione Arduino per inizializzare la seriale, e a quella per un PIC a 16bit (UART1_Init(9600):wink: vediamo che è addirittura più semplice per la MCU a 16 bit!

Ma questa sakura è bellissima
Che significa arduino compatibile ? È integrabile nell ide ufgiciale arduino oppure sempre un loro ide si deve usare ?
Usando una eth shield si hanno 2 rj45 a bordo :slight_smile:
Prezzo ?

Bella eh? Anchio me ne sono imnamorato! :*

La board viene venduta da RS, versione scarsa a circa 33 euro, versione ricca circa 45 euro

Purtroppo la IDE, sebbene utilizzi lo stesso linguaggio Arduinesco (quindi tutto il reference rimane valido) è in formato "Cloud" quindi devi accedere al loro sito, registrarti, lanciare la IDE-web, scrivere il codice, e scaricarti il sorgente.

Si, inserendo una Ethernet Shield avresti due Porte Ethernet (presumo che si gestiscano con funzioni tipo Ethernet0 e Ethernet1 per discriminare tra le due).

Qua un bel PDF di intro:

http://docs-europe.electrocomponents.com/webdocs/11db/0900766b811dba64.pdf