Что не является каналом передачи данных

Передача данных

Из Википедии — свободной энциклопедии

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Передача данных (обмен данными, цифровая передача, цифровая связь) — физический перенос данных (цифрового битового потока) в виде сигналов от точки к точке или от точки к нескольким точкам средствами электросвязи по каналу передачи данных, как правило, для последующей обработки средствами вычислительной техники. Примерами подобных каналов могут служить медные провода, ВОЛС, беспроводные каналы передачи данных или запоминающее устройство.

Хотя аналоговая связь является передачей постоянно меняющегося цифрового сигнала, цифровая связь является непрерывной передачей сообщений. Сообщения представляют собой либо последовательность импульсов, означающую линейный код (в полосе пропускания), либо ограничивается набором непрерывно меняющейся формы волны, используя метод цифровой модуляции. Такой способ модуляции и соответствующая ему демодуляция осуществляются модемным оборудованием.

Передаваемые данные могут быть цифровыми сообщениями, идущими из источника данных, например, из компьютера или от клавиатуры. Это может быть и аналоговый сигнал — телефонный звонок или видеосигнал, оцифрованный в битовый поток, используя импульсно-кодирующую модуляцию (PCM) или более расширенные схемы кодирования источника (аналого-цифровое преобразование и сжатие данных). Кодирование источника и декодирование осуществляется кодеком или кодирующим оборудованием.

Источник

Канал передачи данных

Один из каналов связи в таком случае объединяет порты Tx источника и Rx получателя, а другой канал объединяет порты Rx источника и Tx получателя.

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

В частности, для обычного случая организации дуплексного канала передачи данных с использование оптических линий связи необходимо использование двух оптических волокон, каждое из которых представляет собой линию связи (часто из состава структурированной кабельной системы (СКС)).

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

Связанные понятия

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

Управляемые услуги (англ. managed services) — практика передачи постоянных видов деятельности менеджмента за пределы организации. Термин является близким по значению к слову «аутсорсинг».

Тра́нкинговые систе́мы (англ. trunking — объединение в пучок) — радиально-зоновые системы связи, осуществляющие автоматическое распределение каналов связи между абонентами. Под термином «транкинг» понимается метод доступа абонентов к общему выделенному пучку каналов, при котором свободный канал выделяется абоненту на время сеанса связи.

Не путайте с ECC памятью, хотя регистровые модули всегда используют ECC.Регистровая память (англ. Registered Memory, RDIMM, иногда buffered memory) — вид компьютерной оперативной памяти, модули которой содержат регистр между микросхемами памяти и системным контроллером памяти. Наличие регистров уменьшает электрическую нагрузку на контроллер и позволяет устанавливать больше модулей памяти в одном канале. Регистровая память является более дорогой из-за меньшего объема производства и наличия дополнительных.

Небольшая печатная плата, на которой размещены микросхемы запоминающего устройства, обычно ОЗУ.

Источник

Передача данных

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Передача данных (обмен данными, цифровая передача, цифровая связь) — физический перенос данных (цифрового битового потока) в виде сигналов от точки к точке или от точки к нескольким точкам средствами электросвязи по каналу связи, как правило, для последующей обработки средствами вычислительной техники. Примерами подобных каналов могут служить медные провода, оптическое волокно, беспроводные каналы связи или запоминающее устройство.

Передача данных может быть аналоговой или цифровой (то есть поток двоичных сигналов), а также модулирован посредством аналоговой модуляции, либо посредством цифрового кодирования.

Хотя аналоговая связь является передачей постоянно меняющегося цифрового сигнала, цифровая связь является непрерывной передачей сообщений. Сообщения представляют собой либо последовательность импульсов, означающую линейный код (в полосе пропускания), либо ограничивается набором непрерывно меняющейся формы волны, используя метод цифровой модуляции. Такой способ модуляции и соответствующая ему демодуляция осуществляются модемным оборудованием.

Передаваемые данные могут быть цифровыми сообщениями, идущими из источника данных, например, из компьютера или от клавиатуры. Это может быть и аналоговый сигнал — телефонный звонок или видеосигнал, оцифрованный в битовый поток, используя импульсно-кодирующую модуляцию (PCM) или более расширенные схемы кодирования источника (аналого-цифровое преобразование и сжатие данных). Кодирование источника и декодирование осуществляется кодеком или кодирующим оборудованием.

