КОНТРОЛЬНА РОБОТА

Обмін даними між зовнішніми пристроями та мікропроцесорною системою.
Переривання. Система переривань. Сегментна організація
пам’яті.Завантаження ОС Linux. Ініціалізація ядра

Зміст

1. Обмін даними між зовнішніми пристроями та мікропроцесорною системою

2. Переривання. Система переривань

3. Сегментна організація пам’яті

4. Завантаження ОС Linux. Ініціалізація ядра

1. Обмін даними між зовнішніми пристроями та мікропроцесорною системою

Послідовне введення-виведення даних

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

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

 

Асинхронний послідовний обмін

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

Першим передається не біт даних, а старт-біт, що вказує на початок
передачі даних (початок пакета). Цей біт використовується приймачем для
синхронізації процесу читання даних, що випливають за старт-старт-битому
(молодший біт даних йде першим). Після бітів даних може випливати біт
парності (контрольний біт), що використовується для перевірки
правильності отриманих даних. Існує два типи перевірки на парність.
Перевірка на непарність (Odd) означає, що число одиниць у пакеті даних,
включаючи біт парності, повинно бути непарним (наприклад, 0х55 буде мати
біт парності рівним 1, щоб зробити число одиничних бітів рівним п’яти,
тобто непарним). Перевірка на парність (Even), навпаки, означає що число
одиничних бітів повинно бути парним (наприклад, при передачі числа 0х55
біт парності буде дорівнює 0).

У деяких мікроконтролерах значення біта парності повинне визначатися
програмно, а потім міститися в регістр. Простий алгоритм реалізації цієї
процедури полягає у виконанні логічної операції « виключне АБО» (XOR)
над усіма бітами переданого байта. Для мікроконтролера 8051 дана
процедура виконується за допомогою наступної програми:

 

mov Count, 8

mov A,0

P_Loop:

xrl A, Char

rrc A

djnz Count,P_Loop ;Обробити 8 біт

;Очистити регістр «А»

;Адреса повернення після обробки кожного біта

;Операція XOR над молодшими бітами

;Зрушити Char, щоб перейти до наступного біту

; Повторити 8 разів

 

Молодший біт регістра «А» буде містити біт парності (Even) для операнда
«Char». Кількість одиничних бітів разом з бітом парності буде парним
числом. Щоб реалізувати перевірку на непарність, необхідно інвертувати
молодший біт у регістрі «А».

За бітом парності випливає стоп-біт, що використовується приймачем для
обробки кінця передачі пакета.

Асинхронний пакет даних показаний на рис. 1. Існує набір параметрів, що
повинний бути відомий при реалізації обміну. Одним з таких параметрів є
число переданих біт даних, що визначається типом прийомного і
передавального пристроїв. Пакет на рис. 1 містить тільки 5 біт даних
(таке число біт використовувалося в телетайпах), але можливі пакети
довжиною до 8 біт.

Поряд з бітами парності («odd») чи непарності («even») можливі інші
варіанти контрольних бітів: «no», «mark» і «space». «No» означає
відсутність біта парності в пакеті. «Mark» чи «space» означає, що
замість біта парності завжди посилається „1” («mark») чи „0” («space»),
відповідно. Ці варіанти контрольних бітів використовується досить рідко
— у тих випадках, коли необхідно дати приймачу додатковий час на обробку
пакета.

 

Рисунок 1 Асинхронна послідовна передача даних

 

Кількість стоп-бітів також може бути різним. Другий стоп-біт може
вводитися для тієї ж мети, що і контрольні біти «mark» і «space» — щоб
дати приймачу більше часу для обробки прийнятого пакета.

Практично всі сучасні пристрої використовують для асинхронного обміну
формат даних «8-N-1», що означає передачу 8 біт даних, відсутність біта
парності й один стоп-біт. Біт парності і додатковий стоп-біт звичайно не
вимагаються для послідовного зв’язку.

Найбільш популярний протокол асинхронного послідовного зв’язку
називається „RS-232”, що у даний час є міжнародним стандартом. Це дуже
старий стандарт, використовуваний для зв’язку комп’ютерів.

Асинхронний приймач чекає приходу старт-біт, коли на лінії
встановлюється низький рівень. Через половину часу передачі одного біта
(тривалість цього часу задається синхросигналом) лінія знову опитується,
якщо на лінії усе ще встановлений низький рівень сигналу, то приймач
чекає один період і зчитує дані (рис. 2). Якщо ж на лінії виявляється
високий рівень сигналу, то приймач вважає, що відбулася помилка, і дані
не приймаються. Цей метод використовується як при апаратній, так і при
програмній реалізації асинхронного прийому даних. У програмно
реалізованих приймачах використовуються програмні цикли для відліку
затримок часу.

Інший розповсюджений метод асинхронної послідовної передачі даних — це
використання коду типу «Манчестер» («manchester»). При цьому методі
передача кожного біту даних синхронізується імпульсом, а значення біта
(„0” чи „1”) визначається проміжком часу до наступного імпульсу (рис.
3). Після передачі заданого числа бітів даних випливає стоп-імпульс, а
потім прийом даних припиняється. Особливість манчестерського кодування
полягає в тім, що бит якісно відрізняється від „1” чи „0”. Це дозволяє
приймачу визначити, чи є дані, що надходять, початком чи серединою
посланого пакета (в останньому випадку дані не будуть прийматися до
приходу старт-бита). Манчестерське кодування гарно підходить для
використання у випадках, коли потік переданих даних може бути легко
перерваний. Тому такий метод передачі даних є основним для зв’язку за
допомогою інфрачервоного випромінювання, наприклад, у пульті
дистанційного керування телевізором.

  

Рисунок 2. Читання даних при асинхронному послідовному обміні

Рисунок 3 Послідовний обмін із манчестерським кодуванням

 

Синхронний послідовний обмін

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

 

Рисунок 4 Форма сигналів при синхронній передачі даних

 

Типова схема для перетворення послідовних даних у паралельні показана на
рис. 5. У цій схемі використовуються дві мікросхеми 8-розрядних
регістрів типу 74LS374. Для більшості додатків не потрібно включення
другого регістра. Це перетворення може також бути виконане за допомогою
спеціальної мікросхеми, але деякі воліють використовувати 8-розрядні
регістри, тому що їх звичайно легше знайти, чим інші типи мікросхем ТТЛ.

Рисунок 5 Схема перетворення послідовних даних в паралельні

 

Існує два основних протоколи для синхронного зв’язку: Microwire і SPI.
Ці методи застосовуються для взаємодії з різними мікросхемами, (таких як
послідовний EEPROM у BASIC Stamps). Хоча стандарти Microwire і SPI дуже
схожі, існують деякі розходження, про які необхідно згадати.

Дані протоколи частіше використовуються для синхронної послідовної
передачі даних, чим для об’єднання мікроконтролерів у єдину мережу. У
цих протоколах кожен пристрій адресується індивідуально, хоча лінії
передачі даних і синхронізації можуть бути загальними для багатьох
пристроїв. Якщо сигнал дозволу вибірки (chip select) пристрою не
активний, то цей пристрій ігнорує лінії даних і синхронізації. У кожен
момент часу тільки один з підключених пристроїв може бути ведучим
(master), тобто мати можливість задавати режим роботи шини (рис 6).

 

 

Рисунок 6. Синхронна послідовна шина

 

Якщо синхронний послідовний порт вбудований у мікроконтролер, то
передавальна схема має вид, показаний на рис 7.

 

Рисунок 7 Схема синхронного виводу даних

 

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

 

Протокол MICROWIRE

Протокол Microwire забезпечує передачу даних зі швидкістю до 1 Мбіт у
секунду. В одному пакеті передається шістнадцять біт даних.

На рис. 8 показана форма сигналів при читанні 16 біт даних. Після вибору
мікросхеми і посилки старт-біта передається 8-розрядна команда
(позначена як «ОР1», «ОР2», «А5» — «АТ» на рис. 2.35), потім випливають
16-розрядна адреса (її наявність не є обов’язковою) і 16 біт даних. При
максимальній швидкості передачі 1 Мбіт у секунду тактовий сигнал
змінюється кожні 500 нс. Передані біти повинні видаватися на лінію за
100нс. до надходження переднього фронту тактового сигналу. Читання даних
повинно відбуватися за 100 нс. до надходження заднього фронту тактового
сигналу. Хоча ці вимоги виконуються більшістю пристроїв, необхідно
переконатися, що пристрій, з яким здійснюється зв’язок, відповідає даним
умовам.

 

Рисунок 8. Читання даних в протоколі Microwire

 

Протокол SPI

Протокол SPI схожий на протокол Microwire, але має кілька відмінностей:

—              SPI здатний передавати дані зі швидкістю до 3 Мбіт у
секунду.

—              Розрядність даних у SPI пакеті дорівнює 8 біт.

—              Передавач у SPI має можливість призупинити передачу
даних.

—              Дані в SPI можуть передаватися у виді безлічі байтів, що

називаються «блок» чи «сторінка».

Як і в протоколі Microwire, у SPI спочатку передається байт, що містить
команду для приймаючого пристрою. Потім йде необов’язкова 16-розрядна
адреса, після чого випливають 8-розрядні дані. Як було зазначено вище,
протокол SPI дозволяє передавати кілька байтів (рис. 9). У протоколі SPI
використовується симетричний тактовий сигнал, що має однакову тривалість
високого і низького рівня. Вихідні дані повинні бути видані на лінію
принаймні за 30 нс. до надходження переднього фронту тактового сигналу,
а зчитування повинне відбуватися за 30 нс. до заднього фронту.

 

Рисунок 9. Запис даних в протоколі SPI

 

При реалізації протоколів Microwire чи SPI можна спростити схему
з’єднання, якщо підключити вхід Din і вихід Dout до однієї лінії (рис.
10). При такому способі з’єднання мікроконтролер повинен відключити свій
вихідний  драйвер, коли закінчить послідовну передачу даних. Після цього
він може приймати дані, що надходять від іншого пристрою. Резистор між
виводами даних слугує для обмеження струму в тих випадках, коли і
мікроконтролер, і периферійний пристрій видають дані на лінію зв’язку.

Рисунок 10 Підключення входу “DI” та виходу “DО” до одної лінії

 

Мережі

Коли термін «мережа» вживається стосовно до мікроконтролерів, то маються
на увазі шини, що використовуються для підключення додаткових пристроїв
і для забезпечення зв’язку між мікроконтролерами. У такий спосіб мережа
мікроконтролерів відрізняється від локальної мережі, такий як
«Ethernet», що ймовірно приходить на розум при слові «мережа».

Існує безліч стандартів (у число яких входять описані вище Microwire і
SPI), що можуть привести до здивування з приводу того, що є і що не є
мережею. Далі під мікроконтролерною мережею будемо розуміти окрему лінію
зв’язку (провід) і безліч підключених до неї пристроїв, що можуть
ініціювати передачу повідомлень і посилати відповідний відгук на
отримане повідомлення.

У таких мережах мається «ведучий» («master») — інтелектуальний пристрій,
що може ініціювати передачу даних. Пристрої, що відповідають на запити,
але не можуть їх ініціювати, називаються «ведомі» («slaves»).
Мікроконтролерна мережа може мати декілька «ведучих» пристроїв, у цьому
випадку мережний протокол вимагає включення схеми арбітражу, що
дозволить різним «ведучим» пристроям передавати дані не порушуючи інших
повідомлень.

Звичайно в мікроконтролерній мережі передається відносно мало даних,
тому необхідна для них пропускна здатність дуже скромна в порівнянні з
мережею Ethernet. Часто мікроконтроллерна мережа має пропускну здатність
порядка декількох байт у секунду, тоді як мережа персональних
комп’ютерів може передавати декілька Мбайт у секунду.

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

 

Протокол І2С

Найбільш популярний протокол для мережі мікроконтролерів — І2С, що
призначений для зв’язку пристроїв у багатопроцесорних системах. Цей
стандарт був розроблений компанією Philips наприкінці 70-х років, як
метод реалізації інтерфейсу між мікропроцесорами і периферійними
пристроями, що не вимагає прокладки численних ліній для передачі між
пристроями всіх розрядів адреси, даних і сигналів керування. Протокол
І2С дозволяє розділяти мережні ресурси між декількома ведучими
процесорами («multimastering»).

Шина І2С містить дві лінії: лінія SDA, що слугує для передачі даних, і
лінія SCL, по якій передається синхросигнал, використовуваний для
стробування даних. Обидві лінії підключені через резистори до шини
живлення («підтягнуті» до високого рівня потенціалу), що дозволяє
декільком пристроям керувати їхнім станом шляхом з’єднання за схемою
«монтажне І». Шина І2С для керування стереосистемою може мати вид,
показаний на рис. 11.

Рисунок 11. Приклад І2С мережі

 

Двопровідна лінія використовується для визначення початку передачі
даних, а також для передачі самих даних. Щоб почати передачу даних, шина
переводиться в стартовий стан. При відсутності переданих даних шина
знаходиться в стані (пасивному), що очікує («idle»). При цьому на обох
лініях сигнали не надходять, і на них встановлений високий рівень
сигналу (потенціал Vcc). Щоб ініціювати передачу даних, «ведучий»
пристрій, запитує керування шиною, установлює низький рівень спочатку на
лінії SDA, а потім на лінії SCL (стартовий стан). У процесі пересилання
даних такий стан шини є неробочим, тому що прийом переданих даних
виробляється тільки при високому (активному) рівні синхросигналу на
лінії SCL. Щоб закінчити передачу даних виконуються зворотні дії: на
лінії SCL встановлюється високий рівень сигналу, а потім у такий же стан
переводиться лінія даних SDA (рис. 12).

 

Рисунок 12 Форма сигналів на шині І2С

 

Дані передаються синхронним способом, причому першим посилається старший
біт (рис. 2.40). Після передачі 8 біт ведучий пристрій переводить лінію
даних у «0» стан, що плаває, очікуючи підтвердження прийому даних від
відомого пристрою. Таким підтвердженням є установка відомим пристроєм
низького рівня сигналу на лінії SDA. Після біта підтвердження на обох
лініях встановлюється низький рівень. Потім виробляється пересилання
наступного байта, чи шина переводиться в стан кінця передачі. Це
означає, що передача завершена, і приймач може готуватися до наступного
запиту даних.

 

Рисунок 13. Передача байту по шині І2С

 

Існує дві максимальні швидкості передачі даних по шині І2С: «стандартний
режим» ~ до 100 Кбіт/с і «швидкий режим» — до 400 Кбіт/с (рис. 2.41).

   

Рисунок 14. Тимчасова діаграма сигналів на шині І2С

 

Формат команди, що надходить від ведучого пристрою до відомого,
показаний на рис. 15. Адреса одержувача містить 7 біт. Існує
незатверджений («вільний») стандарт, відповідно до якого чотири старших
біти використовуються для вказівки типу пристрою, а наступні три біти
використовуються для вибору одного з восьми пристроїв цього типу чи
служать для більш точного визначення типу пристрою. Тому що цей стандарт
не є обов’язковим, то деякі пристрої вимагають вказівки в якості трьох
останніх адресних біт визначених кодів, тоді як інші, наприклад
мікросхеми пам’яті EEPROM використовують ці біти для вибору адресата
усередині пристрою. Існує також 10-розрядний стандарт для передачі
адреси, у якому перші 4 біти містять 1, а біт, що випливає має значення
0, останні 2 біти є старшими бітами адреси, а завершальні 8 біт адреси
передаються в наступному байті. Усе це означає, що дуже важливо
розподілити адреси між пристроями, підключеними до шини.

Перші чотири біти адреси звичайно служать для визначення типу обираних
пристроїв у відповідності з наступним угодою:

0000 — Зарезервована адреса

0010 — Синтезатор голосу

0011 — Аудіо — інтерфейс

0100 — Звуковий генератор

0111 — Жидкокристалічний чи світлодіодний дисплей

1000 — Відео — інтерфейс

1001 — аналогово-цифровий і цифро-аналоговий інтерфейси

1010 — Послідовна пам’ять

1100 — Керування радіоприймачем

1101 — Годинник/календар

1111 — Зарезервовано для використання 10-розрядної адреси

Рисунок 15. Формат передачі даних по шині І2С

 

Перш, ніж закінчити обговорення протоколу І2С, варто звернути увагу на
наступні обставини. У деяких пристроях потрібна повторна посилка
стартового біта, щоб скинути приймаючий пристрій у вихідний стан для
прийому наступної команди. Наприклад, при читанні з EEPROM-пам’яті з
послідовною вибіркою перша команда посилає адресу осередку, з якого
виробляється зчитування, а друга команда виконує читання даних по цій
адресі.

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

На практиці здійснити арбітраж у цьому випадку досить просто. Під час
передачі даних обидва передавачі точно синхронізують тактові імпульси.
Якщо при передачі адреси біт, що повинний мати значення „1”, насправді
приймає значення „0”, то це вказує на те що шина зайнята іншим
пристроєм. У цьому випадку ведучий пристрій відключається від шини і
чекає, коли наступить стан «кінець передачі», після якого повторює
запит. Можливо, це важко зрозуміти по приведеному описі. У наступному
розділі «Протокол CAN» буде показано, як теж саме відбувається з
використанням асинхронної шини CAN, що має багато загального із шиною
І2С.

Протокол І2С може бути легко реалізований програмним шляхом. Але при
цьому швидкий режим не може бути реалізований через перевантаження
процесора, навіть стандартний режим 100 Кбіт/с може виявитися занадто
швидким для деяких мікроконтролерів. Програмна реалізація щонайкраще
підходить тоді, коли в мережі мається тільки один ведучий пристрій. У
цьому випадку немає необхідності синхронізуватися з іншими пристроями чи
приймати повідомлення від інших ведучих пристроїв, що працюють із
занадто великою швидкістю, що не забезпечується при програмній
реалізації.

 

Протокол CAN

Протокол CAN (Controller Area Network) був розроблений компанією Bosch
кілька років назад як мережне рішення для зв’язку комп’ютерних систем,
застосовуваних в автомобілях. У той час не існувало єдиного стандарту
для зв’язку цифрових пристроїв в автомобілях. До появи протоколу CAN (чи
протоколу J1850, що є аналогічним американським стандартом) автомобілі
містили до трьох миль проводів вагою понад 90 кг, що зв’язували різні
автомобільні електронні пристрої. Протокол CAN був розроблений, щоб
задовольняти наступним вимогам:

—        Висока швидкість обміну (до 1 Мбіт/с).

—        Нечутливість до електромагнітних перешкод.

—        Простота, невелика кількість роз’ємних контактів (для

забезпечення механічної надійності).

—        Легкість підключення і видалення пристроїв.

Протокол CAN подібний протоколу J1850 і ґрунтується на тих же перших
двох рівнях семирівневої моделі OSІ, однак ці два стандарти електрично
несумісні. Стандарт на протокол CAN з’явився раніш, тому даний стандарт
реалізується практично у всіх моделях європейських і японських
автомобілів, а в даний час активно використовується й американськими
автомобільними компаніями.

Протокол CAN реалізується з використанням операції «монтажне И», що
використовується також шиною І2С. Передача даних на фізичному
електричному рівні реалізується за допомогою драйверів, що відповідають
стандарту RS-485, що забезпечують видачу на лінію зв’язку
диференціальної напруги. Така мережа буде працювати навіть якщо один із
двох провідників закорочений чи обірваний, що особливо важливо для
забезпечення надійності автомобільного устаткування. Використання
з’єднання, що реалізує «монтажне И», дозволяє виконувати арбітраж між
різними ведучими пристроями: коли вихідні драйвери пристроїв активні, то
шина CAN переводиться в низький стан, аналогічно І2С.

Приклад реалізації цього методу арбітражу показаний на рис. 2.43. Коли
сигнал, видаваний драйвером, не збігається з рівнем, встановленим на
лінії передачі даних (наприклад, при видачі „1” на шині виявляється
„0”), то драйвер зупиняє передачу даних доти поки не завершиться
пересилання поточного повідомлення. Цей простий і ефективний спосіб
арбітражу виключає необхідність повторної посилки повідомлення при
виникненні колізій на шині.

 

Рисунок 16. Арбітраж при передачі по шині CAN

 

Кожне повідомлення являє собою окремий кадр у потоці даних, що
пересилається. Кадр передається як фрагмент цього асинхронного
послідовного потоку, у якому пересилання даних не супроводжується
посилкою синхросигнала. При цьому приймач і передавач повинні працювати
на одній частоті: звичайно швидкість обміну встановлюється в межах від
200 Кбіт/с до 1 Мбіт/с. Формат кадру передачі даних показаний на рис.
17.

 

Рисунок 17. Кадр передачі даних по шині CAN із використанням 11-бітного
ідентифікатора

 

При використанні протоколу CAN нульове значення біта називається
«домінантним», а одиничне значення — «рецессивним» (за аналогією з
генами в біології).

Різні поля кадру мають наступне призначення:

SOF (Start Of Frame) — початок кадру, одиничний домінантний біт.

           Ідентифікатор — 11-и чи 19-бітний ідентифікатор повідомлення.

RTR — Біт, що вказує, що ведучий пристрій є передавачем (при RTR=1) чи
приймачем (при RTR=0) даних.

r1/r0 — Зарезервовані біти, що повинні бути домінантними.

DLC — 4 біти, що вказують кількість переданих байт.

Data — від 0 до 8 переданих байтів даних, де старший біт йде першим.

CRC — 15 бітний код контрольної суми, за яким випливає рецесивний біт.

Ack — 2-бітне поле підтвердження готовності (домінантний і рецесивний
біти).

EOF (End Of Frame) — кінець кадру (поле, що містить не менш 7 рецесивних
біт).

 

Останнє важливе зауваження, що стосується CAN, полягає в тому, що
пристроям не даються специфічні  імена чи адреси, повідомлення
ідентифіковане (використовуючи 11-и чи 19-и бітний ідентифікатор
повідомлення). Цей метод адресації може забезпечити дуже гнучкий обмін
повідомленнями.

Кадр у протоколі CAN має складний формат, що ускладнює його обробку в
процесі передачі і прийому повідомлення. Така обробка може виконуватися
як апаратно, так і програмно, але рекомендується використовувати тільки
апаратну реалізацію CAN. Ряд виробників вбудовують CAN-інтерфейс у
мікроконтролери, що випускаються ними. Також існує декілька пристроїв,
що серійно випускаються, (особливо популярна мікросхема Intel 82527), що
ефективно і з мінімальними додатковими витратами виконують функції CAN
інтерфейсу.

2. Переривання. Система переривань

Багато користувачів вважають, що переривання — це та частина апаратного
забезпечення, якій краще дати спокій, тому що їхнє використання вимагає
чудового знання процесора для розробки програми обробки переривання. У
противному випадку при виникненні переривання система «засинає» чи «йде
вразнос». Таке почуття звичайно з’являється в розробника після досвіду
роботи з перериваннями для персонального комп’ютера, що має ряд
особливостей, що ускладнюють створення оброблювача переривань. Багато  з
цих проблем не мають місця в устаткуванні, реалізованому на базі
мікроконтролерів. Використання в даному устаткуванні переривань може
істотно спростити його розробку і застосування.

У комп’ютерній системі переривання — це запуск спеціальної підпрограми
(названої «оброблювачем переривання» чи «програмою обслуговування
переривання»), що викликається сигналом апаратури. На час виконання цієї
підпрограми реалізація поточної програми зупиняється. Термін «запит на
переривання» (interrupt request) використовується тому, що іноді
програма відмовляється підтвердити переривання і виконати оброблювач
переривання негайно (рис. 2.19).

Переривання — подія, що виникає в комп’ютері і яку треба обробити.
Обробити — не що інше, як викликати певну процедуру, обробник
переривання.

У MS-DOS існує така класифікація переривань:

Апаратні — пов’язані з сигналом від зовнішнього пристрою;

Внутрішні — переривання, що генеруються самим процесором;

Програмні — генеруються програмою і викликають процедуру обробки
переривань.

Команда звернення до переривання — int <номер_переривання>. Це
далекий виклик переривань, він змінює регістри CS і IP.

Повернення з обробника переривань — iret. Ця команда відновлює змінені
регістри, які зберігаються на стеку.

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

 

Рисунок 2.19 Виконання переривання

 

Перша можлива відповідь — «не реагувати на переривання, поки не
завершиться виконання поточної задачі» — реалізується шляхом заборони
(маскування) обслуговування запиту переривання. Після завершення задачі
можливий один із двох варіантів: скидання маски і дозвіл обслуговування,
що приведе до виклику оброблювача переривання, чи аналіз значення бітів
(«пуллінг»), що вказують на надходження запитів переривання і
безпосереднє виконання програми обслуговування без виклику оброблювача
переривання. Такий метод обробки переривань використовується, коли
потрібно забезпечити заданий час виконання основної програми, тому що
будь-яке переривання може порушити реалізацію необхідного інтерфейсу.

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

Оброблювач переривання завжди забезпечує наступну послідовність дій:

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-розрядні адреси.

Сегментна організація пам’яті якраз і була запропонована як засіб для
виходу з такого становища. Відповідно до цього, адреси ділянок
оперативної пам’яті складаються з двох частин і записуються у вигляді
сегмент:зміщення. Наприклад, якщо кажуть, що «дане розміщується за
адресою B800h:0010h», то це означає, що сегмент (ділянка пам’яті), в
якому розміщується дане, починається з адреси B800h, а саме дане
знаходиться на відстані 0010h від початку сегменту. Символ «h» в кінці
числа означає, що це число записане в шістнадцятковій системі числення.

Якщо подібну адресу слід запам’ятати в регістрах процесора, то
сегментна адреса (початок сегменту) розміщується в одному з регістрів, а
зміщення — в іншому регістрі. При зверненні до відповідної ділянки
пам’яті процесор обчислює її реальну адресу таким чином: домножує
сегментну адресу на 16 і додає до отриманого числа зміщення. Розмір
сегменту та величина зміщення не повинні перевищувати 64К.

Для отримання зміщення певної ділянки пам’яті можна використовувати
оператор offset.

Aсемблерна програма працює з трьома основними сегментами:

сегмент коду, в якому розміщуються команди, які виконуються;

сегмент даних, в якому розміщуються дані, потрібні програмі;

сегмент стеку, типовим використанням якого є виклик процедур та
переривань. 4. Завантаження ОС Linux. Ініціалізація ядра

Приготування

До початку встановлення корисно з’ясувати, яке апаратне забезпечення
вашого комп’ютера і чи сумісне ваше обладнання з Linux?

Під час встановлення ви зустрінетесь з назвами дисків, розділів на них
та назвами каталогів файловї системи Linux, що відрізняються від тих,
які використовуються в DOS та Windows ™.

 

Назви дисків та розділів

Всі фізичні пристрої вашого комп’ютера відображуються в каталог /dev
файлової системи Linux (про це — нижче). Диски IDE (зокрема жорсткі
диски, дисководи CD ROM, ATAPI floppy) мають назви:

/dev/hda — перший на першому каналі IDE,

/dev/hdb — другий на першому каналі IDE,

/dev/hdc — перший на другому каналі IDE,

/dev/hdd — другий на другому каналі IDE.

Жорсткі диски SCSI позначаються /dev/sdX, де X — a,b,c,d,e, … в
залежності від порядкового номера диска на шині SCSI.

Розділ диска позначається числом після його назви. Наприклад, /dev/hdb4
— четвертий розділ другого диска на першому каналі scsi.

Файлова система Linux

Файлова система Linux, на відмінність від файлових систем DOS та
Windows(tm), є єдиним деревом. Корінь цього дерева — каталог, що
називають root (рут), та позначають «/». Частини дерева файлової системи
можуть фізично розміщуватися в різних розділах різних дисків або взагалі
на інших комп’ютерах, — для користувача це прозоро. Процес приєднання
файловї системи розділу до дерева називають монтуванням, від’єднання —
розмонтуванням. Наприклад, файлова система CD ROM в Linux-Mandrake RE
монтується стандартно в каталог /mnt/cdrom (шлях в Linux позначають з
використанням /, а не \, як в DOS/Win). Поточний каталог позначають «.».

Файлова система Linux-Mandrake RE містить каталоги першого рівня /bin
(командні оболонки (shell), основні інструменти), /boot (містить ядро
системи), /dev (псевдофайли пристроїв, що дозволяють працювати з ними
безпосередньо), /etc (файли налаштувань), /home (особисті каталоги
користувачів), /lib (системні бібліотеки, модулі ядра), /mnt (каталоги
для монтування файлових систем змінних пристроїв та зовнішніх файлових
систем), /proc (віртуальна файлова система, що містить відомості про
поточний стан системи), /root (особистий каталог наглядача за системою,
він реєструється в системі під ім’ям root), /sbin (системні
інструменти), /usr (програми та бібліотеки, що доступні користувачу, а
також документація в /usr/share/doc), /var (робочі файли програм, черги,
журнали), /tmp (тимчасові файли).

Разділи, що необхідні для роботи Linux

Для роботи Linux необхідно створити на жорсткому диску (дисках), що
найменш два разділи: кореневий (тобто той, що буде містити каталог / )
та розділ свопингу (swap, розділ підкачки). Розмір останнього, як
правило, складає від однократної до двукратної величини оперативної
пам’яті компьютера. Але, коли у вас 128 Мб та більше, можно робити цей
розділ значно меншого розміру. Коли у Вас багато вільного місця на
диску, то можно створити окремі разділи для каталогів /usr, /home, /var.
Буває корисно створити невеличкий (до 16 Mб) розділ /boot.

Попередження. Під час встановлення будь-якої операційної системи,
зокрема й Linux-Mandrake RE, необхідно потурбуватися прол цілісність
данних, що є на диску. Не забудьте зробити їх резервну копію. Крім того,
дуже рекомендуємо Вам створити завантажувальні (спасіння) дискети для
тих операційних систем, що залишаються на ваших дисках. У випадку
помилки під час встановлення програми, що керує завантаженням, Ви будете
мати можливість відновити записи завантаження цих систем.

 

Встановлення в різних режимах

Процедура встановлення Linux-Mandrake RE дуже проста і майже повністю
українізована. Уважно читайте повідомлення програми і ці настанови, не
поспішайте натискати на клавіши.

 

Початкове завантаження

Завантаження прогами встановлення можливо здійснити з завантажувального
CD, з DOS та з дискети завантаження.

Завантаження з CD. Коли Ваш BIOS підтримує початкове завантаження з CD,
то це самий простий спосіб. Не забудьте тіки зазначити в налаштуваннях
BIOS в якості першого джерела завантаження — CD. Треба просто вставити
завантажувальний CD та перезавантажити машину. В цьому випадку комплект
має знаходитися на КД. Фірмові КД від AltLinux — завантажувальні.

Коли на комп’ютері встановлено MS-DOS(tm), або Windows(tm) то програму
встановлення можливо завантажити безпосередньо з CD без використання
дискет.

Для цього треба запустити autoboot.bat з каталога \dosutils\autoboot на
CD в режимі «чистого» DOS. Детально цей метод описано в документаціі на
диску. В цьому випадку комплект має знаходитися на CD.

Створення дискети для завантаження. Мы радимо цей метод, коли Ваш BIOS
не підтримує завантаження з КД, а також в усіх випадках, коли комплект
знаходиться не на КД. Зразки завантаження знаходяться в каталзі images
на КД та мають наступне призначення:

cdrom.img: встановлення з CD

hd.img: встановлення з жорсткого диску

hdreiser.img: встановлення з жорсткого диску з файловою системою
reiserfs

other.img: завантаження з проблемних пристроїв, включаючи деякі диски
SCSI

network.img: встановлення з ftp/nfs/http

pcmcia.img: встановлення з пристрою pcmcia

Для створення дискети завантаження під Windows треба скористатися
програмою rawwrite. Вона знаходиться на CD в каталозі dosutils. Майте на
увазі, що є й DOS версія той же програми — rawrite, (це насправді,
оригінальна версія програми; rawwrite по суті є графічною надбудовою до
неї).

Зазначте зразок для завантажування та куди його копіювати.

Потім вставте чисту дискетку в зазначений пристрій та натисніть Write.

Для створення дискетки завантаження під Linux (наприклад на сусідній
машині) виконайте наступне:

 зареєструйтеся в системі як root (чи то login, чи su);

 змонтуйте CDROM. Нехай точка монтування — mnt/cdrom;

 вставте чисту дискету до дисководу та наберіть:

$ cp /mnt/cdrom/images/cdrom.img /dev/fd0

 Замініть /dev/fd0 на /dev/fd1, якщо Ви використовуєте другий привід та,
звичайно, вкажіть назву зразка, що Вам потрібен.

 Для початкового завантаження, треба позначити в BIOS привід А: як перше
джерело для завантаження. Після цього завантажити машину з новими
параметрами, вклавши КД в привід для КД.

 

 Використання Lnx4Win

 Lnx4Win (Linux for Windows) може знадобитися, коли Вы бажаєте
встановити Linux, але зовсім не бажаєте робити нове розбиття жорсткого
диска на розділи. Ця програма створить два файли у вашому розділі
Windows, що будуть містити вашу систему Linux-Mandrake RE: один файл для
данних та один для swap. Цей тип встановлення без сумніву самий швидкий,
але у нього є власні недоліки:

 така система заздалегідь повільніша за нормальну: loopback монтування
файлу (використано цей метод) не таке швидке, як робота файлової системи
на реальному разділі;

 коли доведеться перевстановити Windows, то ваша система Linux-Mandrake
RE також пропаде.

 Але, це простий спосіб знайомства з Linux-Mandrake RE, що не зачіпає
Ваш жорсткий диск. Проте, навряд чи ви отримаєте таким чином адекватне
уявлення про систему.

 

 Встановлення засобами DrakX

 DrakX — це основна програма встановлення Linux-Mandrake RE, вона працює
в графічному режимі та має зручний для користувача вигляд. Програма
легка у використанні: дозволяє повернутися назад до майже будь-якого
етапу встановлення, пропонує на вибір декілька типів встановлення, в
залежності від Вашого досвіду.

 Після завантаження з CD Linux-Mandrake RE (або дискетки для
завантаження ) Ви побачите на екрані DrakX. Екран разбито на три
частини: Меню (зліва), Допомога (знизу справа) та Робоча. В меню
знаходиться перелік етапів встановлення.

Етапи, що вже пройдені, позначені зеленою зірочкою, ще не пройдені —
червоною, а поточний етап — помаранчевою. Нижче пунктів меню знаходиться
панель, яка дозволяє вибирати різні «теми» — вони визначають кольорову
гаму зображення на екрані.

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

Вибір мови.

 Обравши мову встановлення Ви тим самим задаєте основну мову в системі.

Клас встановлення.

 Початківцям, рекомендовано обрати клас встановлення «Рекомендуется». В
цьому випадку система сама вибере багато параметрів встановлення,
включаючи розбиття диска на розділи. Вона орієнтується при цьому на на
вимоги стандартів до системи. Від перекладача: Особисто я, порадив би
цей клас, лише під час встановлення на чистий жорсткий диск і тим у кого
немає бажання розуміти, що відбувається під час цього процесу. Ви можете
отримати зовсім не те на що сподівалися. ;о)

Клас встановлення «З настройкою» дозволяє вибрати один з трьох підкласів
— «Рабоча станція», «Розробник», «Сервер». Перший з них для встановлення
системи, що орієнтована на загальне застосування, другий — на систему,
що орієнтована на розробку програмного забезпечення, а третій — на
організацію обслуговувача. Клас встановлення «Эксперт» дозволяє, в
доповнення до можливостей класу «З настройкою», контролювати процес
встановлення на рівні конкретних пакетів (при цьому обраний підклас
визначає початковий стандартний комплект пакетів).Від перекладача:
Головне, що режим експерта дозволяє повністю контролювати хід
встановлення.

Налаштування SCSI.

 DrakX спробує самостійно визначити наявність пристроїв SCSI PCI на
Вашому комп’ютері. У випадку вдалого визначення пристрою, DrakX
автоматично встановить необхідний драйвер. Випадок невдалого визначення,
швидше за все, значить, що у Вас SCSI на карті ISA. В цьому випадку Вам
будуть потрібні відомості про пристрій з документаціі (або з раніше
встановленої системи Windows, щоб повідомити драйверу необхідні
параметри, наприклад:

 io=0x400 irq=5

Встановлення чи поновлення.

 Зрозуміло, що треба обрати «Встановлення», коли Ви ставите систему
вперше, або ігноруєте раніше встановлений Linux. «Поновлення» треба
вибирати коли поновлюється раніше встановлена система Linux-Mandrake RE.

Налаштування миши.

 У випадку выбору класа встановлення «Рекомендується», налаштування миши
відбудеться автоматично. В іншому випадку треба вибрати з переліку
потрібну мишу та, можливо, вказати порт.

Налаштування клавіатури.

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

Інше.

 Крім того, Ви можете встановити ряд додаткових параметрів. Опис рівнів
безпеки Ви знайдете нижче в окремому розділі. Не захоплюйтеся надмірним
рівнем — вже «средній» встановлює рівень захисту, що встановлюється в
RedHat та попередніх версіях Mandrake. Обравши «високий» рівень, Ви
помітите велику кількість обмежень, що можуть здатися Вам надмірними.
Для настільного використання, швидше за все, цілком досить «слабкого»
рівня. Встановлення supermount зручно для настільного застосування —
зникає необхідність монтування змінних носіїв (дискет та КД), система
робить це автоматично.

Вибір точок монтування.

 Тут виконується дуже відповідальна процедура розбиття дисків на разділи
та задання точок їх монтування в системі. Робота ця значно полегшується
за рахунок зручних засобів, що пропонуються DrakX, зокрема, можливість
відміни вибору, коли він був невдалим. В режимі «Рекомендується» всі
необхідні дії, звичайно, виконуються автоматично. Працюючи в інших
режимах Ви можете видаляти та створювати розділи на дисках, а також
міняти розміры вже існуючих розділів, що містять Windows, без втрати
данних. По закінченні роботи повинні бути створені та відформатовані, що
найменше, два розділи — Linux (підсвічується червоним) та swap
(підсвічується зеленим), та задана точка монтування для першого з них.
Створення інших розділів та вибір точок монтування можно зробити
відповідно до власних смаків та майбутнього використання системи. Але
для цього вже потрібен певний рівень знайомства з Linux. Доречно
призначити точки монтування для всіх існуючих розділів (крім swap), щоб
вони одразу були доступні в системі.

 Запис таблиць розташування на диски здійснюється лише після натискання
кнопки «Готово» та додаткового підтвердження. До цього моменту є
можливість відмовитися від зроблених змін, натиснувши кнопку
«Відмінити».

Вибір пакетів для встановлення.

 В режимі «Рекомендується» вибір буде здійснено без Вашої участі, але з
урахуванням наявності місця на дисках. В інших режимах Вам треба вибрати
групи пакетів, в яких Ви зацікавлені. Програма вирахує бажаний розмір
встановлення (Ви можете його змінити) та сформує, згідно до нього,
перелік пакетів для встановлення.

 Під час роботи в режимі «Експерт» з’явиться перелік окремих пакетів, в
якому можно на свій розсуд змінити кількість пакетів, що будуть
встановлені. При цьому в окремому вікні виводяться пояснення до пакетів,
а знизу — загальний об’єм обраних пакетів. Паралельно програма контролює
залежності пакетів та, за необхідності, автоматично додає пакети, яких
не вистачає.

 Якщо виділити «Автоматичний контроль залежностей», то програма
встановлення не буде видавати повідомлень про зламані залежності та
конфлікти між пакетами, а вирішить проблеми сама. (На скільки зможе.
Взагалі-то не варто на неї дуже покладатися.) Стандартно, програма буде
видавати такі повідомлення.

Встановлення системи

 Встановлення системи буде здійснено автоматично у відповідності до
зробленого раніше вибору. Якщо Ви вибрали велику кількість пакетів,
можете зараз перепочити. :о)

Налаштування мережи.

 DrakX дозволяє налаштувати з’єднання «зі світом» посередництвом карти
мережи та модему.

 DrakX спробує самостійно визначити тип модема, а у випадку
неможливості, запропонує Вам вибрати з переліку потрібну модель. Під час
налаштування модемного з’єднання треба вказати стандартні данні, такі як
тип протоколу, номер телефона для зв’язку, ім’я та пароль користувача,
назву домену та адреси обслуговувачів DNS. Пізніше програма попросить
вказати адреси Proxi-обслуговувачів для http та ftp. Всі ці данні можно
отримати у свого Интернет-постачальника, або у наглядача за мережою.
Крім того з’єднання з мережою можно налаштувати пізніше, після
завершення встановлення системи.

 DrakX спробує самостійно визначити тип карти мережи, а у випадку
помилки запропонує Вам вибрати з переліку потрібну модель. Для
встановлення з’єднання з місцевою мережою, Вам доведеться також
відповісти на ряд запитань, відповіді на які повинен знати наглядач за
мережою. Серед них — назва машини в мережі та її IP-адреса (або адреса
DHCP обслуговувача, коли адреси призначаються динамічно), адреси
проксі-обслуговувачів для http та ftp.

Налаштування часового поясу.

 Треба лише зазначити як налаштовано системний таймер — за місцевим
часом чи за Гринвичем (GMT).

Налаштування принтера.

 Для встановлення друку з Linux треба вказати спосіб доступу до принтера
(місцевий чи з мережи) та налаштувати фільтр друку, що залежить від його
моделі.

 В комплекті є дві системи друку — традиційна lpd та нова CUPS (Common
Unix Printing System). В більшості випадків краще вибрати CUPS, про
роботу з яким розповідається в главі 5.9 цих настанов.

 Linux підтримує доступ до принтерів під’єднаних різним чином:

Місцевий принтер

Принтер, що обслуговується Unix — машиною з lpd (з Linux або іншою
Unix-подібною операційною системою): виберіть Remote lpd;

Принтер в мережі, що обслуговується CUPS.

Принтер, що обслуговується Windows — машиною (9x або NT): виберіть
SMB/Windows95/98/NT;

Принтер, що обслуговується Netware машиною: виберіть NetWare

 Якого б типу не був Ваш друкувальник, DrakX спитає, чи Ви бажаєте
протестувати свї налаштування. У випадку помилки можно робити необмежену
кількість нових спроб.

 Коли у Вас місцевий принтер, DrakX спробує визначити виробника та
модель: сучасні друкувальні пристрої надають таку можливість. У випадку
невдачи автоматичного визначення, Вам треба буде вказати, до якого порту
під’єднано принтер. Коли у Вас лише один принтер, треба зазначити
/dev/lp0.

 Коли Ви маєте доступ до lpd-принтеру під Unix, треба буде ввести назву
машини, що обслуговує принтер, та назву черги, що відповідає цьому
друкувальнику на обслуговувачі (ця назва може різнитися з назвою, що
використовується місцево)

 У випадку мережевої CUPS-системи не треба ніяких додаткових
налаштувань.

 Для налаштування друку на принтері SMB, Ви повинні бути уважними коли
вводите назву машини: назва машины, що Ви повинні ввести, може
відрізнятися від назви машини на DNS, бо SMB має власну систему
називання машин, і коли Linux буде друкувати на цей друкувальник, він
буде звертатися до обслуговувача друку з використанням протоколу SMB.
Тому з’ясуйте назву обслуговувача друку у свого наглядача за мережою. Ви
також маєте можливість задати обслуговувач друку за його IP адресою.
Крім того, треба буде ввести ім’я користувача, пароль та робочую групу,
необхідні для доступу до принтеру.

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

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

 В переліку драйверів, що пропонує Вам DrakX, виберіть свій принтер, а у
випадку його відсутності — сумісний з ним. Після цього треба ввести
різні параметри для налаштування обраного вами драйвера.

Пароль наглядача.

 Пароль наглядача за системою (root) — критичне місце в безпеці вашої
системи Linux. Наглядач має право робити поновлення, створювати
користувачів, міняти всі налаштування в системі і т.і. Він може робити
все. Тому треба вибрати пароль, що юуде тяжко відгадати. Коли пароль
надто простий, DrakX видасть попередження. Від вводу пароля можно
відмовитися, але мы дуже рекомендуємо ввести його!

 Пароль треба набивати двічи — інакше помилка друку може створити
проблему, що Ви не зможете відтворити її під час реєстрації в системі.

Додаємо користувачів.

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

 Коли Ви створите всіх необхідних користувачів, виберіть Готово.

Дискета для завантаження.

 DrakX запропонує створити дискету для завантаження системи Linux

 На це є ряд підстав:

Коли Ви не використовуєте System Commander або інший диспечер
багатоваріантного завантаження, DrakX перепише сектор завантаження
вашого головного диска так, щоб Ви мали можливість стартовати Windows
або Linux (коли Ви маєте Windows в системі); Якщо Вам доведеться
перевстановлювати Windows, то вона перезапише завантажуваьлний сектор
знов, і Ви не зможете запустити Linux!

Коли виникнуть проблеми, через які Ви не будете мати можливість
завантажити Linux с жорсткого диска, то ця дискета буде єдиним засобом
запуску Linux.

 Тому дуже рекомендуємо казати тут «Так»! Звичайно, дискета, що Ви
вставляєте повинна бути пустою або містити лише не потрібні данні.
Форматувати її не обов’язково: DrakX перепише весь диск цілком.

Встановлення завантажувача GRUB чи LILO.

 GRUB та LILO (LInux LOader) є початковими завантажувачами для Linux.
GRUB під час завантаження надає меню систем до завантаження та має більш
гнучкі можливості. Він буде встановлений стандартно. LILO звичайно
встановлюється в тих випадках, коли чомусь не можливо встановити GRUB.
Він також має розвинуті можливості. Систему меню та графічний режим,
якщо він Вам більше подобається. В режимі «Рекомендується» цей етап
встановлення зазвичай повністю автоматизовано. DrakX проаналіиує сектор
завантаження диска та буде діяти в залежності від того, що там знайде:

коли знайде сектор завантаження від Windows, то замінить його на сектор
завантаження від GRUB (LILO), щоб можна було запускати за бажанням Linux
або Windows;

у випадку вагань, DrakX запитає Вас, де бажано встановити GRUB (LILO).
Звичайно пропонується встановлювати його на перший сектор головного
диска (MBR). Якщо Ви користуєтесь якимось диспечером завантаження,
ставте GRUB (LILO) до першого сектору розділу, що буде монтуватися як /.

Налаштування X.

 X (X Window System) є серцевиною графічного інтерфейсу Linux, на якій
базуються всі графічні середовища, що входять в комплект Linux-Mandrake
RE (KDE, GNOME, AfterStep, WindowMaker…). В цьому розділі DrakX
спробує автоматично налаштувати X.

 Звичайно це йому вдається. До невдачі може призвести дуже старе, нове
або нестандартне обладнання. У випадку успіху він автоматично запустить
X з найкращою можливою розподільною здатністю для певного размеру
монитора. Після цього з’явиться вікно, і Вас спитають, чи Ви його
бачите. У випадку не успіху DrakX запропонує змінити налаштування та
надасть перелік коректних режимів, що він зміг знайти, та попросить
вибрати один з них.

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

 DrakX запитає також, чи бажаєте Ви запускати X одразу під час
завантаження, чи будете запускати його пізніше командою startx.

Встановлення в текстовому режимі.

 DrakX подтримує встановлення з низькою розподільчою здатністю та в
текстовому режимі. Для встановлення в текстовому режимі наберіть:

linux text

 в привітанні syslinux. (Під час завантаження, одразу після графичного
привітання). Або після натискання клавіши F1(Help), як пропонується на
привітанні, в командному рядку, де буде бливати курсор.

Иллюстрированно (грубо говоря 🙂 инициализация Linux выглядит примерно
следующим образом, где «[…]» обозначает опциональное (зависимое от
конфигурации ядра) и «{…}» является комментарием.

+—————————————-+

| arch/i386/boot/setup.S:: + |

| arch/i386/boot/video.S:: |

|—————————————-|

| start_of_setup: |

| проверяем, что загрузились хорошо |

| получаем размер системной памяти |

| получаем видеорежим(ы) |

| получаем параметры жесткого диска |

| получаем инфу о шине MC |

| получаем инфу о мыши |

| получаем инфу о поддержке APM в BIOS |

| поднимаем линию A20 |

| сбрасываем сопроцессор |

| маскируем все прерывания |

| переключаемся в защищенный режим |

| вызываем startup_32 |

+—————————————-+

|

v

+———————————————-+

| arch/i386/kernel/head.S:: |

|———————————————-|

| startup_32: |

| выставляем сегментные регистры |

| в известные значения |

| инициализируем основные страничные таблицы |

| выставляем указатель стека |

| очищаем «ядерный» BSS |

| выставляем IDT |

| checkCPUtype |

| загружаем GDT, IDT, и LDT |

| указатель регистров |

| start_kernel |

| {безвозвратная функция} |

+———————————————-+

|

v

+——————————-+
+—————————————+

| init/main.c:: | +->| arch/i386/kernel/setup.c::
|

|——————————-| |
|—————————————|

| start_kernel(): | | | setup_arch():
|

| lock_kernel | | | копируем параметры
загрузки |

| setup_arch |—+ | инициализируем ramdisk
|

| parse_options |<-+ | setup_memory_region | | trap_init | | | parse_cmd_line | | cpu_init | | | используем карту памяти BIOS для | | init_IRQ | | | установки инфы страничного кадра | | sched_init | | | резервируем физическую страницу 0 | | init_timervecs | | | [find_smp_config] | | time_init | | | paging_init | | softirq_init | | | [get_smp_config] | | console_init | | | [init_apic_mappings] | | [init_modules] | | | [резервируем память под INITRD] | | [настраиваем профилирование] | | | probe_roms для поиска | | kmem_cache_init | | | возможных ROMs | | sti | | | request_resource для резервирования | | calibrate_delay | | | памяти под видео RAM | | [настраиваем INITRD] | | | request_resource для резервирования | | mem_init | | | всех стандартных ресурсов | | free_all_bootmem | +--| I/O системной платы ПК | | kmem_cache_sizes_init | +---------------------------------------+ | [proc_root_init] | | fork_init | | proc_caches_init | | vfs_caches_init | | buffer_init | | page_cache_init | | kiobuf_setup | | signals_init | +-----------------------------------------+ | bdev_init | | init/main.c:: | | inode_init | | init(): {...поток init'а...} | | [ipc_init] | | do_basic_setup | | [dquot_init_hash] | | {иниц-я шин/устр-в и нач-ые вызовы} | | check_bugs | | free_initmem | | [smp_init] {*below} | | открываем /dev/console | | пускаем поток init'а {--->} |…..| выполняем init скрипт или
шелл |

| unlock_kernel | | или паникуем
|

| cpu_idle |
+——————————————+

+——————————-+

+—————————————+

| smpboot.c::smp_init |

|—————————————|

| arch/i386/kernel/smpboot.c:: |

| smp_boot_cpus(): |

| [mtrr_init_boot_cpu]

| smp_store_cpu_info |

| print_cpu_info |

| сохраняем соотв-ия CPU ID/APIC и ID |

| verify_local_APIC |

| connect_bsp_APIC |

| setup_local_APIC |

| для каждого корректного APIC ID |

| do_boot_cpu(apicid) |

| setup_IO_APIC |

| setup_APIC_clocks |

| synchronize_tsc_bp |

+—————————————+

Список використаної літератури

Гилев Ю.М., Дерюгін А.А. Особливості роботи многопроцессорной
обчислювальної системи з загальної многомодульной пам’яттю./Міжнародний
форум інформатизації – 2002: Доповіді міжнародної конференції
«Інформаційні засоби і технології». 14-16 жовтня 2003 р., у 3-х Т.Т.Т3.
– М.: До, 2003. – 221 с.

Марков А.А. Моделювання інформаційно-обчислювальних процесів: Навчальний
посібник для вузів. – М.: Изд-во МГТУ ім. Н.Е.Баумана,1999.-360 с.

Основи програмування. Посібник / Шлаєв В.І. – М., 2002.

Современные операционные системы, Э. Таненбаум, 2002, СПб, Питер, 1040
стр.,

HYPERLINK
«http://www.citforum.ru/operating_systems/sos/contents.shtml» Сетевые
операционные системы Н. А. Олифер, В. Г. Олифер

Сетевые операционные системы Н. А. Олифер, В. Г. Олифер, 2001, СПб,
Питер, 544 стр.

PAGE

PAGE 29

Похожие записи