STM32 Урок 5

Хардуерен модел Cortex-M3
Нека да разгледаме схемата на Cortex-M3:

Той показва „блоковете“, които изграждат микроконтролера, но всъщност те са взаимно свързани и неразделни един от друг в истинска микросхема. Освен това архитектурата на MK се състои от няколко нива на абстракция и ние, които не сме професионални дизайнери на процесори, ще разгледаме най-горните и най-малко подробни, за да избегнем подуване на мозъка. На това ниво три ключови компонента са най-важни за нас.
Изчислително ядро (CM3Core)
Изпълнява инструкции, извършва изчисления в своя ALU (аритметична логическа единица). Неговата харвардска архитектура позволява едновременно зареждане на инструкции и достъп до паметта - благодарение на това, както и на тристепенния конвейер, повечето инструкции се изпълняват в един тактов цикъл. Ядрото Cortex-M3 поддържа набор от инструкции Thumb-2, който съдържа както 32-битови, така и 16-битови инструкции за намаляване на количеството код чрез по-кратки скокове; има 13 регистри с общо предназначение, намаляващи необходимостта от чести достъпи до паметта.
Вложен контролер за прекъсвания (NVIC)
Тази част е отговорна за генериране на прекъсвания за различни събития: външни - промяна на логическото ниво на входа на крака, събуждане от режим на заспиване; и вътрешни - завършване на получаване/изпращане на данни, препълване на брояча на таймера и др. Контролерът поддържа до 240 прекъсвания и до 256 нива на приоритет, а влизането в манипулатора на прекъсвания отнема 12 цикъла на часовника (запазване на рамката на стека и регистрите) и прекъсванията могат да бъдат вложени: ако по време на обработката на прекъсванията възникне прекъсване с по-нисък приоритет, вторият ще бъде обработен след 6 тактови цикъла след обработката на първия. Освен това има немаскируеми прекъсвания - NMI (нНа-Мпопита Азnterrupts), които не могат да бъдат изчистени без обработка и които прекъсват изпълнението на програмата, независимо от каквито и да било условия. Такива прекъсвания се генерират, когато външен часовник източник (кристал, керамичен резонатор) не успее и се открие неправилна инструкция.
Матрица на шината
Съвременните процесори съдържат много различни шини, към които е свързана останалата част от системата. В зората на компютърната ера автобус просто се наричаше пакет от проводници, свързващи няколко устройства към процесор, който можеше да работи само с едно устройство в даден момент, докато останалите бяха неактивни по това време, тъй като шината беше една за всички . Освен това всички устройства бяха принудени да работят със същата скорост (най-бавното устройство), което предотвратяваше нарастването на производителността на системите.
Днес гумите са станали по-сложни, броят им се е увеличил с порядък. Отделни автобуси дават възможност за работа с няколко устройства едновременно и при различни скорости: всеки автобус може да има своя собствена скорост. Можете гъвкаво да управлявате консумацията на енергия, като изключвате неизползвани устройства и цели шини. За да се контролира цялата тази орда от автобуси, беше необходимо да се въведе специален контролер, който контролира обмена на данни между шините и процесора.
Архитектурата Cortex-M3 осигурява 4 шини, свързани към матрицата:
- ICode, за извличане на инструкции и вектори на прекъсвания - за потребителски код. 32-битова шина тип AHB-Lite.
- DCode, за извличане/запис на данни и достъп за отстраняване на грешки - за персонализиран код. 32-битова шина тип AHB-Lite.
- System, за извличане на инструкции и прекъсващи вектори, както и за извличане/запис на данни и достъп за отстраняване на грешки в системното пространство - за вътрешните компоненти на MC. 32-битова шина тип AHB.
- PPB (ривати ериферен Б.us), за извличане/запис на данни и достъп за отстраняване на грешки - за периферни устройства. 32-битова шина APB.