Содержание

Последовательная и параллельная передача

В телекоммуникации, последовательная передача — это последовательность передачи элементов сигнала, представляющих символ или другой объекта данных. Цифровая последовательная передача — это последовательная отправка битов по одному проводу, частоте или оптическому пути. Так как это требует меньшей обработки сигнала и меньше вероятность ошибки, чем при параллельной передаче, то скорость передачи данных по каждому отдельному пути может быть быстрее. Этот механизм может использоваться на более дальних расстояниях, потому что легко может быть передана контрольная цифра или бит чётности.

Параллельной передачей в телекоммуникациях называется одновременная передача элементов сигнала одного символа или другого объекта данных. В цифровой связи параллельной передачей называется одновременная передача соответствующих элементов сигнала по двум или большему числу путям. Используя множество электрических проводов можно передавать несколько бит одновременно, что позволяет достичь более высоких скоростей передачи, чем при последовательной передаче. Этот метод применяется внутри компьютера, например, во внутренних шинах данных, а иногда и во внешних устройствах, таких, как принтеры. Основной проблемой при этом является «перекос», потому что провода при параллельной передаче имеют немного разные свойства (не специально), поэтому некоторые биты могут прибыть раньше других, что может повредить сообщение. Бит чётности может способствовать сокращению ошибок. Тем не менее электрический провод при параллельной передаче данных менее надёжен на больших расстояниях, поскольку передача нарушается с гораздо более высокой вероятностью.

Источник

Передача данных

Передача данных — процесс переноса данных в виде сигналов от точки к точке или от точки к нескольким точкам средствами электросвязи по каналу. Словари упоминают заимствование (1640-е) учеными кругами латинского слова datum, означающего «вещь», «данность». Философия обосновывает связь понятий информации, знания, данных, свободы, приводит примеры. Высота горы преимущественно выступает данными. Параметр измеряют альтиметром, заполняют базы. Полученная информация, приняв конкретный облик, украшает книгу, изучаемую альпинистом. Бывалый горец придумывает лучший способ покорить вершину. Понимание особенностей процесса уже становится знанием.

Немедля появляется свобода выбора. Альпинист волен решать, принимая ответственность. Имеются группы, не вернувшиеся назад.

Виды данных

Исторически информацию представляли множеством способом. Оставим историкам иероглифы папирусов, разберем современные методики. Наибольший отпечаток наложило развитие электричества. Научись человек передаче мысли, символика вышла бы иной…

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Аналоговый сигнал

Первыми попытками измерить аналоговые величины назовем опыты Вольты, измерявшего напряжение, ток. Следом сопротивление проводника сумел оценить Ом, Георг Ом. Каждый раз использовались аналоговые величины. Представление характеристик объекта в виде тока, напряжения дало мощный толчок развития современному миру. Электронно-лучевой кинескоп яркостью пикселей трех цветов отображает достаточно наглядную картинку.

Причины ухода от аналогового сигнала выявила Вторая мировая война. Система Зеленый шершень умела отлично шифровать информацию. 6-уровневый сигнал сложно назвать цифровым, однако намечается явный уклон. Исторически первой попыткой передачи бинарного кода назовем опыты Шиллинга 1832 года с телеграфом. Стремясь снизить количество соединяющих абонентов проводов, дипломат припомнил предложенные священниками методики двоичного счисления. Однако внедрение цифровой передачи потребовало от человечества пройти путь свыше полутора столетий.

Двоичный цифровой код

Двоичное счисление общеизвестно. Аналоговую величину представляют дискретным числом, затем производят кодирование. Полученный набор нулей, единиц обычно разбивают словами длиной 8 бит. Так, например, первые операционные системы Windows были 16-битными, графический модуль процессора обрабатывал числа с плавающей запятой разрядностью повыше. Еще более длинные слова используют специализированные вычислители графических карт. Специфика системы определяет конкретный способ представления информации.

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Передача данных позволяет человечеству идти вперед быстрее. Люди обладают неодинаковыми способностями. Необязательно лучший сборщик, хранитель информации сможет извлечь выгоду (для себя, планеты, города…). Разумнее передать. Современный мир называют эпохой цифровой революции. Исторически оказалось, что двоичные данные передавать проще, появляется набор специфических возможностей:

