Montajı öğrenmek için iyi bir Başlangıç ​​Mikroişlemcisi nedir?


19

Bu yüzden Meclis'i önce bir milletvekilinde öğrenmek, sonra C'ye geçmek istiyorum (çünkü çoğu onların kullandığı gibi görünüyor).

Gömülü Programlamaya girmek istiyorum, gerçekten düşük seviyeli C şeylerini seviyorum (Linux için Çekirdekler / Modüller esas olarak yaptığım şey), ancak bundan daha düşük bir seviyeyi programlayabilme fikrini seviyorum (Mikrodenetleyiciler / Mikroişlemciler).

Arduino'yu biliyorum ve bu harika ve hepsi, ama Meclis'i onlarla kullanmak için çok fazla kaynak bulamıyorum. Atmel AVR'leri çok popüler (ve ucuz) gibi görünüyor, ancak asıl donanım kısmına gelince (bunları bir breadboard'a bağlamak vb.), Fazla bilgi bulamıyorum.

Sizin / gals'ın bildiğiniz herhangi bir öneri / bilgi veya kaynak lütfen bana bildirin.

Düzenleme: Başka bir şey: Okuduğum tüm Mikroişlemci kitaplar (Genellikle AVR) mikroişlemci kendisi hakkında konuşmak ve programlama gibi görünüyor. Ancak henüz tüm bileşenleri kendiniz (mikroişlemci, bellek, güç vb.) Kurmaktan bahseden bir kitap görmedim. Eğer beni işleyen bir şey bulabilirsem, işimde olurdum. (En baştan öğrenmek istiyorum.) Bahsetmiyorum, aralarında nasıl iletişim kuracağınıza dair hiçbir fikrim yok.


3
Başka bir yerde göndermek istemem ama sen Avrs ilgilenen eğer Bilmen gereken AVRfreaks.net .
Kevin Vermeer

Ya Im AVR doğru eğilerek ... çünkü onlar hakkında onlar hakkında çok fazla bilgi, ve onlar TOT-MPS430 daha ucuz ...

2
AVR hobiler arasında popülerdir, ancak maliyet verilerinizi nereden aldığınızdan emin değilim. Her iki ailenin de 1 USD'den daha az teklifleri ve diğerlerinin de 20 USD'yi geçmesi bekleniyor.
Kevin Vermeer

Peki ..... MPS430 bakarken yazılım (hata ayıklayıcılar vb) geliştirme panoları eklendiğinde biraz pahalı gibi görünüyordu.

1
Benim tavsiyem eğer yeni başlayan biriyseniz MSP430'u seçmeyin. Resmi araçlar iyi, ancak çevrimiçi bulacağınız ücretsiz destek PIC / AVR ile eşleşmiyor
Toby Jaffey

Yanıtlar:


14

Üniversitede 68HC11 öğrendim. Çalışmaları çok basittir, ancak dürüst olmak gerekirse düşük güçlü mikro denetleyicilerin çoğu benzer olacaktır (AVR, 8051, PIC, MSP430). Mikrodenetleyiciler için ASM programlamasına karmaşıklık katacak en büyük şey, desteklenen bellek adresleme modlarının sayısı ve türüdür . İlk başta daha yüksek teknoloji ürünü ARM işlemciler gibi daha karmaşık cihazlardan kaçınmalısınız.

Muhtemelen MSP430'u iyi bir başlangıç ​​noktası olarak tavsiye ederim. Belki C'de bir program yazın ve çeşitli fonksiyonları satır içi montaj ile değiştirerek öğrenin. Basit başlayın, x + y = z vb.

Bir işlevi veya algoritmayı derleme ile değiştirdikten sonra, nasıl kodladığınızı ve C derleyicisinin ürettiklerini karşılaştırın ve karşılaştırın. Bu muhtemelen montajı öğrenmenin daha iyi yollarından biridir ve aynı zamanda bir derleyicinin gömülü bir programcı olarak inanılmaz derecede değerli olduğunu nasıl çalıştığını öğrenir. Öncelikle C derleyicisindeki optimizasyonları kapattığınızdan emin olun, aksi takdirde derleyicinin oluşturduğu kodla karıştırılabilirsiniz. Yavaş yavaş optimizasyonları açın ve derleyicinin ne yaptığını not edin.

