PDA

Επιστροφή στο Forum : Μετακινηση απο PIC σε ARM



keto
10-04-19, 15:22
Καλησπερα,
ειμαι φοιτητης και εδω και 2 χρονια ασχολουμαι με τους PIC18,32 και θελω να περασω στους ARM και συγκεκριμενα τους STM32.Εχω ψαξει πολυ στο google για tutorials για να αρχισω απο καπου.Θα ηθελα να μου πει καποιος που εχει ασχοληθει πως ακριβως γραφεις firmware για αυτους.Δηλαδη στους PIC που ειμαι απλα ανοιγεις το datasheet του μικροελενχτη διαβασεις πχ για την UART,θετεις τους καταλληλους καταχωρητες και τις συναρτισεις που θες και το τρεχεις(χρησιμοποιω xc8 σαν compiler).Στους STM σε ολα τα tutorials χρησιμοποιουν το RTOS και τις συναρτησεις του χωρις να μπλεκουν με καταχωρητες κλπ.Ετσι δουλευουν οι STM32?Δεν μπορει καποιος να χρησιμοποιεισει καταχωρητες οπως στους PIC με εναν compiler επιπεδου xc8 και οχι υψηλου επιπεδου συναρτισεις μεσω του RTOS?Εγω θελω να αρχισω με κατι που ειναι κοντα στην λογικη των PIC για να μου ερθει πιο ευκολα,ο μονος τροπος στους STM32 ειναι να μαθεις τις συναρτισεις του RTOS?Θα πει καποιος μπορεις να γραψεις και απλη assembly αλλα δεν θελω τοσο χαμηλο επιπεδο,θελω κατι ενδιαμεσο σε assembly και RTOS οπως στους PIC.

kioan
10-04-19, 15:57
Υπάρχουν 3 βασικοί δρόμοι που μπορείς να ακολουθήσεις:


CMSIS (Cortex Microcontroller Software Interface Standard)
SPL (Standard Peripheral Library)
HAL (Hardware Abstraction Layer)