Вторая половина XX века дала сотни методик оцифровки аналоговых объектов. Главным признаком двоичного сигнала является дискретность. Аналоговую величину доподлинно передать код бессилен. Однако шаг дискретизации стал столь малым, что погрешностью пренебрегают. Яркий пример – изображения формата Full HD. Большое разрешение экрана гораздо лучше передает мелкие нюансы объекта. На некотором этапе разрешение цифровой техники обгоняет физиологические возможности человеческого зрения.

Значения термина

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Этиология

Англичанами принято употреблять множественное число – data. Славянофилов просим избегнуть упреков. Современная наука развита Европой – наследницей Римской империи. Вопрос намеренного уничтожения отечественной истории обойдем, оставив прения историкам. Некоторые эксперты возводят этимологию к древнему индийскому слову dati (дар). Даль называет данными бесспорные, очевидные, известные факты произвольного толка.

Это интересно! Литературный английский язык (газета Нью-Йорк таймс) слово data лишает числа. Употребляют как придется: множественное, единственное. Учебники чаще проводят жесткое деление. Единственное число – datum. Отдельный вопрос касается артикля, здесь обсуждаться не будет. Эксперты склонны считать существительное «массовым».

Идея открытости

Идея свободного доступа к информации выдвинута отцом социологии, Робертом Кингом Мертоном, наблюдавшим Вторую мировую войну. Начиная 1946 годом, подразумевает передачу, хранение компьютерной информации. 1954 добавил возможность обработки. В декабре 2007 года желающие обсудить проблему собрались (Себастопол, Калифорния) и осмыслили программное обеспечение с открытым кодом, интернет, потенциал концепции массового доступа. Обама принял Меморандум о прозрачности и открытости действий правительства.

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Осознание человечеством реального потенциала цивилизации сопровождается призывами совместно решать проблемы. Концепция открытости данных широко обсуждается документом (1995) Американского научного агентства. Текст затрагивает геофизику и экологию. Общеизвестен пример корпорации ДюПонт, использовавший некоторые спорные технологии производства Тефлона.

Термины

Термин передача данных чаще касается цифровой информации, включая преобразованный аналоговый сигнал. Наука смотрит шире. Данными именуют любые качественные, количественные описания объекта. Эпичным примером считают сведения, составляемые антропологами касательно редких народностей планеты. Информация широко собирается организациями: продажи, преступность, безработица, грамотность.

Передача информации – цифровой поток бит.

Метаданные – более высокий уровень данных, описывающих другие данные.

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

Формат – способ представления информации.

Протокол – набор соглашений интерфейса, определяющий порядок обмена информацией.

Каналы (способы)

Информация, распространяясь, преодолевает среду:

Специфика среды накладывает особенности. Немногим известно, что электрический ток разносится также электромагнитной волной. Проводимость воздуха намного ниже, что накладывает специфику. Разница нивелируется ионизацией – явлением, знакомым сварщикам. Процессы, сопровождающие движение электромагнитной волны, лишены научного объяснения. Физики просто констатируют факт, описывая явление набором сведений.

Долгое время разные частоты считали явлениями несвязными: свет, тепло, электричество, магнетизм. Важно понять: набор сред рожден эволюцией техники. Наверняка откроют иные методы передачи данных. Реализации сред различны, набор стандартов определен спецификой. Локальные соединения часто пользуются технологией WiFi, опирающейся на протокол канального уровня IEEE 802.11. Сотовые операторы применяют совершенно иные – GPS, LTE. Причем мобильные сети активно начинают внедрять IP, замыкая круг, унифицируя стиль использования цифрового оборудования.

Зачем много протоколов? Особенности реализации передачи данных через WiFi бессильны покрыть значительные расстояния. Лимитированы мощности передатчиков, структуры пакетов иные. Bluetooth вовсе ограничивает основные возможности передачей пары файлов с компьютера на телефон.

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Форматирование

Физики быстро убедились: напрямую информация передается средой плохо. Медный провод может нести речь, однако эфир быстро убивает низкочастотные колебания. Попов первым догадался модулировать несущую полезной информацией – азбукой Морзе. Смысл включает изменение амплитуды радиоволны согласно закону сообщения так, чтобы принимающий абонент мог послание извлечь, воспроизвести.

