Що таке гарний початковий мікропроцесор, щоб вивчити складання?


19

Тому я хочу вивчити спочатку складання на MP, а потім перейти на C (оскільки, здається, саме цим і користується більшість з них).

Я хочу потрапити у вбудоване програмування, я дуже люблю речі з низьким рівнем C (ядра / модулі для Linux - це головне те, що я робив), але мені подобається, що я можу програмувати навіть нижчий рівень, ніж цей (мікроконтролери / Мікропроцесори).

Я знаю про Arduino, і це чудово, і все, але я не можу знайти багато ресурсів для використання збірки з ними. AVR-адреси Atmel здаються дуже популярними (і дешевими), але коли мова йде про фактичну частину обладнання (підключення їх до дошці тощо), я не знаходжу багато інформації.

Будь-які пропозиції, інформація чи ресурси, про які ви знаєте, хлопці / дівчата, будь ласка, дайте мені знати.

Редагувати: Інша річ: Схоже, всі книги про мікропроцесор, які я читаю (як правило, AVR), розповідають про сам мікропроцесор та програмують його. Але мені ще належить побачити книгу, яка насправді говорить про те, щоб самостійно встановити всі компоненти (мікропроцесор, пам'ять, живлення тощо). Якби я міг знайти щось, що мене переживає, я би зайнявся бізнесом. (Я хочу вчитися з нуля.) Не кажучи вже про те, що я не маю уявлення, як би ти спілкувався між ними.


3
Я ненавиджу надсилати вас деінде, але якщо вас цікавлять AVR, вам потрібно знати про AVRfreaks.net .
Кевін Вермер

Я Im схиляючись до AVR ... головним чином тому, що їх так багато інформації про них, і вони набагато дешевші, ніж TI-MPS430 ...

2
AVR популярний серед любителів, але я не впевнений, де ви отримуєте свої дані про витрати. Обидві сім’ї мають деякі пропозиції, менші за 1 дол. США, а інші - 20 доларів.
Кевін Вермер

Ну ..... коли я дивився на MPS430, схоже, що програмне забезпечення (налагоджувачі тощо) було трохи дорогішим при додаванні на плати розвитку.

1
Моя порада - не вибирайте MSP430, якщо ви новачок. Офіційні інструменти хороші, але безкоштовна підтримка, яку ви знайдете в Інтернеті, не відповідає PIC / AVR
Toby Jaffey

Відповіді:


14

Я дізнався на 68HC11 в коледжі. Працювати з ними дуже просто, але, чесно кажучи, більшість мікроконтролерів з низьким живленням будуть подібними (AVR, 8051, PIC, MSP430). Найбільше, що додасть складності програмуванню ASM для мікроконтролерів, - це кількість та тип підтримуваних режимів адреси пам'яті . Спочатку слід уникати складніших пристроїв, таких як процесори ARM вищого рівня.

Напевно, я б рекомендував MSP430 як хороший вихідний пункт. Можливо, напишіть програму на C та вивчіть, замінивши різні функції на вбудовану збірку. Почніть просто, x + y = z тощо.

Після того як ви замінили функцію чи алгоритм на складання, порівняйте та порівняйте те, як ви її кодували та що створив компілятор C. Напевно, це один з кращих способів навчитися монтажу на мою думку, і в той же час дізнатися про те, як працює компілятор, який неймовірно цінний як вбудований програміст. Просто переконайтеся, що спочатку вимкніть оптимізацію в компіляторі C, або, швидше за все, вас збентежить генерований код компілятора. Поступово ввімкніть оптимізацію та відзначте, що робить компілятор.

RISC проти CISC

RISC означає «Обчислені скорочені набори інструкцій», вона не стосується конкретного набору інструкцій, а лише стратегії проектування, яка говорить про те, що центральний процесор має мінімальний набір інструкцій. Кілька інструкцій, що кожен робить щось основне. Не є суворо технічним визначенням того, що потрібно "бути RISC". З іншого боку, архітектури CISC мають багато інструкцій, але кожна «робить більше».

Цільові переваги RISC полягають у тому, що дизайн вашого процесора потребує меншої кількості транзисторів, що означає менше енергоспоживання (великий для мікроконтролерів), дешевшого виготовлення та вищої тактової частоти, що призводить до більшої продуктивності. Зниження споживання електроенергії та дешевше виготовлення, як правило, правда, більш висока продуктивність насправді не досягла поставленої мети в результаті вдосконалення дизайну в архітектурах CISC.

Майже всі ядра процесора сьогодні є RISC або "середніми" конструкціями. Навіть з найвідомішою (або сумнозвісною) архітектурою CISC, x86. Сучасні процесори x86 внутрішньо є RISC, як ядра, з декодером, закріпленим на передньому кінці, який розбиває x86 інструкції на кілька RISC-подібних інструкцій. Я думаю, що Intel називає це «мікроопераціями».

Щодо чого (RISC vs CISC) простіше дізнатись у зборах, я думаю, що це підсумок. Для того, щоб робити щось із набором інструкцій RISC, як правило, потрібно більше ліній збірки, ніж те, що робити те ж саме з набором інструкцій CISC. З іншого боку, набори інструкцій CISC складніше вивчити через більшу кількість доступних інструкцій.

Більшість причин, по яких CISC отримує погану назву, полягає в тому, що x86 - це, безумовно, найпоширеніший приклад і трохи неприємно працювати. Я думаю, що це в основному результат того, що набір інструкцій x86 дуже старий і розширений у півдесятка чи більше разів, зберігаючи зворотну сумісність. Навіть ваш ядра 4,5 ГГц i7 може працювати в режимі 286 (і працює під час завантаження).

Що стосується ARM як архітектури RISC, я вважаю це помірно дискусійним. Це, безумовно, архітектура завантаження. Базовий набір інструкцій схожий на RISC, але в останніх редакціях набір інструкцій зріс трохи до того моменту, коли я особисто вважаю це більш середнім рівнем між RISC та CISC. Набір інструкцій великого пальця - це дійсно найбільше "RISCish" із наборів інструкцій ARM.


@Mark - ARM також є процесорами RISC, набір інструкцій не так вже й поганий. Це насправді досить гарно розроблено; є деякі інструкції щодо розмежування простору користувача проти ядра ядра та інших складностей, але їх можна ігнорувати, коли ви починаєте.
Кевін Вермер

1
@reemrevnivek Я більше намагався відхилити його від складності роботи з декількома режимами процесора та MMU, коли він почав працювати в ASM, чому я згадав ARM вищестоящого рівня. Ініціалізація та налаштування більш високого рівня ARM SoC також значно складніші, ніж щось подібне до AVR / PIC / MSP430.
Марк

РИЗИК? я не впевнений, що я розумію різницю між тим і тим, що інші ... хочуть пояснити? Хіба не більшість мікроконтролерів RISC? це просто означає, що правильні набори інструкцій правильні?

1
@sauron Я додав у свою відповідь про: RISC проти CISC.
Марк

Такі речі, як AVR / PICS, як правило, RISC або CISC?

8

Я думаю, що 8 біт мікроконтролерів PIC - найкращий вибір через зменшену кількість інструкцій.

Побічний ефект від скороченої кількості інструкцій полягає в тому, що вам доведеться винаходити колесо порівняно з іншими мікроконтролерами з більшою кількістю інструкцій.

Але після навчання з PIC, ви можете перейти на інші мікроконтролери та побачити, що підходить вам краще.


Я б зовсім не погоджувався, оскільки це зараз я досліджую, але 8, 16 та 32 бітові ядра мають абсолютно різні стратегії Asm.
Гравець Граді

7

Як і пропозиція Марка про 68HC11, набір інструкцій сімейства Freescale 68HCS08 - це зменшена версія Motorola 6809, яка, на мою думку, мала один із найчистіших 8-бітових наборів інструкцій свого часу. Ви можете отримати плату розробки з допомогою перемикачів, світлодіодів, 3-осьовий акселерометр і п'єзоелектричним зумером для $ 79 тут .


Зменшена кількість реєстрів, які має S08 порівняно з HC11, може зробити щось трохи складніше на передньому плані, тому що вам потрібно буде з'ясувати, що стек робить багато чого (що пізніше викладали в моїй лабораторії з HC11s (або це було 12-х))). За розширенням, AVR - це дуже приємно, тому що у вас є колосальні 32 регістри, з якими потрібно грати, перш ніж турбуватися про стек.
Нік Т

Насправді мені подобається простота одиничного акумулятора, навіть якщо він може бути вузьким місцем. Замість використання стека для тимчасових змінних, для початку я вважаю, що простіше використовувати 144 байти змінних прямих сторінок, доступних за допомогою коротших інструкцій (інші 112 байти прямої сторінки використовуються для регістрів вводу / виводу). Використання стека (який дозволяє здійснювати повторну та рекурсивну підпрограми) можна дізнатися пізніше.
tcrosley

Хіба HC (S) 08 не був похідним від HC05?
Йохан.

@ Йохан. Так, ви абсолютно праві. HCS08 - це вдосконалена версія HC05. Я повинен був це згадати. Я думаю, що деривація - це щось на зразок 6800 -> 6801 -> 6805 -> HC (S) 08. Я написав багато асемблерного коду для 6805. Я порівняв HCS08 з 6809, щоб зв'язатись з іншими коментарями щодо 68HC11 (що приблизно є мікроконтролером версії 6809).
tcrosley

4

Набір інструкцій msp430 є хорошим для навчання асемблеру. Уникайте x86. Арм - ще одна хороша, але має набагато більше вказівок та варіантів і може не найкраще підходити як перший набір інструкцій. Великий палець - це підмножина набору інструментів для руки, і непогано, на github у мене є як емулятор великого пальця (thumbulator), так і емулятор msp430 (не перевіряється стільки, як великий палець), які є баребонами, просто процесор і пам'ять і трохи більше , тож ви зможете добре зрозуміти, що відбувається. Альтернативою може бути qemu, наприклад, коли видимість є, але набагато складніше дістатися, як і рішення, подібне до qemu, потребує набагато більше роботи, перш ніж з'ясувати, чи є у вас щось.
goto mspgcc4.sf.net для створення ланцюжка інструментів та / або бінарних запасів (./configure --target = msp430 - prefix = / щось) у поєднанні з запасом llvm. Після того, як ви будете готові до обладнання, плата розробки msp430 коштує менше 5 доларів. Для інструментів arm / thumb просто отримайте Lite-версію з кодового ресурсу. Зараз дошка з кортекс-м3 (thumb / thumb2) становить близько 12 баксів. Я б уникнув x86 та avr та інших, як перший набір інструкцій, ви хочете навчити інших бути добре округлими. Старий / оригінальний набір інструкцій для малюнків - це те, що варто також переглянути. Ви можете написати тренажер самостійно в другій половині дня, а також навчитися асемблеру. Я не хотів би вивчити це спочатку обов'язково, він навчить цікавим речам, але в той же час не масштабує і не обов'язково є представником загальних особливостей, які ви знайдете в більшості наборів інструкцій. Msp430 дав мені відчути pdp11 - це перший набір інструкцій, який я дійсно дізнався, обидва мають добре закруглені, переважно ортогональні риси. Як набори інструкцій msp430, так і мікрочіп pic задокументовані у wikipedia, принаймні як довідкова інформація, щоб отримати повне зображення отримати дані / посібники від постачальників, які описують кожен режим реєстру та адреси, режим скидання / завантаження тощо.


тільки для асемблера вам потрібні лише бінути, принаймні для arm / thumb або msp430, і ви можете створити асемблер і лінкер. Якщо ви хочете компілятор C, з якого ви можете вивчити вихід асемблера як інструмент навчання, тоді вам потрібен mspgcc4 або codeourcery або просто використовувати llvm для обох.
old_timer

4

Ви впевнені, що хочете навчитися асамблеї? Ви можете сказати, чому? Це досить завдання, і це все менше і менш корисно або корисно зараз дні. Це від людини, яка написала в ній і навіть вручну зібрала програми (немає асемблера, лінкера, просто картка з набором інструкцій).


Це насправді не відповідь, скільки коментар. Я б також не вагався довіряти вбудованому програмісту на С, який не бажав перебирати шматочки складання раз у раз, коли намагався зрозуміти дивацтво поведінки проекту.
Кріс Страттон

4

Я теж навчився на 68HC11 у коледжі. Швидше вони пропонують це в порівнянні з будь-яким іншим MPU / MCU, я просто хотів зазначити, що на розробці, яку ми використовували, була програма монітора. Отже, з німого терміналу ми могли б перейти через код і вивчити регістри ... Я б запропонував, коли ви знаєте, який процесор відповідає вашим вимогам, ви також перевірите, які плати розробки доступні з моніторною програмою.


Програма монітора здається, що це буде дуже корисно. Яку книгу ви використали, щоб дізнатися це? якщо ви заперечуєте просити мене ....

У мене теж був досвід роботи з 68HC11, і "Програма моніторингу" відома як Buffalo Monitor . В основному, це просто програма, яка зберігається в ПЗУ, яка послідовно спілкується з вашим ПК. Ви набираєте термінал, і програма інтерпретує ваші запити та повертає інформацію. Ви можете скидати пам'ять на екран, змінювати значення пам'яті, переглядати інструкції тощо. Ми використовували цю дошку . Цей контролер простий у вивченні, але дуже датовий.
sherrellbc

... Книга, якою ми користувалися, була ця, якщо вас цікавить. Я б запропонував перейти з більш сучасним контролером, як AVR; їхню розробку можна знайти тут .
sherrellbc

3

Я викладаю як PIC (14-бітове ядро), так і збірку ARM. Клас PIC я кажу, що після того, як вони опанують потворність цієї архітектури, вони можуть взяти на себе все інше. ARM (не великий палець / Cortex!) - це дуже приємна архітектура для вивчення монтажу. Ми використовуємо плату LPC2148.


Привіт Wouter, приємно бачити тебе тут!
Олін Латроп

2

Я дізнався 16-бітну збірку PIC з dsPIC33F. Збірка процесора досить схожа на C, оскільки він підтримує покажчики та три змінні операції (наприклад, A = B + C), що робить навчання та адаптацію до нього набагато простішим.


1

Тут ви плутаєте мікроконтролери та мікропроцесори. AVR - це мікроконтролер компанії Atmel, а не мікропроцесор. Я пропоную вам спершу здійснити пошук у Вікіпедії, щоб краще зрозуміти, у чому різниця між ними. В основному мікроконтролер - це більш-менш повна система, тоді як мікропроцесор є лише процесором (отже, мікроконтролер має мікропроцесор всередині).


Я Я це знав, я не знаю, чому я цього не ставив. Я мав на увазі, як не багато посібників говорять про фактичне підключення MP та пам'яті (наприклад, спалаху чи eeprom) тощо ...

1
Оскільки в більшості мікропроцесорів зараз є кеш-пам'ять / деякий ввід / вивід, це дуже розмита лінія.
kenny

1
@Sauron - Ви впевнені, що це знали? Ви знову використовували MP; мікроконтролер (що є правильним терміном для AVR та 99% пристроїв, про які ми тут обговорюємо) майже завжди має пам'ять (як енергонезалежну, як EEPROM та Flash, так і летючу SRAM). Навчіться користуватися бортовими речами, перш ніж починати заходити на периферію.
Кевін Вермер

1

У моєму університеті нас навчали проектуванню / архітектурі обладнання разом з мовою складання (очевидно, що обидва вони йдуть рука об руку) з архітектурою MIPS (або, можливо, DLX ). Відтоді я трохи поспішав на зборах PIC та AVR у школі / роботі, і всі вони дуже схожі. Я думаю, що збірка MIPS була чудовою відправною точкою, оскільки мова дуже проста, як і архітектура процесора.

Дивіться також: ця книга . Не найкраща книга у світі, але це стандартна книга комп'ютерного дизайну для багатьох університетів.


Microchip PIC32 використовує архітектуру MIPS і досить легко змішати MIPS-асемблер із C.
tcrosley

0

Моя пропозиція, будь-хто, хто збирається почати вивчати мікроконтролери та процесори, повинен прочитати книгу з назвою "код прихованої мови комп'ютера", якщо ви дізнаєтесь, що майже ви досвідчений з процесорами, а для програмування avr краще використовувати програміст і програму poney prog. atmel studio6.1 з офіційного сайту atmel


Будь ласка, окресліть ключові особливості книги та програміста, які б схилили ОП використовувати саме їх.
Ворак

йдеться про розуміння мікроконтролером того, як він розробляється з цифрових систем, і пояснює мову складання
avinash

перейдіть на цей сайт j.mp/mpcinterest, щоб отримати цю книгу
avinash,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.