Μια περιγραφή για το τι σημαίνουν τα παρακάτω, μπορείς να βρεις εδώ (https://blog.domski.pl/spl-vs-hal-which-one-should-you-use/).


Αυτό που θέλεις εσύ, τον προγραμματισμό σε επίπεδο καταχωρητών κλπ είναι το CMSIS. Τα άλλα δύο εισάγουν abstraction layers αποκρύπτοντας τις λεπτομέρειες του επεξεργαστή (αλλά κάνουν τον κώδικά σου πιο εύκολα μεταφέρσιμο από μια οικογένεια επεξεργαστών σε κάποια άλλη).

keto
10-04-19, 16:32
Υπάρχουν 3 βασικοί δρόμοι που μπορείς να ακολουθήσεις:


CMSIS (Cortex Microcontroller Software Interface Standard)
SPL (Standard Peripheral Library)
HAL (Hardware Abstraction Layer)


Μια περιγραφή για το τι σημαίνουν τα παρακάτω, μπορείς να βρεις εδώ (https://blog.domski.pl/spl-vs-hal-which-one-should-you-use/).


Αυτό που θέλεις εσύ, τον προγραμματισμό σε επίπεδο καταχωρητών κλπ είναι το CMSIS. Τα άλλα δύο εισάγουν abstraction layers αποκρύπτοντας τις λεπτομέρειες του επεξεργαστή (αλλά κάνουν τον κώδικά σου πιο εύκολα μεταφέρσιμο από μια οικογένεια επεξεργαστών σε κάποια άλλη).

Eυχαριστω για την πληροφορια,εγω ειχα δει μονο την HAL που δεν μ αρεσε.Την SPL βλεπω την απερριψε ST οποτε ο μονος δρομος ειναι να παω στην CMSIS να δω και αυτην.Υπαρχει καποια εταιρεια που να βγαζει υλικο με ARM αλλα να εχει καλυτερο documentation και καποιον compiler με τα θελω που περιεγραψα πιο πανω και να ειναι αξιοπιστη για να κινηθω προς αυτην(αν και βλεπω πως ολοι που ασχολουνται με ARM ,τους STM χρησιμοποιουν)

picdev
10-04-19, 17:40
στους arm κάθε εταιρεία φτιάχνει τα δικά τους περιφερειακά , οι spl δεν υπάρχουν πλέον οπότε πας αναγκαστηκά σε HAL.

Οι stm32 έχουν μεγάλη κοινότητα και γενικά ειναι μονόδρομος, επίδης έχουν κάνει κορυφαίες συνεργασίες για GUI, έχουν αγοράσει το true studio που ειναι πολύ καλο εργαλείο ανάπτυξης.

https://atollic.com/truestudio/


όπως επίσης και με το touch gfx

https://www.touchgfx.com/product/stm32-gui/

Επειδή όπως λες έγινε μεγάλη φασαρία με τους HAL , αφού ειναι πιο abscract απο τους SPL , έχουν βγάλει και τους LL.
https://www.st.com/content/ccc/resource/technical/document/user_manual/2f/71/ba/b8/75/54/47/cf/DM00105879.pdf/files/DM00105879.pdf/jcr:content/translations/en.DM00105879.pdf

οι hal δεν ειναι απαραίτητα κάτι κακό αφού μπορείς εύκολα να κάνεις αλλαγή απο τον έναν επεξεργαστή στον άλλον, κανένας mcu δεν θα κυκλοφορεί για πάντα,αλλά σίγουρα θες παραπάνω μνήμη και πόρους.
οπότε καλό ειναι στο software που γράφεις να διαχωρίζεις τους drivers για τα peripheral με το πρόγραμμα σου, ώστε το intergration να γινεται εύκολα.

οι stm32 ειναι η καλύτερη επιλογή πιστεύω λόγω των συνεργασιών και αυτά που προσφέρει δωρεάν

SProg
10-04-19, 18:17
HAL. Ξεχνα ASM, αυτα μονο στα προπτυχιακα ή αν γραφεις δικους σου Drivers (προφανως και οχι)

picdev
10-04-19, 18:45
και με C κανονικά γράφεις drivers και σετάρεις bit, δεν χρειάζεται ASM

SProg
10-04-19, 19:10
Είσαι ένα επίπεδο πάνω στη C, εξ ορισμού με τη C εκτελείς περισσότερες εντολές. Ιδανικός C compiler δεν υπάρχει.

Αν εννοεις πως με τους συγχρονους compilers δεν έχει νοήμα η ASM τότε συμφωνώ (και πάλι πλην σπάνιων εξαιρεσεων).

keto
11-04-19, 14:14
Aρα με HAL παιζουν οι περισσοτεροι?

mtzag
11-04-19, 14:40
Γενικα να ξερεις οσο περναει ο καιρος οι mcus θα γινοται ποιο γρηγοροι με περισσοτερους πορους κτλπ
οποτε τα διαφορα optimizations δεν χουνε τοσο νοημα(αυτα θα τα κανουνε στο μελλον ολο και καλυτερα οι compilers)
οσο εχει η μεταφερσιμοτητα του κωδικα και το ποσο ποιο απλος ειναι.
Οποτε τα frameworks που εισαγουνε abstraction layers επιταχυνουνε την διαδικασια αναπτυξεις χωρις να σε μπλεκουνε με ανουσιες λεπτομεριες.
Το ιδιο εγινε και στους υπολογιστες με τη java.
Οσο περναει ο καιρος οδηγουμαστε σε γλωσες/frameworks υψηλοτερου επιπεδου..
Η asm εχει καταργηθει στην πραξη για αναπτυξη εδω και πολλα χρονια αλλα δεν θα καταργηθει ποτε για το reverse engineering.
Στο reverse engineering θα ειναι παντα η μονη και μοναδικη λυση.

picdev
11-04-19, 16:58
ιδανικός compiler για τη C είναι ο GCC , άλλωστε όλοι με αυτό δουλεύουν

picdev
11-04-19, 16:59
Aρα με HAL παιζουν οι περισσοτεροι?

είναι μονοδρομος όπως σου είπα , είδες καθόλου τους LL drivers ?
οι βιλβιοθήκες LL βγήκαν επειδή καταργήθηκαν οι SPL.

εδώ θα βρεις τη κοινότητα openstm32 με περιβάλλον ανάπτυξης που βασίζεται στο eclipse
http://www.ac6-tools.com/content.php/content_SW4MCU/lang_en_GB.xphp

kioan
11-04-19, 22:34
Η ST πλέον έχει αγοράσει το Atollic TrueSTUDIO (https://atollic.com/truestudio/) και το δίνει δωρεάν ακόμα και για εμπορική χρήση. Είναι και αυτό βασισμένο στο Eclipse.

Το άλλο εργαλείο που δίνει η ST είναι το STM32CubeMX (https://www.st.com/en/development-tools/stm32cubemx.html) μέσω του οποίου μπορείς να κάνεις μια αρχική παραμετροποίηση στις παραμέτρους του επεξεργαστή και τα pins και να σου παράξει ένα σκελετό project για να ξεκινήσεις να δουλεύεις στο IDE της επιλογής σου (πχ TrueSTUDIO).

Από εκεί και πέρα και εγώ το ψάχνω, καθώς τώρα ξεκινάω την ενασχόληση με STM32 :001_unsure: Έχω ως αναπτυξιακή πλακέτα το γνωστό και ως "blue pill (https://wiki.stm32duino.com/index.php?title=Blue_Pill)" με τον STM32F103C8T6 και έναν (κλώνο) ST-Link v2 programmer. Μένει να δω πως θα τα δέσω όλα αυτά ώστε να φτιάξω ένα ολοκληρωμένο περιβάλλον ανάπτυξης.



Παλαιότερα είχα ξαναπρογραμματίσει το blue pill αλλά μέσω του περιβάλλοντος του Arduino (stm32duino (https://github.com/stm32duino/wiki/wiki)).

mtzag
11-04-19, 23:20
IDEs υπαρχουνε παρα πολλα απο το θειο μεχρι τον τζαμπα..

SProg
12-04-19, 07:09
Ξεκινά με HAL και το Cube. Κατέβασε και τον IAR που είναι από τους καλύτερους compilers και βγαίνει και με 1 μήνα Free.

Αυτό που δε σου είπαν είναι ότι και οι HAL δεν είναι ιδανικες. Και αυτές έχουν προβλήματα που συνεχώς διορθωνονται.

Για εμένα προσωπικά και με αυτά που βλέπω σε βιομηχανικό επίπεδο, οι ST και οι HAL έχουν ένα ταβάνι. Ταβάνι πολύ χαμηλότερο από Motorola (freescale/nxp). Πολλές φορές με την ST νομίζω ότι βγάζουν νέα modules τόσο βιαστικά, τα οποία μετά βίας παίζουν σωστά.

Με λίγα λόγια. Ναι ξεκινά με HAL και στη πορεία το βλέπεις.

picdev
12-04-19, 11:51
το true studio είναι δωρεάν , το cube mx -> σκοπίδι. O IAR πανάκριβος δεν αξίζει να ασχοληθείς

billys7
12-04-19, 12:30
Πριν λίγο καιρό ξεκίνησα με blue & black pill. Βασικά είναι πολύ φθηνοί.
Πήρα και ένα ST-Link V2 από ebay για κάθε ενδεχόμενο.

Δεν έχω ακόμα ασχοληθεί με HAL, αν και θα ήθελα.
Διαβάζοντας όμως το manual μου βγήκε πολύ πιο έυκολος ο δρόμος της C++.

Γράφω σε περιβάλλον arduino, χωρίς τη χρήση των εντολών του,
μόνο με C++, και προγραμματίζω μέσω του FT232RL σειριακά.

Δεν είναι δύσκολο, μελέτη θέλει.