Kysymys:
Mikä on hyvä käynnistinmikroprosessori kokoonpanon oppimiseksi?
user3073
2011-03-30 22:36:49 UTC
view on stackexchange narkive permalink

Joten haluan oppia Assembly ensin MP: llä ja siirtyä sitten C: lle (koska näyttää siltä, ​​että useimmat heistä käyttävät sitä).

Haluan päästä sulautettuun ohjelmointiin, Rakastan todella matalan tason C-juttuja (ytimet / moduulit Linuxille ovat pääasiassa mitä olen tehnyt), mutta rakastan ajatusta siitä, että voin ohjelmoida vielä alemman tason (mikrokontrollerit / mikroprosessorit).

Tiedän Arduinosta, ja se on hienoa ja kaikki, mutta en löydä monia resursseja Assemblyn käyttämiseen heidän kanssaan. Atmel AVR: t näyttävät olevan erittäin suosittuja (ja halpoja), mutta todellisesta laitteisto-osasta (niiden kiinnittäminen leipälautaan jne.) En löydä paljon tietoa.

Ehdotuksia / tietoja tai resursseja, joista tiedät kaverit / galleriat, ilmoita siitä minulle.

Muokkaa: Toinen asia: Näyttää siltä, ​​että kaikki lukemani mikroprosessorikirjat (yleensä AVR: t) puhuvat itse mikroprosessorista ja sen ohjelmoinnista. . Mutta en ole vielä nähnyt kirjaa, jossa todellisuudessa puhutaan kaikkien komponenttien asentamisesta itse (mikroprosessori, muisti, virta jne.). Jos löytäisin jotain, joka käy läpi minua, olisin liiketoimintaa. (Haluan oppia alusta asti.) Puhumattakaan siitä, että minulla ei ole aavistustakaan, kuinka voisit kommunikoida heidän välilläan.