RISC ve CISC

RISC, 'Azaltılmış Komut Seti Hesaplama' anlamına gelir, belirli bir komut setini değil, yalnızca CPU'nun minimum komut setine sahip olduğunu söyleyen bir tasarım stratejisini ifade eder. Her biri temel bir şey yapan birkaç talimat. 'RISC olmak' için gerekenlerin kesin bir teknik tanımı değildir. Öte yandan CISC mimarilerinin birçok talimatı var ama her biri daha fazlasını yapıyor.

RISC'nin amaçlanan avantajları, CPU tasarımınızın daha az transistöre ihtiyaç duymasıdır, bu da daha az güç kullanımı (mikrodenetleyiciler için büyük), daha ucuz yapılması ve daha yüksek performansa neden olan daha yüksek saat hızları anlamına gelir. Daha düşük güç kullanımı ve daha ucuz üretim genellikle doğrudur, CISC mimarilerindeki tasarım iyileştirmelerinin sonucu olarak daha yüksek performans hedefe ulaşamamıştır.

Hemen hemen tüm CPU çekirdekleri RISC veya 'orta yol' tasarımlarıdır. En ünlü (veya rezil) CISC mimarisiyle bile, x86. Modern x86 CPU'lar, R86C gibi dahili olarak RISC benzeri çekirdeklerdir ve ön uçta cıvatalı bir kod çözücü ile x86 talimatlarını birden çok RISC benzeri talimatlara böler. Bence Intel bunlara 'mikro-op' diyor.

Hangi (RISC vs CISC) montajda öğrenmesi daha kolay olduğu için, sanırım bir fırlatma. RISC komut setiyle bir şey yapmak genellikle aynı şeyi bir CISC komut setiyle yapmaktan daha fazla montaj hattı gerektirir. Öte yandan, CISC talimat setlerinin daha fazla sayıda mevcut talimat nedeniyle öğrenilmesi daha karmaşıktır.

CISC'nin kötü bir isim almasının çoğu nedeni, x86'nın en yaygın örnek olması ve üzerinde çalışılması gereken bir karışıklık olmasıdır. Bence bu çoğunlukla x86 komutlarının çok eski olması ve geriye dönük uyumluluğu korurken yarım düzine veya daha fazla kez genişletilmesinin bir sonucu olduğunu düşünüyorum. 4.5Ghz core i7'niz bile 286 modunda çalışabilir (ve önyüklemede çalışır).

ARM'nin bir RISC mimarisi olmasına gelince, bunu orta derecede tartışmalı olarak değerlendiririm. Kesinlikle bir yük deposu mimarisi. Temel talimat seti RISC gibidir, ancak son revizyonlarda talimat seti biraz daha kişisel olarak RISC ve CISC arasında bir orta yol olarak değerlendireceğim noktaya kadar büyüdü. Ayarlanan başparmak talimatları gerçekten de ARM talimat setlerinin en `` RİSKİ '' dir.


@Mark - ARM'ler de RISC işlemciler, komut seti o kadar da kötü değil. Aslında oldukça güzel tasarlanmış; kullanıcı alanı ve çekirdek alanı farklılaşması ve diğer karmaşıklıklar için bazı talimatlar vardır, ancak bunlar başlangıç ​​sırasında göz ardı edilebilir.
Kevin Vermeer

1
@reemrevnivek ASM'ye başlarken onu birden çok işlemci modu ve MMU ile uğraşmanın karmaşıklıklarından uzak tutmaya çalışıyordum, bu yüzden üst düzey ARM'lerden bahsetmiştim. Üst uç ARM SoC'lerin başlatılması ve kurulumu da AVR / PIC / MSP430 gibi bir şeyden önemli ölçüde daha karmaşıktır.
Mark

