1 Краткое описание QNX BSP для СРВ902/CPC106

advertisement
QNX BSP 1.0 для СРВ902/CPC106
Описание и руководство разработчика (пользователя)
Содержание
1
Краткое описание QNX BSP для СРВ902....................................................................................... 2
2
Установка QNX BSP для СРВ902.................................................................................................... 2
3
Драйвер видео контроллера ............................................................................................................. 3
4
Драйвер IDE контроллера ................................................................................................................ 3
5
Драйвер Ethernet контроллера ......................................................................................................... 3
6
Драйвер USB контроллера ............................................................................................................... 4
7
Драйвер COM контроллеров ............................................................................................................ 4
8
Библиотека RS-485 интерфейса ....................................................................................................... 5
8.1
rs485_tx_on () ............................................................................................................................. 5
8.2
rs485_tx_off () ............................................................................................................................ 5
8.3
rs485_write_packet () ................................................................................................................. 6
8.4
rs485_read_packet () ................................................................................................................... 6
Библиотека сторожевого таймера контроллера SIO ...................................................................... 7
9
9.1
watchdog_sio_init () ................................................................................................................... 7
9.2
watchdog_sio_deinit () ................................................................................................................ 7
9.3
watchdog_sio_set () .................................................................................................................... 7
Библиотека сторожевого таймера супервизора ......................................................................... 8
10
10.1
watchdog_sv_init ()................................................................................................................. 8
10.2
watchdog_sv_deinit () ............................................................................................................. 8
10.3
watchdog_sv_on () .................................................................................................................. 9
10.4
watchdog_sv_off () ................................................................................................................. 9
10.5
watchdog_sv_reset () .............................................................................................................. 9
1
1 Краткое описание QNX BSP для СРВ902/CPC106
Под ОСРВ QNX Momentics (QNX 6.3.x) реализована поддержка следующих компонентов
модуля центрального процессора СРВ902:
–
видео контроллер LynxEM+;
–
IDE контроллер;
–
Compact Flash;
–
два контроллера Ethernet DP83815;
–
два порта USB 1.1;
–
шесть последовательных портов COM1 – COM6;
–
полудуплексный режим RS-485 для COM3 – COM6;
–
сторожевой таймер, встроенный в SIO;
–
сторожевой таймер, встроенный в супервизор.
2 Установка QNX BSP для СРВ902/CPC106
QNX BSP для СРВ902 поставляется в виде сжатого tar архива:
qnx630-bsp-cpb902-10.tgz
Для установки следует предварительно скопировать его в каталог на диск и распаковать
следующим образом:
#tar –xzvf qnx630-bsp-cpb902-10.tgz
Затем перекопировать распакованные файлы в соответствующие директории.
В архиве содержатся следующие файлы:
/bin/rs485test
- Тестовая программа обмена по RS-485 интерфейсу.
/bin/wdtsio
- Утилита как пример использования библиотеки
сторожевого таймера контроллера SIO.
/bin/wdtsv
- Утилита как пример использования библиотеки
сторожевого таймера супервизора.
/etc/system/config/graphics-traplist
- Файл конфигурации для задания
драйвера видео контроллера.
/sbin/devc-tl16c754
- Драйвер UART контроллера TL16C754 и совместимых с
8250 типом контроллеров UART.
/src/rs485/rs485io.h
- Файл заголовков библиотеки RS-485 интерфейса.
/src/rs485/rs485io.c
- Исходный код библиотеки RS-485 интерфейса.
/src/rs485/rs485test.c
- Исходный код тестовой программы обмена по RS-485
интерфейсу.
/src/wdt/watchdog.h
- Файл заголовков библиотеки двух сторожевых таймеров.
/src/wdt/libstpcvega.a
- Файл библиотеки функций двух сторожевых таймеров.
2
/src/wdt/wdtsio.c
- Исходный код утилиты как пример использования
библиотеки сторожевого таймера контроллера SIO.
/src/wdt/wdtsv.c
- Исходный код утилиты как пример использования
библиотеки сторожевого таймера супервизора.
3 Драйвер видео контроллера
Графический режим видео контроллера LynxEM+ поддерживается следующим драйвером:
/lib/dll/devg-smi7xx.so
Для запуска графической оболочки Photon с этим драйвером следует в конфигурационный файл
/etc/system/config/graphics-traplist добавить следующую строчку:
devgt-iographics –dldevg-smi7xx.so –I0 –d0x126f,0x0712
Оптимальным режимом для данного контроллера можно считать: 1024х768 16-bit.
Более подробную информацию можно получить из документации на ОСРВ QNX Momentics:
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/d/devg-smi7xx.so.html
4 Драйвер IDE контроллера
Два IDE контроллера, ко второму из которых подключается Compact Flash, поддерживаются
стандартным драйверов:
/sbin/devb-eide
Для запуска драйвера Compact Flash и автоматического подключения, предварительно
созданной партиции с номером 77 (qnx), к файловой системе, следует выполнить следующую
команду:
devb-eide blk automount=hd0t77:/fs/cf
Более подробную информацию можно получить из документации на ОСРВ QNX Momentics:
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/d/devb-eide.html
5 Драйвер Ethernet контроллера
Два Ethernet контроллера DP83815 от National Semiconductor поддерживаются следующим
драйвером:
/lib/dll/devn-ns83815.so
Для запуска менеджера io-net с сетевым драйвером и протоколом qnet, используя параметрами
по умолчанию, следует выполнить следующую команду:
#io-net -dns83815 -pqnet
Для запуска драйвера сетевого контроллера со скоростью 100Mbps на полный дуплекс следует
добавить следующие опции:
#io-net -dns83815 speed=100,duplex=1 -dns83815 speed=100,duplex=1 pqnet
3
Более подробную информацию можно получить из документации на ОСРВ QNX Momentics:
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/i/io-net.html
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/d/devn-ns83815.so.html
6 Драйвер USB контроллера
Два порта USB 1.1 поддерживаются следующим драйвером:
/lib/dll/devu-ohci
Для запуска менеджера io-usb с контролером USB следует выполнить следующую команду:
#io-usb -dohci
Для просмотра всех подключенных USB устройств следует запустить утилиту usb.
Для использования USB FLASH диска следует запустить драйвер devb-umass.
Более подробную информацию можно получить из документации на ОСРВ QNX Momentics:
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/i/io-usb.html
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/d/devu-ohci.so.html
7 Драйвер COM контроллеров
Шесть последовательных портов COM1 – COM6 поддерживаются драйвером, входящим в QNX
BSP для СРВ902:
/sbin/devc-tl16c754
Этот драйвер реализует поддержку UART контроллера TL16C754 и других совместимых с 8250
типом контроллеров UART.
Также, первые два последовательных порта COM1 – COM2 поддерживаются стандартным
драйвером:
/sbin/devc-ser8250
Если порты COM3 – COM6 сконфигурированы в BIOS по 100h адресу на 9 прерывание, то для
запуска драйвера для всех шести последовательных портов следует задать следующие опции:
#devc-tl16c754 3f8,4 2f8,3 100,9 108,9 110,9 118,9
Драйвер поддерживает все три режима работы портов COM3 – COM6: RS-232, RS-422 и RS-485.
Для работы с портами в режиме RS-485 рекомендуется воспользоваться специально разработанной
библиотекой ввода-вывода.
Переключение режимов работы портов COM3 – COM6 осуществляется в BIOS.
Более подробную информацию можно получить из документации на ОСРВ QNX Momentics:
http://www.qnx.com/developers/docs/6.3.0SP1/neutrino/utilities/d/devc-ser8250.html
4
8 Библиотека RS-485 интерфейса
Библиотека RS-485 интерфейса предназначена для работы с портами COM3 – COM6,
сконфигурированными в полудуплексный режим (режим RS-485). Библиотека, исходные тексты и
пример использования входят в QNX BSP для СРВ902:
/src/rs485/rs485io.tgz
Библиотека состоит из следующих четырех функций:
rs485_tx_on ()
rs485_tx_off ()
rs485_write_packet ()
rs485_read_packet ()
8.1 rs485_tx_on ()
Функция включения передатчика RS-485 интерфейса.
Синтаксис:
#include "rs485io.h"
int rs485_tx_on (int fd);
Аргументы:
fd
- Файловый дескриптор порта.
Описание:
Функция rs485_tx_on () производит включение передатчика RS-485 интерфейса
соответствующего файловому дескриптору fd.
Возвращает:
Результат функции devctl().
8.2 rs485_tx_off ()
Функция выключения передатчика RS-485 интерфейса.
Синтаксис:
#include "rs485io.h"
int rs485_tx_off (int fd);
Аргументы:
fd
- Файловый дескриптор порта.
Описание:
Функция rs485_tx_off () производит выключение передатчика RS-485 интерфейса
соответствующего файловому дескриптору fd.
Возвращает:
Результат функции devctl().
5
8.3 rs485_write_packet ()
Функция записи пакета данных в порт RS-485 интерфейса.
Синтаксис:
#include "rs485io.h"
int rs485_write_packet (int fd, char *packet, int lenth);
Аргументы:
fd
- Файловый дескриптор порта.
packet - Указатель на область данных, содержащую пакет дынных.
lenth
- Длина пакета в байтах.
Описание:
Функция rs485_write_packet () записывает пакет данных расположенный по указателю packet
длиной lenth в порт RS-485 интерфейса, соответствующего файловому дескриптору fd.
Возвращает:
В случае успешного завершения число переданных байт. В случае превышения времени
ожидания возвращает 0. В случае возникновении ошибки возвращает -1.
8.4 rs485_read_packet ()
Функция чтения пакета данных из порта RS-485 интерфейса.
Синтаксис:
#include "rs485io.h"
int rs485_read_packet (int fd, char *packet, int lenth);
Аргументы:
fd
- Файловый дескриптор порта.
packet - Указатель на пакет дынных.
lenth
- Длина пакета в байтах.
Описание:
Функция rs485_read_packet () читает пакет данных длиной lenth в буфер по указателю packet из
порта RS-485 интерфейса, соответствующего файловому дескриптору fd.
Возвращает:
В случае успешного завершения число прочитанных байт. В случае превышения времени
ожидания возвращает 0. В случае возникновении ошибки возвращает -1.
6
9 Библиотека сторожевого таймера контроллера SIO
Библиотека сторожевого таймера контроллера SIO предназначена для инициализации,
установки счетчика, включения, выключения и сброса встроенного в него сторожевого таймера.
Библиотека и пример использования входят в QNX BSP для СРВ902:
/src/wdsio/wdtsio.tgz
Библиотека состоит из следующих трех функций:
watchdog_sio_init ()
watchdog_sio_deinit ()
watchdog_sio_set ()
9.1 watchdog_sio_init ()
Функция инициализации сторожевого таймера контроллера SIO.
Синтаксис:
#include "watchdog.h"
int watchdog_sio_init (void);
Описание:
Функция открывает порты обмена со сторожевым таймером контроллера SIO и инициализирует
соответствующие регистры. Счетчик при этом не включается.
Возвращает:
В случае успешного завершения возвращает EOK, в случае ошибки -1.
9.2 watchdog_sio_deinit ()
Функция освобождения ресурсов сторожевого таймера контроллера SIO.
Синтаксис:
#include "watchdog.h"
int watchdog_sio_deinit (void);
Описание:
Функция выключает сторожевой таймер контроллера SIO и закрывает порты обмена с ним.
Возвращает:
В случае успешного завершения возвращает EOK, в случае ошибки -1.
9.3 watchdog_sio_set ()
Функция установки счетчика сторожевого таймера контроллера SIO.
Синтаксис:
#include "watchdog.h"
7
void watchdog_sio_set (uint8_t timeout);
Параметры:
timeout - Количество секунд от 1 до 255, устанавливаемое для обратного отсчета счетчика
сторожевого таймера.
Описание:
Функция устанавливает счетчик сторожевого таймера контроллера SIO в значение timeout. Для
сброса счетчика следует повторно вызвать эту функцию, задав новое значение для обратного отсчета.
Для останова счетчика следует установить timeout в 0.
10 Библиотека сторожевого таймера супервизора
Библиотека сторожевого таймера супервизора предназначена для инициализации, включения,
выключения и сброса встроенного в него сторожевого таймера. Библиотека и пример использования
входят в QNX BSP для СРВ902:
/src/wdtsv/wdtsv.tgz
Библиотека состоит из следующих пяти функций:
watchdog_sv_init ()
watchdog_sv_deinit ()
watchdog_sv_on ()
watchdog_sv_off ()
watchdog_sv_reset ()
10.1 watchdog_sv_init ()
Функция инициализации сторожевого таймера супервизора.
Синтаксис:
#include "watchdog.h"
int watchdog_sv_init (void);
Описание:
Функция открывает порты обмена со сторожевым таймером супервизора и запоминает значения
регистров до инициализации.
Возвращает:
В случае успешного завершения возвращает EOK, в случае ошибки -1.
10.2 watchdog_sv_deinit ()
Функция освобождения ресурсов сторожевого таймера супервизора.
Синтаксис:
#include "watchdog.h"
8
int watchdog_sv_deinit (void);
Описание:
Функция закрывает порты обмена со сторожевым таймером супервизора и восстанавливает
значения его регистров в состояние соответствующее до инициализации.
Возвращает:
В случае успешного завершения возвращает EOK, в случае ошибки -1.
10.3 watchdog_sv_on ()
Функция включения счетчика сторожевого таймера супервизора.
Синтаксис:
#include "watchdog.h"
void watchdog_sv_on (void);
Описание:
Функция включает счетчик сторожевого таймера супервизора. Если до истечения времени
отсчета счетчик сторожевого таймера не будет сброшен или выключен, то произойдет сброс СРВ902.
10.4 watchdog_sv_off ()
Функция выключения сторожевого таймера супервизора.
Синтаксис:
#include "watchdog.h"
void watchdog_sv_off (void);
Описание:
Функция выключает сторожевого таймера супервизора.
10.5 watchdog_sv_reset ()
Функция сброса счетчика сторожевого таймера супервизора.
Синтаксис:
#include "watchdog.h"
void watchdog_sv_reset (void);
Описание:
Функция сбрасывает счетчик сторожевого таймера супервизора.
9
Download