Inhoan lähettää sinulle muualla, mutta jos olet kiinnostunut AVR: stä, sinun on tiedettävä [AVRfreaks.net] (http://www.avrfreaks.net).
Kyllä, olen nojautunut AVR: ää kohti ... lähinnä siksi, että heillä on niin paljon tietoa heistä, ja ne ovat paljon halvempia kuin TI-MPS430 ...
AVR on suosittu harrastajien keskuudessa, mutta en ole varma, mistä saat kustannustiedot. Molemmilla perheillä on joitain tarjouksia, jotka ovat alle yhden dollarin, ja toiset työntävät 20 dollaria.
No ..... kun katselin MPS430: ta, näytti siltä, ​​että ohjelmistot (virheenkorjaajat jne.) Olivat hieman kalliita, kun ne lisättiin kehityskortteihin.
Minun neuvoni ei ole valita MSP430, jos olet aloittelija. Viralliset työkalut ovat hyviä, mutta ilmainen online-tuki ei vastaa PIC / AVR-tasoa
Tämä on tässä vaiheessa ikivanha, mutta on huomattava, että Arduino * on * AVR.Arduino on vain AVR-laitteistoa käyttävä kehitysympäristö.
Yksitoista vastused:
Mark
2011-03-31 00:03:42 UTC
view on stackexchange narkive permalink

Olen oppinut yliopistossa 68HC11. Niitä on helppo työskennellä, mutta rehellisesti sanottuna useimmat pienitehoiset mikro-ohjaimet ovat samanlaisia ​​(AVR, 8051, PIC, MSP430). Suurin asia, joka lisää monimutkaisuutta mikro-ohjainten ASM-ohjelmoinnissa, on tuettujen muistin osoitetilojen määrä ja tyyppi. Sinun tulisi ensin välttää monimutkaisempia laitteita, kuten korkeamman tason ARM-prosessoreita.

Suosittelisin todennäköisesti MSP430: ta hyväksi lähtökohdaksi. Ehkä kirjoittaa ohjelman C-muodossa ja oppia korvaamalla erilaiset toiminnot inline-kokoonpanolla. Aloita yksinkertaisella tavalla, x + y = z jne.

Kun olet korvannut funktion tai algoritmin kokoonpanolla, vertaa ja vertaa sitä, miten koodasit sen ja mitä C-kääntäjä loi. Tämä on luultavasti yksi parhaista tavoista oppia kokoonpanoa mielestäni ja samalla oppia kääntäjän toiminnasta, mikä on uskomattoman arvokasta upotettuna ohjelmoijana. Varmista, että poistat optimoinnin C-kääntäjässä ensin, tai muuten kääntäjän luoma koodi todennäköisesti hämmentää sinua. Ota optimoinnit asteittain käyttöön ja huomioi kääntäjän toiminta.

RISC vs. CISC

RISC tarkoittaa 'pienennettyä käskyjoukon laskentaa', se ei viittaa tiettyyn käskyjoukkoon, vaan vain suunnittelustrategiaan, joka sanoo CPU: lla on minimaalinen käskysarja. Harvat ohjeet siitä, että kukin tekee jotain perusasioita. Se ei ole tiukasti tekninen määritelmä sille, mitä se tarvitsee 'olemaan RISC'. Toisaalta CISC-arkkitehtuureilla on paljon ohjeita, mutta jokainen 'tekee enemmän'.

RISC: n tarkoituksenmukaiset edut ovat, että suorittimen suunnittelu vaatii vähemmän transistoreita, mikä tarkoittaa vähemmän virrankulutusta (iso mikro-ohjaimille), halvempaa valmistaa ja korkeampia kellotaajuuksia, mikä johtaa parempaan suorituskykyyn. Pienempi virrankulutus ja halvempi valmistus ovat yleensä totta, parempi suorituskyky ei ole oikeastaan ​​saavuttanut tavoitetta CISC-arkkitehtuurien suunnitteluparannusten seurauksena.

Lähes kaikki suorittimen ytimet ovat nykyään RISC- tai 'keskitason' malleja. Jopa tunnetuimmalla (tai surullisemmalla) CISC-arkkitehtuurilla, x86. Nykyaikaiset x86-suorittimet ovat sisäisesti RISC: n kaltaisia ​​ytimiä, joiden etupäässä on pultattu dekooderi, joka hajottaa x86-ohjeet useiksi RISC: n kaltaisiksi ohjeiksi. Mielestäni Intel kutsuu näitä "mikro-opiksi".

Mitä (RISC vs. CISC) on helpompi oppia kokoonpanossa, mielestäni se on heitto. Jotain tekeminen RISC-käskysarjalla vaatii yleensä enemmän kokoonpanolinjoja kuin saman tekeminen CISC-käskysarjan kanssa. Toisaalta CISC-käskysarjoja on monimutkaisempi oppia käytettävissä olevien ohjeiden määrän vuoksi.

Suurin osa syistä, miksi CISC saa huonon nimen, on se, että x86 on ylivoimaisesti yleisin esimerkki ja jonka kanssa on vähän sotkua. Luulen, että tämä johtuu lähinnä siitä, että x86-ohjeet on hyvin vanhoja ja niitä on laajennettu puoli tusinaa tai enemmän kertaa säilyttäen taaksepäin yhteensopivuus. Jopa 4,5 GHz: n ydin i7 voi toimia 286-tilassa (ja toimii käynnistyksen yhteydessä).

Mitä ARM on RISC-arkkitehtuuriin, pidän sitä kohtuullisen kiistanalaisena. Se on varmasti kuormavarastoarkkitehtuuri. Peruskäskyjoukko on RISC-tyyppinen, mutta viimeisimmissä versioissa käskyjoukko on kasvanut melko vähän siihen pisteeseen, että pidän sitä henkilökohtaisesti enemmän keskitienä RISC: n ja CISC: n välillä. Peukalo-ohjejoukko on oikeastaan ​​kaikkein 'RISCish' ARM-käskysarjoista.

@Mark - ARM: t ovat myös RISC-prosessoreita, käskyjoukko ei ole niin huono. Se on itse asiassa melko hienosti suunniteltu; on joitain ohjeita käyttäjätilan ja ytimen avaruuden erottelulle ja muille monimutkaisuuksille, mutta ne voidaan jättää huomiotta aloittaessasi.
@reemrevnivek Yritin enemmän ohjata hänet pois monimutkaisuudesta käsitellä useita prosessoritiloja ja MMU: ta, kun hän aloitti ASM: n, minkä vuoksi mainitsin korkeamman tason ARM: t. Ylemmän tason ARM SoC: n alustus ja määritys ovat myös huomattavasti monimutkaisempia kuin AVR / PIC / MSP430: n kaltaiset.
RISC? En ole varma, ymmärränkö eron sen ja mitä muut ovat ... välitätkö selittää? Eivätkö useimmat mikrokontrollerit ole RISC? se tarkoittaa vain sitä, että vähemmän käskyjoukkoja on oikein?
@sauron Lisäsin vastaukseeni: RISC vs CISC.
Ovatko AVR: n / PICS: n kaltaiset asiat yleensä RISC vai CISC?
@sauron ne ovat RISC, en tiedä yhtään CISC-ydintä mikro-ohjaimissa.
@Mark 8051 ovat CISC
Täysin ei ole ajankohtainen, mutta mielestäni kokoonpanon oppiminen kääntämällä C on erittäin vaikeaa, koska yrität pohjimmiltaan oppia lisää käytäntöjen kutsumisesta ja siitä, miten kääntäjä tuottaa asm kuin itse kokoonpanija ...
Aloitin 68HC12: lla! On todella erinomaisia ​​kirjoja 6800 kokoonpanokielestä (joka on hyvin samanlainen kuin 68HC12 ASM). Leventhalin teksti alkaa periaatteessa tietämättömyydestä tietokoneista.
Daniel Grillo
2011-03-31 01:08:54 UTC
view on stackexchange narkive permalink

Mielestäni 8-bittiset PIC-mikrokontrollerit ovat paras valinta, koska ohjeiden määrä on vähentynyt.

Vähentyneiden ohjeiden lukumäärän sivuvaikutus on, että joudut keksimään pyörän uudelleen muihin mikrokontrollereihin verrattuna, joissa on enemmän ohjeita.

Mutta kun olet oppinut PIC: n avulla, voit siirtyä muihin mikro-ohjaimet ja katso mikä sopii sinulle paremmin.

En olisi täysin eri mieltä, koska tätä tutkin nyt, mutta 8, 16 ja 32-bittisillä ytimillä on täysin erilaiset asm-strategiat.
tcrosley
2011-03-31 02:21:03 UTC
view on stackexchange narkive permalink

Samanlainen kuin Markin ehdotus 68HC11: stä, Freescale 68HCS08 -perheen käskyjoukko on ohennettu versio Motorola 6809: stä, jolla oli mielestäni yksi puhtaimmista 8-bittisistä komentosarjoista. aikansa. Voit saada kehittäjälevyn, jossa on kytkimet, LEDit, 3-akselinen kiihtyvyysanturi ja pietsosummeri hintaan 79 dollaria täältä.

Pienentynyt rekisterien määrä, jonka S08: lla on verrattuna HC11: een, voi tehdä asiat hieman vaikeammaksi edessä, koska sinun on selvitettävä, että pino tekee paljon kaikkea (mikä opetettiin myöhemmin laboratoriossani HC11: n kanssa (vai oliko se 12)). Laajennuksena AVR: t ovat todella mukavia, koska sinulla on huikeat 32 rekisteriä, joita voit pelata ennen kuin huolehdit pinoa.
Pidän itse asiassa yhden akun yksinkertaisuudesta, vaikka se voi olla pullonkaula. Sen sijaan, että käytettäisiin pinoa lämpötilamuuttujiin, aluksi on mielestäni yksinkertaisempaa käyttää 144 tavua suoria sivumuuttujia, joihin pääsee lyhyemmillä ohjeilla (muita 112 tavua suoraa sivua käytetään I / O-rekistereihin). Pino (joka mahdollistaa uudelleenkäynnistyksen ja rekursiivisen rutiinin) voidaan oppia myöhemmin.
Eikö HC (S) 08 ollut johdettu HC05: stä?
@Johan.A Kyllä, olet aivan oikeassa. HCS08 on parannettu versio HC05: stä. Minun olisi pitänyt mainita se. Luulen, että johdanto on jotain 6800 -> 6801 -> 6805 -> HC (S) 08. Kirjoitin paljon kokoonpanokoodia 6805: lle. Verroin HCS08: ta 6809: een sitomakseni yhteen muiden 68HC11: n kommenttien kanssa (mikä on suunnilleen mikrokontrolleriversio 6809: stä).
old_timer
2011-03-31 02:25:14 UTC
view on stackexchange narkive permalink

Msp430-käskysarja on hyvä kokoonpanijan oppimiseen. Vältä x86: ta. Varsi on toinen hyvä, mutta sillä on paljon enemmän ohjeita ja vaihtoehtoja, eikä se välttämättä sovi parhaiten ensimmäisenä käskyjoukkona. Peukalo on käsivarren käskyjoukon osajoukko eikä huono, githubilla minulla on sekä peukalon emulaattori (thumbulator) että msp430 emulaattori (ei testattu yhtä paljon kuin peukalo), jotka ovat bareboneja, vain prosessori ja muisti ja vähän muuta , joten saat hyvän näkyvyyden tapahtumiin. Vaihtoehtona olisi esimerkiksi qemu, jossa näkyvyys on olemassa, mutta pääsy siihen on paljon vaikeampi, samoin qemu-tyyppisen ratkaisun kanssa se vie paljon enemmän työtä, ennen kuin selvität, onko sinulla mitään työtä.
goto mspgcc4.sf.net rakentaa työkaluketju ja / tai varasto binutils (./configure --target = msp430 --prefix = / jotain) yhdessä stock llvm: n kanssa. Kun olet valmis laitteistoon, msp430-kehityskortti maksaa alle 5 dollaria. Käsi- / peukalotyökaluille saat yksinkertaisen version koodipalvelusta. Cortex-m3 (thumb / thumb2) -taulu on tällä hetkellä noin 12 taalaa. Vältäisin x86: n ja avr: n ja muita ensimmäisenä käskyjoukkona. Vanha / alkuperäinen pic-ohjeisto on myös syytä tarkastella. Voit kirjoittaa simulaattorin itse iltapäivällä sitä varten ja oppia kokoonpanijan. En oppisi sitä välttämättä ensin, se opettaa joitain mielenkiintoisia asioita, mutta samalla ei skaalaa eikä välttämättä edusta yleisimpiä piirteitä, jotka löydät useimmista käskyjoukoista. Msp430 antoi minulle tunteen pdp11: stä, joka on ensimmäinen todella opittu ohjeisto, molemmilla on hyvin pyöristetyt, enimmäkseen ortogonaaliset piirteet. Sekä msp430- että mikrosirukuvakäskyjoukot on dokumentoitu wikipediassa, ainakin viitteenä, jotta saat kokonaiskuvan, hankkiakaa toimittajilta tuoteselosteet / käsikirjat, joissa kuvataan kukin rekisteri- ja osoitetila, nollaus / käynnistys jne.

vain kokoonpanijalle tarvitset vain binutils, ainakin käsivarteen / peukaloon tai msp430: een, ja voit rakentaa kokoonpanijan ja linkin. Jos haluat C-kääntäjän, josta voit tutkia assembler-lähtöä oppimistyökaluna, tarvitset mspgcc4: n tai koodipalvelun tai käytä vain llvm: ää molempiin.
mvr
2011-03-31 03:11:25 UTC
view on stackexchange narkive permalink

Olen myös oppinut yliopistossa 68HC11. Pikemminkin he ehdottavat tätä minkä tahansa muun MPU: n / MCU: n yli, halusin vain huomauttaa, että käytetyllä kehitysaluksella oli monitoriohjelma. Joten tyhmästä päätelaitteesta voisimme käydä läpi koodin ja tutkia rekistereitä ... Ehdotan, että kun tiedät mikä prosessori sopii vaatimuksiisi, tarkista myös, mitä kehityskortteja monitoriohjelmalla on saatavana.

Näyttöohjelma kuulostaa olevan erittäin hyödyllinen. Mitä kirjaa käytit oppiaksesi tämän? jos mielessäni kysyn ....
Minulla * minulla oli kokemusta 68HC11: stä ja "Valvontaohjelma" tunnetaan nimellä * Buffalo Monitor *.Pohjimmiltaan se on vain ROM-levylle tallennettu ohjelma, joka kommunikoi sarjaan tietokoneesi kanssa.Kirjoitat päätelaitteeseen ja ohjelma tulkitsee pyyntösi ja antaa sinulle takaisin tietoja.Voit tyhjentää muistia ruudulle, muuttaa muistiarvoja, käydä läpi ohjeita jne. Käytetty levy oli [tämä] (https://www.axman.com/content/cme-11e9-evbu-single-chip-expanded-mode-development-system-mc68hc11e9-32k-sram-8k-eeprom) yksi.Tätä ohjainta on helppo oppia, mutta se on hyvin päivätty.
... käytetty kirja oli [tämä] (http://www.amazon.com/MC68HC11-Introduction-Software-Hardware-Interfacing/dp/0766816001/ref=sr_1_2?ie=UTF8&qid=1406226370&sr=8-2&keywords=68hc11) jos olet kiinnostunut.Ehdotan, että käytämme nykyaikaisempaa ohjainta, kuten AVR;heidän kehitystoimikuntansa löytyy [täältä] (http://www.atmel.com/tools/stk500.aspx).
Wouter van Ooijen
2011-06-29 02:44:25 UTC
view on stackexchange narkive permalink

Opetan sekä PIC (14-bittinen ydin) että ARM-kokoonpanoa. PIC-luokan kerron, että kun he ovat oppineet kyseisen arkkitehtuurin rumuuden, he voivat ottaa mitä tahansa muuta. ARM (ei peukalo / Cortex!) On erittäin mukava arkkitehtuuri kokoonpanon oppimiseksi. Käytämme LPC2148-korttia.


2019-12-29 päivitys

Vaihdoin Cortexiin ensin LPC1114 / 820, myöhemmin Arduino Due. Arduino Due on halpa (Kiinasta), tehokas, sitä voidaan käyttää C, C ++, Assembler (ja jos haluat Pythonin) kanssa, ja jos todella haluat, että voit käyttää sitä Arduino IDE: n kanssa. Pidän parempana omasta koontijärjestelmästäni ja vapaasta valinnasta editor / IDE.

Hei Wouter, on hyvä nähdä sinut täällä!
russ_hensel
2011-03-31 07:56:59 UTC
view on stackexchange narkive permalink

Haluatko varmasti oppia Assembly? Voitteko sanoa miksi? Se on melko tehtävä, ja on yhä vähemmän suostunut tai hyödyllinen nyt päivinä. Tämä on henkilöltä, joka on kirjoittanut siihen ja jopa käsin koottuja ohjelmia (ei kokoonpanijaa, linkkiä, vain korttia, jossa on ohjeet).

Tämä ei ole oikeastaan ​​vastaus, yhtä paljon kuin kommentti. Olisin myös epäröivä luottamaan upotettuun C-ohjelmoijaan, joka ei halunnut kulkeutua kokoontumisosien läpi silloin tällöin yrittäessään ymmärtää projektin käyttäytymisen outoa.
Thomas O
2011-03-31 02:08:28 UTC
view on stackexchange narkive permalink

Opin 16-bittisen PIC-kokoonpanon dsPIC33F: llä. Prosessorin kokoonpano on melko C-tyyppinen, koska se tukee osoittimia ja kolmea muuttuvaa operaatiota (esimerkiksi A = B + C), mikä helpottaa oppimista ja siihen sopeutumista.

Erik
2011-03-30 23:09:13 UTC
view on stackexchange narkive permalink

Olet tässä sekoittamassa mikrokontrollereita ja mikroprosessoreita. AVR on Atmelin mikrokontrollerilinja, ei mikroprosessori. Ehdotan, että haet ensin wikipediasta saadaksesi paremman käsityksen näiden eroista. Periaatteessa mikrokontrolleri on enemmän tai vähemmän täydellinen järjestelmä, kun taas mikroprosessori on vain prosessori (joten mikrokontrollerissa on mikroprosessori sisällä).

Ya tiesin sen, en tiedä miksi en laittanut sitä. Tarkoitin, ettei monissa oppaissa puhuta MP: n ja muistin (kuten flash tai eeprom) yhdistämisestä jne ...
Koska useimmilla mikroprosessoreilla on nyt välimuisti / muisti ja jotkut I / O, se on hyvin epäselvä linja.
@Sauron - Tiesitkö varmasti, että tiesit sen? Käytit jälleen MP: tä; mikrokontrollerissa (joka on oikea termi AVR: lle ja 99%: lle tässä käsittelemiemme laitteista) on melkein aina muistia (sekä haihtumatonta, kuten EEPROM ja Flash, että haihtuva SRAM). Opi käyttämään laivalla olevia tavaroita, ennen kuin aloitat oheislaitteiden käytön.
Shamtam
2013-01-12 05:19:34 UTC
view on stackexchange narkive permalink

Yliopistossani meille opetettiin laitteistosuunnittelua / -arkkitehtuuria kokoonpanokielen rinnalla (ilmeisesti nämä kaksi kulkevat käsi kädessä) MIPS-arkkitehtuurin (tai ehkä DLX) -arkkitehtuurin kanssa. Siitä lähtien olen sekaisin PIC- ja AVR-kokoonpanoon vähän koulussa / työssä, ja ne ovat kaikki melko samanlaisia. Mielestäni MIPS-kokoonpano oli hyvä lähtökohta, koska kieli on hyvin yksinkertainen, samoin kuin prosessoriarkkitehtuuri.

Katso myös: tämä kirja. Ei paras kirja maailmassa, mutta se on tavallinen tietokonesuunnittelukirja monille yliopistoille.

Microchip PIC32 käyttää MIPS-arkkitehtuuria ja se on melko helppo sekoittaa MIPS-kokoonpanija C: n kanssa.
avinash
2013-09-19 19:31:09 UTC
view on stackexchange narkive permalink

Ehdotan, että joku, joka aikoo alkaa tutkia mikrokontrollereita ja prosessoreita, lukee kirjan nimeltä "koodaa tietokoneen piilotettu kieli", jos opit, että melkein olet asiantuntija prosessoreiden kanssa ja avr: n ohjelmoimiseksi käytä paremmin Poney prog-ohjelmoijaa ja ohjelma atmel studio6.1: ltä atmelin viralliselta sivustolta

Esittele kirjan ja ohjelmoijan tärkeimmät ominaisuudet, jotka kannustaisivat OP: ta käyttämään niitä tarkalleen.
kyse on mikrokontrollerin ymmärtämisestä, miten se kehitetään digitaalisista järjestelmistä ja selittää kokoonpanokielen
siirry tälle sivustolle j.mp/mpcinterest saadaksesi kirjan


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 2.0-lisenssistä, jolla sitä jaetaan.
Loading...