RISC? Ben ve diğerleri arasındaki farkı anladığımdan emin değilim ... açıklamak ister misiniz? Çoğu Mikrodenetleyici RISC değil mi? sadece daha az talimatın doğru olduğu anlamına mı geliyor?

1
@ sauron Cevabımı ekledim: RISC vs CISC.
Mark

AVR / PICS gibi şeyler genellikle RISC veya CISC mi?

8

Azaltılmış talimat sayısı nedeniyle 8 bit PIC mikrodenetleyicilerinin en iyi seçim olduğunu düşünüyorum.

Az sayıda talimatın yan etkisi, daha fazla talimatla diğer mikrodenetleyicilere kıyasla tekerleği yeniden icat etmeniz gerektiğidir.

Ancak PIC ile öğrendikten sonra, diğer mikrodenetleyicilere geçebilir ve sizin için neyin daha uygun olduğunu görebilirsiniz.


Şu anda keşfettiğim şey olduğu için tamamen katılmıyorum, ancak 8, 16 ve 32 bit çekirdeklerin tamamen farklı asm stratejileri var.
Grady Oyuncu

7

Mark'ın 68HC11 önerisine benzer şekilde, Freescale 68HCS08 ailesinin talimat seti, zamanının en temiz 8 bit talimat setlerinden birine sahip olduğunu düşündüğüm Motorola 6809'un inceltilmiş bir versiyonudur. Burada 79 $ karşılığında anahtarlar, LED'ler, 3 eksenli ivmeölçer ve piezo buzzer içeren bir geliştirme kartı alabilirsiniz .


