WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Обмін даними між зовнішніми пристроями та мікропроцесорною системою, переривання, система переривань, сегментна організація пам’яті - Контрольна робота

Обмін даними між зовнішніми пристроями та мікропроцесорною системою, переривання, система переривань, сегментна організація пам’яті - Контрольна робота

послідовність дій:
1. Зберегти вміст регістрів контексту.
2. Скинути контролер переривань і устаткування, що викликало запит.
3. Обробити дані.
4. Відновити вміст регістрів контексту.
5. Повернутися до перерваної програми.
Регістри контексту - це регістри, що визначають поточний стан виконання основної програми. Звичайно до їхнього числа відносяться програмний лічильник, регістри стану й акумулятори. Інші регістри процесора, такі як індексні регістри, можуть бути використані в процесі обробки переривання, томуїхній вміст також необхідно зберегти. Всі інші регістри є специфічними для конкретного мікроконтролера і його застосування.
Після скидання у вихідний стан контролер переривань готовий сприймати наступний запит, а устаткування, що викликає переривання, готове надсилати запит, коли виникають відповідні причини. Якщо надійде новий запит переривання, то регістр маскування переривань процесора запобіжить обробці переривання, але регістр стану переривань зафіксує цей запит, що буде очікувати свого обслуговування. Після завершення обробки поточного переривання маска переривань буде скинута, і запит який надійшов, надходить на обробку.
Вкладені переривання складні для реалізації деякими типами мікроконтролерів, що не мають стека. Ці переривання можуть також викликати проблеми, пов'язані з переповненням стека. Проблема переповнення актуальна для мікроконтролерів через обмежений обсяг їхньої пам'яті даних і стека: послідовність вкладених переривань може привести до того, що в стек буде поміщено більше даних, чим це припустимо.
Нарешті, переривання оброблене. Другий приклад з телевізором показує, що можна швидко відреагувати на запит переривання, прийнявши необхідні дані, що будуть потім використані після вирішення поточної задачі. У мікроконтролерах це реалізується шляхом збереження даних, що надійшли, у масиві пам'яті і наступної їхньої обробки, коли виконання вихідної програми буде завершено. Такий спосіб обслуговування є гарним компромісом між негайною повною обробкою переривання, що може зажадати багато часу, і ігноруванням переривання, що може привести до втрати інформації про подію, що викликала переривання.
Відновлення регістрів контексту і виконання команди повернення з переривання переводить процесор в стан, у якому він знаходився до виникнення переривання.
Розглянемо, що відбувається з вмістом різних регістрів при обробці переривання. Вміст регістра стану звичайно автоматично зберігається разом із вмістом програмного лічильника перед обробкою переривання. Це рятує від необхідності зберігати його в пам'яті програмними засобами за допомогою команд пересилання, а потім відновлювати при поверненні до вихідної програми. Однак таке автоматичне збереження реалізується не у всіх типах мікроконтролерів, тому організації обробки переривань варто приділити особливу увагу. Дане питання буде розглянуто для кожного з розглянутих у книзі мікроконтролерів у розділі, що описує їх застосування.
Якщо вміст регістра стану зберігається перед початком виконання оброблювача переривання, то по команді повернення виробляється його автоматичне відновлення.
Якщо вміст інших регістрів процесора змінюється при виконанні обслуговування переривання, то воно також повинно бути збережене в пам'яті до зміни і відновлено перед поверненням в основну програму. Звичайно прийнято зберігати всі регістри процесора, щоб уникнути непередбачених помилок, що дуже важко локалізувати.
Адреса, що завантажується в програмний лічильник при переході до оброблювача переривання, називається "вектор переривання". Існує кілька типів векторів. Адреса, що завантажується в програмний лічильник при запуску мікроконтролера (reset) називається "вектор скидання". Для різних переривань можуть бути задані різні вектора, що рятує програму обслуговування від необхідності визначати причину переривання. Використання різними перериваннями одного вектора звичайно не викликає проблем при роботі мікроконтролерів, тому що найчастіше мікроконтролер виконує одну єдину програму. Цим мікроконтролер відрізняється від персонального комп'ютера, у процесі експлуатації якого можуть додаватися різні джерела переривань. (Якщо Ви коли-небудь, підключали два пристрої до портів СОМ1 і COM3, то Ви представляєте, про що йде мова). У мікроконтролері, де апаратна частина добре відома, не повинно виникнути яких-небудь проблем при спільному використанні векторів переривань.
Останнє, що залишилося розглянути, - це програмні переривання. Існують процесорні команди, що можуть бути використані для імітації апаратних переривань. Найбільш очевидне використання цих команд - це виклик системних підпрограм, що розташовуються в довільному місці пам'яті, чи вимагають для звертання до них міжсегментних переходів. Ця можливість реалізована в мікропроцесорах сімейства Intel х86 і використовується в базовій системі введення-виводу BIOS (Basic Input/Output System) і операційній системі DOS персональних комп'ютерів для виклику системних підпрограм без необхідності фіксування крапки входу. Замість цього використовуються різні вектора переривань, що вибирають команду, що повинна виконуватися, коли відбувається таке програмне переривання.
Можливо після прочитання цієї глави механізм переривань стане для Вас більш зрозумілим чи, навпаки. Ви тільки ще більше заплутаєтеся. При описі кожного мікроконтролера буде показано, як використання переривань може спростити його застосування.
3. Сегментна організація пам'яті
Одна ділянка може цілком заповнитися, але при цьому залишаться вільні ділянки. Можна звичайно переміщати ділянки, але це дуже складно.
Ці проблеми можна вирішити, якщо дати кожній ділянці незалежний адресний простір, називана сегментом.
Кожен сегмент може чи рости зменшуватися незалежно від інших.
Сегмент - це логічний об'єкт.
У цьому випадку адреса має двох частин:
" номер сегмента
" адреса в сегменті
Переваги сегментації:
" Сегменти не заважають один одному.
" Початкова адреса процедури завжди починається з (n,0). Що спрощує програмування.
" Полегшує спільне використання процедур і даних.
Роздільний захист кожного сегмента (читання, запис).
Під адресацією даних мається на увазі звернення процесору до даних, які можуть розміщуватися в оперативній пам'яті, регістрах або бути вказані безпосередньо в самій команді.
Перш за все, програми реального режиму розраховані на так звану "сегментну організацію пам'яті". Процесори 8086 і 8088 мають 20-розрядну шину даних, і це дозволяє процесорові адресувати 1 Мб оперативної пам'яті. Але самі регістри є 16-розрядними, і тому в них можуть зберігатися лише 16-розрядні адреси.
Сегментна організація пам'яті якраз і була запропонована як засіб для виходу з такого становища. Відповідно до цього, адреси ділянок оперативної пам'яті
Loading...

 
 

Цікаве