Развивающееся вещание вызвало необходимость совершенствования методик оснащения несущей волны полезной информацией. В поздние 20-е годы Армстронг предложил слегка варьировать частоту, закладывая фундамент сообщения. Новый тип модуляции улучшил качество звука, успешно противостоя помехам. Меломаны немедля оценили новинку.

Военная система Зеленый шершень применяла дискретную методику частотной манипуляции – мгновенная смена частоты согласно закону передаваемого сообщения. Воющие стороны оценили преимущества связи. Внедрению мешали громадные размеры оборудования (1000 тонн). Изобретение транзисторов изменило ситуацию. Передача данных становилось цифровой.

Основу сетей заложил американский ARPANET. С ПК на ПК стали передавать пакеты. Тогда в сети начали применяться первые цифровые протоколы. Сегодня IP захватывает сегмент мобильной связи. Телефоны получают собственные адреса.

Слои протоколов

Передача цифровых данных модемом реализована в 1940 году. Сети появились 25 лет спустя.

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Усложняющиеся системы связи потребовали введения новых методик описания процесса взаимодействия компьютерных систем. Концептуальная модель OSI вводит понятие протокольных (абстрактных, реально не существующих) слоев. Структура создана усилиями инженеров Международной организации по стандартизации (ISO), регламентирована стандартом ISO/IEC 7498-1. Параллельную работу вел французский комитет CCITT. В 1983 году разработанные документы объединили, получив модель протокольных слоев.

Концепция 7-слойной структуры представлена работами Чарльза Бэчмана. Модель OSI включает опыт разработки АRPANET, EIN, NPLNet, CYCLADES. Линейка полученных слоев взаимодействует по вертикали с соседями: верхний использует возможности нижнего.

Важно! Каждому уровню OSI соответствует набор протоколов, определяемый используемой системой.

В компьютерных линиях совокупность протоколов подразделяют на слои. Бывают:

Физический слой

Зачем разработчикам сто стандартов? Многие документы появились эволюционно, согласно возрастающим требованиям. Физический слой реализуют набором коннекторов, проводов, интерфейсов. Например, экранированная витая пара способна передавать высокие частоты, делая возможным реализацию протоколов битрейтом 100 Мбис/с. Оптоволокно пропускает свет, производится дальнейшее расширение спектра, возникают гигабитные сети.

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

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Канальный слой

Каждый порт управляется собственными машинными командами. Канальный слой показывает, как реализовать передачу форматированной информации, используя имеющееся железо. Например, PPPoЕ содержит рекомендации организации протокола PPP средствами сетей Ethernet, используемый традиционно порт – 8P8C. Эволюционной борьбой «эфирная сеть» смогла подавить соперников. Изобретатель концепции, основатель компании 3СОМ, Роберт Меткалф, сумел убедить несколько крупных производителей (Интел, DEC, Ксерокс) объединить усилия.

Попутно совершенствовались каналы: коаксиальный кабель → витая пара → оптическое волокно. Изменения преследовали цели:

Оптический кабель повысил длину сегмента меж регенераторами сигнала. Канальный протокол больше описывает структуру сети, включая методы кодирования, битрейт, количество узлов, режим функционирования. Уровень вводит понятие кадра, реализует схемы расшифровки адреса MAC, детектирует ошибки, повторно отправляет запрос, контролирует частоту.

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

Сетевой

Общепринятый IP-протокол определяет структуру пакета, вводит специфический адрес из четырех групп цифр, известных сегодня каждому. Некоторые маски зарезервированы. Владельцам ресурсов присваиваются имена соответственно базам серверов DNS. Конфигурация сети во многом безразлична. Вводятся слабые ограничения. Как например, Ethernet требовал уникальности MAC-адреса. Протокол IP урезает максимальное число ПК 4,3 млрд штук. Человечеству пока что хватает.

Сетевой адрес принято делить на домены. По техническим причинам единое соответствие четырем группам цифр отсутствует. Сам интернет обозначает аббревиатура www (сокращенное название world wide web, иначе – всемирная паутина). Сегодня единообразный адрес (URL) опускает тривиальные буквы. Подразумевая – человек, открывший браузер, явно намеревается бороздить с компьютера всемирную паутину.

