Харвард архитектура за Embedded Systems

Един незавършен микроконтролер с Харвардска архитектура

През 1996 г., Atmel разработил 8-битов RISC едночипов микроконтролер с Харвард архитектура, който беше един от първите микроконтролери, които използват флаш памет за съхранение на програмата вместо неизтриваема ROM, EPROM, EEPROM използвани от други микроконтролери по това време.

Архитектура на AVR

Даннов RAM: Flash, EEPROM и SRAM  са интегрирани в един чип, премахва се необходимостта от външна памет (макар и все още да е на разположение на някои устройства).

Програмна памет (Flash): Програмните инструкции се съхраняват в презаписваема флаш памет.
Въпреки че те са 8-битови микроконтролери, всяка инструкция заема една или две 16-битови думи. Размерът на програмната памет е понякога посочен в името на самото устройство (например,ATmega64x линия има 64 KB  Flash).
Вътрешна даннова памет: Данновото адресно пространство се състои от
регистров файл, I/O регистри и SRAM. В AVR има 32 еднобайтови регистри, класифицирани като 8-битови RISC устройства.
Вътрешни регистри: Работните регистри са първите 32 адреса от паметта (000016-001F16), Следван от 64 I/O регистъра (002016-005F16). Действително SRAM започва след регистърните секции (адрес 006016). Въпреки че има разделени адресни схеми и достъп до I/O регистър, всички все още могат да бъдат адресирани и манипулирани, както ако те бяха в SRAM.
EEPROM: Някои AVR микроконтролери имат вътрешна електрическо-изтриваема програмируема памет само за четене (EEPROM) за полу-
постоянно съхранение на данни (както в сравнение с FLASH за полу-постоянно
съхранение на програма). Подобно на флаш памет, EEPROM могат да запазят  съдържанието си при спиране на електрическата енергия. Тази вътрешна памет EEPROM не е назначена в адресируемото пространство на микроконтролера.
То може да бъде достъпено по един и същ начин, както се достъпва външно периферно устройство, с използване на специални указатели – регистри и инструкции за четене/запис, което прави достъпът до  EEPROM много по-бавен, отколкото при други вътрешни RAM. Докатоо броят на записите в EEPROM не е неограничен – Atmel определя 100 000 цикли за запис в техните таблици с данни – добре проектираната EEPROM записва рутинно и трябва да сравни съдържанието на EEPROM адреса с желаното съдържание и изпълнява действителен запис, ако съдържанието е необходимо да бъде променено.
Изпълнение на програмата: AVR на Atmel имат конвейерен дизайн. Това означава, че следващата машина инструкция е в очакване, тъй като една от настоящите се изпълнява. Повечето инструкции заемат само един или два тактови цикъла, което прави AVR относително бързо измежду осем битовите микроконтролери. AVR семейство процесори са проектирани с оглед на ефективното изпълнение на компилиран на C код и разполагат с няколко вградени насоки за изпълнение на задачата.

Набор инструкции за AVR

Набора инструкции за AVR е по-правоъгълен (Един набор инструкции се нарича правоъгълен ако всяка инструкция използва всеки регистър при всяка адресация) oтколкото при повечето осем битови микроконтролери, но не е напълно правилен.Указателните  регистри X, Y, Z адресиращи възможности, които се различават един от друг.
CLR афектира върху флаговете, докато SER не, въпреки че те са допълнителни инструкции.  CLR задава стойност „0” на всички битове, а SER им задава стойност „1” Математическите операции като EOR променят флагове, докато moves/loads/stores/branches както LDI не.
Аритметичните операции работят с регистрите  R0-R31, a не директно върху RAM паметта и заемат един тактов цикъл, с изключение на умножаването и  прибавянето на разширена дума (ADIW и SBIW), които заемат два цикъла.
RAM паметта и входно-изходното пространство могат да бъдат достъпени само чрез копиране от и към регистри. Непрякия достъп (включително незадължителните постинкрементиране прединкрементиране или постоянно изместване) е възможно чрез регистри X, Y и Z. Всички достъпи до RAM паметта заемат два тактови цикъла. Прехвърлянето между регистри и вход/изход заема един цикъл. Прехвърлянето на осем бита или шестнадесет бита между регистрите или константа към регистър също заема един цикъл. Четене на програмната памет (LPM) отнема три цикъла.

Развойна среда за Atmel AVR

Компилаторната колекция на GNU (GCC – GNU Compiler Collectin) е набор от компилатори за различни езици за програмиране. GCC е ключов компонент от инструменталните средства на GNU.
Много AVR микроконтролери имат ограничено количество RAM, в която се съхраняват данните, но може да има повече Flash пространство. AVR е  контролер с Харвардска компютърна архитектура, където Flash се използва за програма, RAM паметта се използва за данни и всеки от тях има разделени адресни пространства. Това е предизвикателство за запис на постоянни данни в програмното пространство, както и връщането на тези данни за използването им в AVR приложение.
Проблемът се задълбочава от факта, че C не е проектиран за Харвардска архитектура, а е бил проектиран за фон Нойманова архитектура, където код и данни съществуват в едно и също адресно пространство.
Това означава, че всеки компилатор за процесор с Харвардска архитектура, като AVR, трябва да използва други средства за работа с отделните адресни пространства. Някои компилатори използват нестандартни ключови думи за С или се разширява стандартния синтаксис по нестандартни начини. GCC има специална дума, “attribute”, която се използва за закрепване на различни атрибути към функции за декларации, променливи и типове. Тази дума е последвана от атрибут-спецификация в двойни скоби. В AVR GCC съществува специален атрибут, наречен “progmem”. Този атрибут се използва за деклариране на данни и той кара компилатора да постави данните в програмата Памет (Flash).
AVR библиотеките предоставят прост макрос PROGMEM който е дефиниран като атрибут в синтаксиса на GCC. Този макрос е създаден за удобство на крайния потребител, както ще видим по-долу. PROGMEM макроса е дефиниран в <avr/pgmspace.h> хедърен файл. Трудно е да се промени GCC да създава нови разширения в синтаксиса на C, така че вместо това в AVR библиотеките са създадени макроси за извличане на данни от програмната памет. Тези макроси се намират в <avr/pgmspace.h> хедърен файл.

Сходни статии:

  1. Offline и online, Open архитектура и OS offline (офлайн) Описва принтер или друго периферно устройство, което в момента не е в режим “готов” и поради това е недостъпно за използване. offline reader (офлайн четец) Приложение, което ви...
  2. Архитектура на системите с база от данни, защита на бази данни, статистики Създаването на база от данни започва със събиране и анализ на данните за предметната област. Работата по проектиране на база от данни и нейната експлоатация може да бъде разделена на...
  3. Описание и технически параметри на компютърна система Централен процесор (CPU) Централният процесор е устройство, което в най-голяма степен определя бързодействието на една компютърна система. Една от най-важните му характеристики е тактовата честота.Тя показва колко такта извършва процесорът...
  4. Галванично разделяне на компютъра Галваническото разделяне на сигналните вериги е отсъствие на връзка на постоянния ток между тях, “схемна земя” и други захранващи шини. При наличие на галваническо разделяне, потенциала на сигналните вериги на...

Студио за уеб дизайн услуги, изработка на сайтове, SEO оптимизация и Интернет реклама Seven Web Design представя своите професионални уеб дизайн умения на високо ниво. Seven Web Design е продукт на Уеб Дизайн България Груп ООД ®
Comments are closed.