Операционная система ЗОСРВ «Нейтрино» > Руководство разработчика > Основные принципы системной разработки > Разработка драйверов и драйверные библиотеки > Драйверные библиотеки > Библиотека разработки драйверов символьных устройств (libio-char) > Общие сведения > Обзор примера драйвера последовательного порта



Обзор примера драйвера последовательного порта

Инструкция по созданию, настройке и управлению драйвером последовательного порта 8250, включая описание регистров, исходного кода и основных функций для обработки данных и прерываний.

Этот раздел включает:

Исходный код
Функции и типы данных

Исходный код

Исходный код драйвера последовательного порта 8250 находится в публичном репозитории drivers/char/devc/ser8250. Эта директория включает:
externs.c
Определяет глобальные данные.
externs.h
Включает необходимые заголовки и объявляет глобальные данные.
init.c
Код инициализации.
intr.c
Обработчики прерываний.
main.c
Основная часть драйвера.
options.c
Разбирает аргументы командной строки драйвера.
proto.h
Прототипы интерфейсных функций драйвера.
query_defdev.c
Запрашивает устройства по умолчанию.

Caution: Cуществует специальная версия этой функции для настольных систем x86 в x86/query_defdev.c. Для других платформ нет устройств по умолчанию.

tedit.c
Минималистичная процедура редактирования.
tto.c
Процедура передачи данных размером до TX FIFO. Также обеспечивает поддержку управления и чтения состояния линий управления оборудованием, а также поддержку утилиты stty. Если TX FIFO отсутствует, функция tto() передает только один символ.
variant.h
Заголовочный файл, определяющий два макроса для чтения/записи 8250. Этот файл можно переопределить для различных плат с их собственными макросами чтения/записи.

Также имеются директории для конкретных платформ, каждая из которых включает: sys_ttyinit.c - Инициализирует структуру TTY, которую драйвер передает io-char.


Note: Изменяйте исходный код как можно меньше, так как его легко испортить.

Функции и типы данных

Драйвер serial8250 определяет эти функции и типы данных:
Функция / тип данных Описание
Создание нового устройства
Содержит данные для работы с устройством
Активирует последовательные порты устройства
Разбирает аргументы командной строки драйвера
Задает платформо-зависимые устройства по умолчанию
Функция обработчик прерываний
Настраивает динамически изменяемые регистры
Настройка порта UART
Инициализация платформо-зависимых значений по умолчанию
Передача данных в оборудование

Основная функция драйвера (main()), определенная в main.c, вызывает:




Предыдущий раздел: Библиотека разработки драйверов символьных устройсв