Транспортный

Слой далее расширяет структуру формата. Формирование сегмента TCP производит объединение пакетов, упрощая поиск потерявшейся информации, гарантируя восстановление.

Прикладной, представительский

Иерархия выше транспортного уровня может нарушаться. Например, RPC иногда опирается на HTTP. Концепция Р2P касается пиринговых одноранговых сетей. В противовес этому HTTP вводит иерархию клиент-сервер. Представительский слой раскрывает способы кодирования информации, оцифровку, сжатие, шифрование.

Источник

Вся правда об ОСРВ. Статья #25. Каналы передачи данных: введение и базовые службы

Что не является каналом передачи данных. Смотреть фото Что не является каналом передачи данных. Смотреть картинку Что не является каналом передачи данных. Картинка про Что не является каналом передачи данных. Фото Что не является каналом передачи данных

После небольшого перерыва мы продолжаем публиковать переводы статей «Вся правда об ОСРВ» Колина Уоллса. В этот раз поговорим о каналах передачи данных (далее – каналы), которые были уже были упомянуты в одной из предыдущих статей, а именно в #5. Каналы, по сравнению с почтовыми ящиками (#21 и #22) или очередями (#23 и #24), предоставляют более гибкий способ передачи простых сообщений между задачами.

Предыдущие статьи серии:

Использование каналов

В Nucleus SE каналы определяются на этапе сборки. В каждом приложении может быть до 16 каналов. Если в приложении не сконфигурирован ни один канал, ни структуры данных, ни код служебных вызовов, относящиеся к каналам, не будут включены в приложение.

Канал передачи данных – набор хранилищ, размер каждого из которых позволяет размещать один элемент данных заданной пользователем длины в байтах. Доступ к данным контролируется таким образом, чтобы ими могли безопасно пользоваться несколько задач. Задачи могут записывать данные в канал, пока не заполнятся все области. Задачи могут читать данные из канала, причем данные поступают по принципу FIFO. Попытка записи в переполненный канал или чтения из пустого канала может привести к ошибке или приостановке задачи, в зависимости от выбранных настроек вызовов API и конфигурации Nucleus SE.

Каналы и очереди