S08'in HC11'e karşı daha az kayıt sayısı, öndeki şeyleri biraz daha zorlaştırabilir, çünkü yığının her şeye çok şey yaptığını anlamanız gerekir (bu daha sonra HC11'ler ile laboratuarımda öğretildi (ya da 12 kullanıcısının)). Ek olarak, AVR'ler gerçekten güzel çünkü yığın hakkında endişelenmeden önce oynayabileceğiniz 32 kayıt var.
Nick T

Aslında bir darboğaz olsa da, tek akümülatörün basitliğini seviyorum. Geçici değişkenler için yığını kullanmak yerine, daha kısa talimatlarla erişilebilen 144 baytlık doğrudan sayfa değişkenlerini kullanmayı daha kolay buluyorum (G / Ç kayıtları için diğer 112 baytlık doğrudan sayfa kullanılır). Yığın kullanımı (reentrant ve özyinelemeli rutinlere izin verir) daha sonra öğrenilebilir.
tcrosley

HC (S) 08, HC05'ten türetilmedi mi?
Johan.A

@ Johan.A Evet, kesinlikle haklısın. HCS08, HC05'in geliştirilmiş bir versiyonudur. Bundan bahsetmeliydim. Bence türetme 6800 -> 6801 -> 6805 -> HC (S) 08 gibi bir şey. 6805 için çok sayıda montaj kodu yazdım. HCS08'i 6809 ile karşılaştırdım, diğer yorumlarla 68HC11 (kabaca 6809'un mikrodenetleyici versiyonu).
tcrosley

4

Msp430 komut seti, montajcıyı öğrenmek için iyi bir settir. X86'dan kaçının. Kol başka bir iyi olanıdır, ancak çok daha fazla talimat ve seçeneği vardır ve ilk talimat seti olarak en uygun olmayabilir. Başparmak kol talimat setinin bir alt kümesidir ve kötü değil, github'da barebone, sadece işlemci ve bellek ve biraz daha fazlası olan bir başparmak emülatörü (thumbulator) ve bir msp430 emülatörü (başparmak kadar test edilmedi) var. , neler olup bittiğine ilişkin iyi bir görünürlük elde edebilirsiniz. Bir alternatif, örneğin görünürlüğün olduğu ancak ulaşılması daha zor olan qemu olacaktır, aynı şekilde qemu benzeri bir çözümle, çalışan bir şey olup olmadığını anlamanızdan önce çok daha fazla iş gerekir.
bir araç zinciri ve / veya bir stok binutils (./configure --target = msp430 --prefix = / bir şey) oluşturmak için stok llvm ile birlikte mspgcc4.sf.net adresine gidin. Bir kez donanım için hazır msp430 geliştirme kurulu 5 doların altında maliyeti. Kol / başparmak araçları için sadece lit versiyonu kodbiliminden alın. Bir korteks-m3 (başparmak / başparmak2) kartı şu anda yaklaşık 12 dolar. İlk talimat seti olarak x86 ve avr ve diğerlerinden kaçınırdım, başkalarının iyi yuvarlanmasını öğrenmek isteyeceksiniz. Eski / orijinal pic talimat seti de bakmaya değer bir şeydir. Bir simülatörü bir öğleden sonra kendiniz yazabilir ve montajcıyı öğrenebilirsiniz. Öncelikle öğrenmezdim, bazı ilginç şeyler öğretir, ancak aynı zamanda çoğu öğretim setinde bulduğunuz ortak özellikleri ölçeklendirmez ve mutlaka temsil etmez. Msp430 bana gerçekten öğrendiğim ilk talimat seti olan pdp11 hissini verdi, her ikisi de iyi yuvarlak, çoğunlukla dik özelliklere sahip. Hem msp430 hem de mikroçip pic komut setleri, tüm resmin her bir kayıt ve adresleme modunu, sıfırlama / önyükleme vb.


yalnızca montajcı için en azından kol / başparmak veya msp430 için binutils'e ihtiyacınız vardır ve montajcı ve bağlayıcıyı oluşturabilirsiniz. Montajcı çıktısını bir öğrenme aracı olarak inceleyebileceğiniz bir C derleyicisi istiyorsanız, mspgcc4 veya codesurcery'e ihtiyacınız var veya her ikisi için de llvm kullanmalısınız.
old_timer

4

Montaj öğrenmek istediğinizden emin misiniz? Neden olduğunu söyleyebilir misin? Bu oldukça önemli bir görevdir ve günümüzde giderek daha az ilgili veya yararlıdır. Bu, içinde yazan ve hatta elle birleştirilmiş programlar (montajcı, bağlayıcı, sadece talimat seti ile bir kart) yazan bir kişiden.


Bu bir yorum kadar gerçekten bir cevap değil. Ayrıca, zaman zaman ve sonra bir projenin davranışındaki tuhaflığı anlamaya çalışırken, montaj parçalarıyla dolmak istemeyen gömülü bir C programcısına güvenmekte tereddüt ediyorum.
Chris Stratton

4

Ben de 68HC11 üniversitede öğrendim. Bunu başka bir MPU / MCU'ya önermek yerine, kullandığımız geliştirme kartının üzerinde bir monitör programı olduğunu belirtmek istedim. Bu yüzden aptal bir terminalden, kodun üzerinden geçip kayıtları inceleyebiliriz ... Hangi işlemcinin gereksinimlerinize uygun olduğunu bildiğinizde, bir monitör programıyla hangi geliştirme kartlarının mevcut olduğunu da kontrol etmenizi öneririm.


Monitör programı kulağa çok yardımcı olacak gibi geliyor. Bunu öğrenmek için hangi kitabı kullandınız? Bana

Ben de 68HC11 ile deneyimim vardı ve "İzleme Programı" Buffalo Monitör olarak bilinir . Temel olarak, sadece PC'nize seri olarak iletişim kuran ROM'da saklanan bir programdır. Bir terminale girersiniz ve program isteklerinizi yorumlar ve size geri bilgi verir. Sen, vb talimatları üzerinden ekrana, değişim bellek değerlerine, adıma bellek dökümü olabilir Kullandığımız tahta oldu bu bir. Bu denetleyicinin öğrenmesi kolaydır, ancak çok tarihli.
sherrellbc

... Kullandığımız kitaptı bu eğer ilgilendi. AVR gibi daha modern bir kontrolörle gitmenizi öneririm; geliştirme kurulu burada bulunabilir .
sherrellbc

3

Hem PIC (14 bit çekirdek) hem de ARM montajını öğretiyorum. PIC sınıfı, o mimarinin çirkinliğine hakim olduktan sonra başka bir şey üstlenebileceklerini söylüyorum. ARM (Thumb / Cortex!) Montajı öğrenmek için çok güzel bir mimaridir. Bir LPC2148 kartı kullanıyoruz.


Merhaba Wouter, sizi burada görmek güzel!
Olin Lathrop

2

Bir dsPIC33F ile 16 bit PIC derlemesini öğrendim. İşlemcinin montajı oldukça benzerdir, çünkü işaretçileri ve üç değişken işlemi (örneğin A = B + C) destekler, bu da öğrenmeyi ve ona adapte olmayı çok daha kolay hale getirir.


1

Mikrodenetleyicileri ve mikroişlemcileri burada karıştırıyorsunuz. AVR, Mikroişlemci değil, Atmel'in mikrodenetleyici hattıdır. Bunlar arasındaki farkları daha iyi anlamak için önce wikipedia'da arama yapmanızı öneririm. Temel olarak bir mikrodenetleyici az ya da çok eksiksiz bir sistemken, bir mikroişlemci sadece cpu'dur (dolayısıyla bir mikrodenetleyicinin içinde bir mikroişlemci vardır).


Bunu biliyordum, neden koymadığımı bilmiyorum. Pek çok rehber aslında bir MP ve Bellek (flaş veya eeprom gibi) vb. Hakkında konuşmaktan bahsetmiyordu ...

1
Çoğu mikroişlemcide artık önbellek / bellek ve bazı G / Ç olduğundan çok bulanık bir çizgi var.
Kenny

1
@Sauron - Bunu bildiğinden emin misin? MP'yi tekrar kullandınız; bir mikro denetleyici (bir AVR için doğru terim ve burada tartıştığımız cihazların% 99'u) neredeyse her zaman bellekte (hem EEPROM ve Flash gibi uçucu olmayan hem de uçucu SRAM) bulunur. Çevre birimlerine girmeye başlamadan önce yerleşik şeyleri kullanmayı öğrenin.
Kevin Vermeer

1

Üniversitemde, MIPS (veya belki de DLX ) mimarisiyle birlikte montaj dili (ikisi birlikte, el ele gidiyor) yanında donanım tasarımı / mimarisi öğretildi . O zamandan beri, PIC ve AVR meclisinde biraz okulda / işte çalıştım ve hepsi oldukça benzer. İşlemci mimarisi gibi, dil çok basit olduğu için MIPS montajının harika bir başlangıç ​​noktası olduğunu düşünüyorum.

Ayrıca bakınız: bu kitap . Dünyadaki en iyi kitap değil, ama birçok üniversite için standart bilgisayar tasarım kitabı.


Microchip PIC32, MIPS mimarisini kullanır ve MIPS montajcısını C ile karıştırmak oldukça kolaydır.
tcrosley

0

benim önerim mikroişlemciler hakkında çalışmaya başlayacak herhangi biri ve işlemciler hemen hemen işlemciler konusunda uzman olduğunu ve daha iyi programlama poney prog programcı ve program kullanmak çalışıyorsanız "bilgisayarın gizli dili kod" adlı kitap okumak gerekir atmel studio6.1 atmel resmi sitesinden


Lütfen kitabın ve programcının OP'yi tam olarak kullanmasını sağlayacak temel özelliklerini ana hatlarıyla belirtin.
Vorac

bir mikrodenetleyiciyi dijital sistemlerden nasıl geliştirildiğini anlamak ve montaj dilini açıklamakla ilgilidir
avinash

bu siteye git j.mp/mpcinterest bu kitabı almak için
avinash
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.