Завдання до роботи: Ознайомитися з операційною системою реального часу UCOS-II і навчитися розробляти найпростіші програми в даній системі.



Лабораторна робота №1.

Тема роботи: Ознайомлення з операційною системою UCOS-II.

Завдання до роботи: Ознайомитися з операційною системою реального часу UCOS-II і навчитися розробляти найпростіші програми в даній системі.

Система UCOS-II – компактна, із пріорітетним планувальним операційна система реального часу. Завдяки тому, що ядро системи практично повністю написано на мові програмування С, система легко може бути портована практично на будь-який процесор який дозволяє зберігати в стеку дані і надає програмний доступ до вказівника стеку. В системі використовується лише один програмний модуль, виконаний на асемблері для реалізації перемикання задач, який є специфічним для обраної архітектури процесора. На сьогоднішній день система портована на 60 різних типів процесорів, орієнтованих на застосування у вбудованих системах, починаючи від дешевих 8-розрядних мікроконтроллерів і закінчуючи потужними 64-розрядними процесорами. Детальніша інформація подана на Інтернет сторінці розробника http://www.micrium.com/ports_v2.htm.

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

Розглянемо застосування системи при розробці програмного забезпечення систем реального часу. Перш за все, зупинимось на інсталяції і перекомпіляції ядра системи. Для навчальних цілей будемо використовувати останню версію системи 2.51. Після розархівування дистрибутиву системи - архіву із назвою ucos251.exe в вибрану Вами директорію буде створено декілька піддиректорій:

\Software

\Blocks

\HpListC

\To

\Ucos-ii\

Можливими є декілька варіантів компіляції ядра. Розглянемо один із найпростіших, при використанні версії системи для архітектури x86 і компілятора Borland C v.3.1-4.5 із можливістю генерації виконавчих файлів для операційної системи DOS. Розглянемо варіант компіляції системи, який базується на підключенні вихідних текстових файлів системи у проект, створений у інтегрованому середовищі розробника.

1. Із каталогу, де розпакований дистрибутив, переписуємо наступні файли у вибраний Вами каталог, наприклад \UCOS-ii\source\

OS_CORE.C

OS_CPU.H

OS_CPU_A.ASM (із каталогу \x86l-FL\Bc45, зберігає стан FPU процесора)

OS_CPU_C.C

OS_FLAG.C

OS_MEM.C

OS_MUTEX.C

OS_Q.C

OS_SEM.C

OS_TASK.C

OS_TIME.C

PC.C

PC.H

UCOS_II.C

UCOS_II.H

2. Створюємо каталог, де будуть розміщуватись робочі файли проекту, наприклад \UCOS-ii\test

3. Копіюємо туди наступні файли із каталогу Ex1_X86L:

INCLUDES.H – головний файл включень

OS_CFG.H – файл конфігурацій системи

TEST.C – тестовий приклад

Викликаємо IDE компіляторa із робочого каталогу проекту, в нашому випадку це буде \UCOS-ii\test і створюємо новий проект. До проекту слід додати наступні файли:

UCOS_II.C – головний файл включень системи.

os_cpu_c.c – реалізація функцій, специфічних для даної архітектури процесора.

os_cpu_a.asm – реалізація функцій на асемблері (варіант із підтримкою операцій з плаваючою комою)

pc.c – реалізація специфічних функцій вводу-виводу на дисплей, зчитування з клавіатури, обліку виконання програми тощо.

test.c – вихідний код демонстраційного прикладу

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

Code generation:
Model: Large
Options: Treat enums as ints
Assume SS Equals DS: Default for memory model
Optimizations:
Global register allocation
Invariant code motion
Induction variables
Loop optimization
Suppress redundant loads
Copy propagation
Dead code elimination
Jump optimization
Inline intrinsic functions
Register variables:
Automatic
Common subexpressions:
Optimize globally
Optimize for:
Speed

Після чого слід перекомпілювати приклад і запустити програму на виконання. При виникненні помилок компіляції слід усунути причини їх виникнення. Найчастіше вони бувають зумовлені відсутністю певних файлів чи неправильно заданими шляхами до них. При виникненні помилок типу Cannot transfer TASM (неможливо викликати турбо-асемблер) слід переконатись в його наявності в каталозі bin директорії, куди проінстальований Borland C.

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

 


Дата добавления: 2015-12-17; просмотров: 12; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!