Nucleus SE также поддерживает очереди, которые были подробно рассмотрены в предыдущих статьях (#23 и #24). Основное различие между каналами и очередями заключается в размере сообщения. Очереди содержат сообщения, состоящие из одной переменной типа ADDR, обычно это указатели. Канал содержит сообщения произвольного размера, индивидуального для каждого канала в приложении и назначаемого во время настройки параметров.

Настройка каналов

Количество каналов

Как и для большинства объектов Nucleus SE, настройка каналов управляется директивами #define в nuse_config.h. Основным параметром является NUSE_PIPE_NUMBER, который определяет количество сконфигурированных в приложении каналов. По умолчанию это значение равно нулю (т.е. в приложении нет каналов) и может принимать значения вплоть до 16. Некорректное значение приведет к ошибке компиляции, которая будет сгенерирована проверкой в файле nuse_config_check.h (этот файл входит в nuse_config.c и компилируется вместе с ним), что приведет к срабатыванию директивы #error.

Выбор ненулевого значения служит главным активатором каналов. Этот параметр используется при определении структур данных и от его значения зависит их размер (об этом подробнее в следующей статье). Кроме того, ненулевое значение активирует настройки API.

Активация вызовов API

Каждая функция API (служебный вызов) в Nucleus SE имеет активирующую директиву #define в nuse_config.h. Для каналов такими символами являются:

NUSE_PIPE_SEND
NUSE_PIPE_RECEIVE
NUSE_PIPE_JAM
NUSE_PIPE_RESET
NUSE_PIPE_INFORMATION
NUSE_PIPE_COUNT

По умолчанию им присваивается значения FALSE, таким образом все служебные вызовы отключены, блокируя включение реализующего их кода. Для настройки каналов в приложении нужно выбрать необходимые служебные вызовы API и присвоить им значение TRUE.

Ниже приведен фрагмент кода из файла nuse_config.h по умолчанию.

Если функции API активированы, но в приложении нет каналов (кроме NUSE_Pipe_Count(), который разрешен всегда), произойдет ошибка компиляции. Если ваш код использует вызов API, который не был активирован, произойдет ошибка компоновки, так как код реализации не был включен в приложение.

Служебные вызовы каналов

Nucleus RTOS поддерживает десять служебных вызовов, связанных с каналами, которые предоставляют следующий функционал:

Служебные вызовы записи и чтения из каналов

Базовыми операциями, которые выполняются с каналами, являются запись (которую также называют отправкой) и чтение (также известна как прием сообщений). Кроме того, возможна запись данных в начало канала (jamming). Nucleus RTOS и Nucleus SE предоставляют три основных вызова API для этих операций, которые будут рассмотрены ниже.

Запись в канал

Служебный вызов Nucleus RTOS API для записи в канал очень гибкий, что позволяет приостанавливать задачи неявным образом либо с таймаутом, если операцию нельзя завершить немедленно (например, при попытке записи в переполненный канал). Nucleus SE имеет аналогичный вызов, но приостановка задач опциональна, а таймаут не реализован.

Nucleus RTOS также предоставляет службу для трансляции (broadcast) на канал, но в Nucleus SE она не поддерживается. Она будет описана в разделе «Нереализованные вызовы API» в следующей статье.

Вызов для отправки сообщений в канал в Nucleus RTOS

Прототип служебного вызова:

STATUS NU_Send_To_Pipe(NU_PIPE *pipe, VOID *message, UNSIGNED size, UNSIGNED suspend);

pipe – указатель на предоставленный пользователем блок управления каналом;
message – указатель на отправляемое сообщение;
size – количество байт в сообщении. Если канал поддерживает сообщения переменной длины, этот параметр должен быть равен или меньше длины сообщения, поддерживаемой каналом. Если канал поддерживает сообщения фиксированной длины, этот параметр должен быть равен размеру поддерживаемого каналом сообщения;
suspend – спецификация приостановки задачи, может принимать значения NU_NO_SUSPEND, NU_SUSPEND или значение таймаута.

NUSE_SUCCESS – вызов был успешно завершен;
NU_INVALID_PIPE – некорректный указатель на канал;
NU_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NU_INVALID_SIZE – размер сообщения не совместим с размером сообщения, поддерживаемым каналом;
NU_INVALID_SUSPEND – попытка приостановки из не связанного с задачей потока;
NU_PIPE_FULL – канал переполнен, и тип приостановки задачи не был указан;
NU_TIMEOUT – канал переполнен даже после приостановки задачи на указанный период времени;
NU_PIPE_DELETED – канал был удален, пока задача была приостановлена;
NU_PIPE_RESET – канал был сброшен, пока задача была приостановлена.

Вызов для отправки сообщений в канал в Nucleus SE

Этот служебный вызов API поддерживает основной функционал Nucleus RTOS API.

Прототип служебного вызова:

STATUS NUSE_Pipe_Send(NUSE_PIPE pipe, U8 *message, U8 suspend);

pipe – индекс (ID) используемого канала;
message – указатель на отправляемое сообщение (последовательность байтов допустимой для данного канала длины);
suspend – спецификация приостановки задач, может принимать значения NUSE_NO_SUSPEND и NUSE_SUSPEND.

NUSE_SUCCESS – вызов был успешно завершен;
NUSE_INVALID_PIPE – некорректный индекс канала;
NUSE_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NUSE_INVALID_SUSPEND – попытка приостановки из не связанного с задачей потока или при отключенной блокировке задач;
NUSE_PIPE_FULL – канал переполнен, и тип приостановки задач не был указан;
NUSE_PIPE_WAS_RESET – канал был сброшен, пока задача была приостановлена.

Реализация отправки сообщения в канал в Nucleus SE

Вариант кода функции API NUSE_Pipe_Send() (после проверки параметров) выбирается при помощи условной компиляции в зависимости от того, активирована ли поддержка вызовов API для блокировки (приостановки) задач или нет. Ниже мы рассмотрим оба варианта.

Если блокировка отключена, код этого вызова API довольно прост:

Функция проверяет, есть ли свободное пространство в канале, и использует индекс NUSE_Pipe_Head[] для помещения сообщения в область данных канала.

Если блокировка задач активирована, код становится более сложным:

Некоторые пояснения могут быть полезными.

Код заключен в цикл do…while, который выполняется, пока параметр приостановки задач имеет значение NUSE_SUSPEND.

Если канал заполнен и параметр suspend имеет значение NUSE_NO_SUSPEND, вызов API завершается со значением NUSE_PIPE_FULL. Если параметр suspend имеет значение NUSE_SUSPEND, задача приостанавливается. При завершении (то есть когда задача возобновляется), если возвращаемое значение равно NUSE_SUCCESS, то есть задача была возобновлена, потому что сообщение было прочитано (а не потому что канал был сброшен), код возвращается в начало цикла.

Если канал не заполнен, предоставляемое сообщение сохраняется, используя индекс NUSE_Pipe_Head[], в области данных канала. Выполняется проверка, есть ли в канале приостановленные задачи (ожидающие сообщений). Если такие задачи есть, первая из них возобновляется. Переменной suspend присваивается значение NUSE_NO_SUSPEND, а вызов API завершается со значением NUSE_SUCCESS.

Чтение из канала

Служебный вызов Nucleus RTOS API для чтения из канала очень гибкий, что позволяет приостанавливать задачи неявным образом или с таймаутом, если операцию нельзя завершить немедленно (например, при попытке чтения пустого канала). Nucleus SE имеет аналогичный служебный вызов, но приостановка задач опциональна, а таймаут не реализован.

Вызов для чтения из канала в Nucleus RTOS

Прототип служебного вызова:

STATUS NU_Receive_From_Pipe(NU_PIPE *pipe, VOID *message, UNSIGNED size, UNSIGNED *actual_size, UNSIGNED suspend);

pipe – указатель на предоставленный пользователем блок управления каналом;
message – указатель на хранилище для принимаемого сообщения;
size – количество байт в сообщении. Должно совпадать с размером сообщения, указанным при создании канала;
suspend – спецификация приостановки задач, может принимать значения NU_NO_SUSPEND, NU_SUSPEND или значение таймаута.

NU_SUCCESS – вызов был успешно завершен;
NU_INVALID_PIPE – некорректный указатель на канал;
NU_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NU_INVALID_SUSPEND – попытка приостановить задачу из не связанного с задачей потока;
NU_PIPE_EMPTY – канал пуст, и тип приостановки задач не был указан;
NU_TIMEOUT – канал пуст даже после приостановки задачи на указанное значение таймаута;
NU_PIPE_DELETED – канал был удален, пока задача была приостановлена;
NU_PIPE_RESET – канал был удален, пока задача была приостановлена.

Вызов для чтения из канала в Nucleus SE

Этот служебный вызов API поддерживает основной функционал Nucleus RTOS API.

Прототип служебного вызова:

STATUS NUSE_Pipe_Receive(NUSE_PIPE pipe, U8 *message, U8 suspend);

pipe – индекс (ID) используемого канала;
message – указатель на хранилище для принимаемого сообщение (последовательность байтов, длина которой совпадает с размером сообщения канала);
suspend – спецификация приостановки задач, может принимать значения NUSE_NO_SUSPEND и NU_SUSPEND.

NUSE_SUCCESS – вызов был успешно завершен;
NUSE_INVALID_PIPE – некорректный индекс канала;
NUSE_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NUSE_INVALID_SUSPEND – попытка приостановки задачи из не связанного с задачей потока или при отключенной поддержке приостановки задач;
NUSE_PIPE_EMPTY – канал пуст, и тип приостановки задач не был указан;
NUSE_PIPE_WAS_RESET – канал был сброшен, пока задача была приостановлена.

Реализация чтения каналов в Nucleus SE

Вариант кода функции API NUSE_Pipe_Receive() (после проверки параметров) выбирается условной компиляцией в зависимости от того, активирована ли поддержка API вызовов блокировки (приостановки задач) или нет. Мы рассмотрим оба варианта ниже.

Если блокировка отключена, код этого вызова API довольно прост:

Функция проверяет наличие сообщения в канале и использует индекс NUSE_Pipe_Tail[], чтобы получить сообщение из области данных канала, и возвращает данные через указатель сообщения.

Если блокировка задач активирована, код становится более сложным:

Некоторые пояснения могут быть полезны.

Код заключен в цикл do…while, который выполняется, пока параметр приостановки задач имеет значение NUSE_SUSPEND.

Если канал пуст и параметр suspend имеет значение NUSE_NO_SUSPEND, вызов API завершается со значением NUSE_PIPE_EMPTY. Если параметр suspend имеет значение NUSE_SUSPEND, задача приостанавливается. При завершении (то есть когда задача возобновляется), если возвращаемое значение равно NUSE_SUCCESS, то есть задача была возобновлена, потому что сообщение было отправлено (а не потому что канал был сброшен), код возвращается в начало цикла.

Если канал содержит в себе сообщения, хранимое сообщение возвращается, используя индекс NUSE_Pipe_Tail[]. Выполняется проверка, есть ли приостановленные (ожидающие отправки) задачи на этом канале. Если такие задачи есть, первая из них возобновляется. Переменной suspend присваивается значение NUSE_NO_SUSPEND, и вызов API завершается с кодом NUSE_SUCCESS.

Запись в начало канала

Служебный вызов Nucleus RTOS API для записи в начало канала очень гибкий, что позволяет приостанавливать задачи неявным образом или с таймаутом, если операцию нельзя завершить немедленно (например, при попытке записи в полный канал). Nucleus SE имеет аналогичный служебный вызов, но приостановка задач опциональна, а таймаут не реализован.

Вызов для записи в начало канала в Nucleus RTOS

Прототип служебного вызова:

STATUS NU_Send_To_Front_Of_Pipe(NU_PIPE *pipe, VOID *message, UNSIGNED size, UNSIGINED suspend);

pipe – указатель на предоставленный пользователем блок управления каналом;
message – указатель на отправляемое сообщение;
size – количество байт в сообщении. Если канал поддерживает сообщения переменной длины, этот параметр должен быть равен или меньше размера сообщения, поддерживаемого каналом. Если канал поддерживает сообщения фиксированной длины, этот параметр должен совпадать с размером сообщения, поддерживаемым каналом;
suspend – спецификация приостановки задач, может принимать значения NU_NO_SUSPEND, NU_SUSPEND или значение таймаута.

NU_SUCCESS – вызов был успешно завершен;
NU_INVALID_PIPE – некорректный указатель на канал;
NU_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NU_INVALID_SIZE – размер сообщения несовместим с размером сообщения, поддерживаемым каналом;
NU_INVALID_SUSPEND – попытка приостановки из несвязанного с задачей потока;
NU_PIPE_FULL – канал полон, и тип приостановки задач не был указан;
NU_TIMEOUT – канал полон даже после приостановки задачи на указанный период времени;
NU_PIPE_DELETED – канал был удален, пока задача была приостановлена;
NU_PIPE_RESET – канал был сброшен, пока задача была приостановлена.

Вызов для записи в начало канала в Nucleus SE

Этот служебный вызов поддерживает основной функционал Nucleus RTOS API.

Прототип служебного вызова:

STATUS NUSE_Pipe_Jam(NUSE_PIPE pipe, ADDR *message, U8 suspend);

pipe – индекс (ID) используемого канала;
message – указатель на отправляемое сообщение, которое является последовательностью байтов, равную сконфигурированному размеру сообщения в канале;
suspend – спецификация приостановки задач, может принимать значения NUSE_NO_SUSPEND или NUSE_SUSPEND.

NUSE_SUCCESS – вызов был успешно завершен;
NUSE_INVALID_PIPE – некорректный индекс канала;
NUSE_INVALID_POINTER – нулевой указатель на сообщение (NULL);
NUSE_INVALID_SUSPEND – попытка приостановки задачи из не связанного с задачей потока или при отключенной блокировке задач;
NUSE_PIPE_FULL – канал полон, и тип приостановки задач не был указан;
NUSE_PIPE_WAS_RESET – канал был сброшен, пока задача была приостановлена.

Реализация записи в начало канала в Nucleus SE

Вариант кода функции NUSE_Pipe_Jam() очень похож на NUSE_Pipe_Send(), кроме того, что для хранения в нем данных используется индекс NUSE_Pipe_Tail[], следовательно:

В следующей статье будем рассматривать дополнительные служебные вызовы, связанные с каналами, а также соответствующие структуры данных.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *