|
Встроенные языки программированияBog'liq 1 сам раб встроенные системы111Встроенные языки программирования.
Встроенные языки программирования это мощное средство SCADA Первые версии SCADA - систем либо не имели подобных языков, либо эти языки реализовывали небогатый набор функций. В современных версиях SCADA - систем функциональные возможности языков становятся существенно богаче. [6]
Бывают такие моменты в программировании, когда основной код программы много весить и при компиляции в машинный код (язык процессора) занимает много времени. Для облегчения этой работы используют встроенные языки программирования, которые не компилируют основной код, а сразу его запускают. Позволяют модифицировать компьютерную программу, не меняя основной код. Встроенный язык программирования - это транслятор основного языка программирования.
Существуют разные встроенные языки программирования.
Первый это Lua ( «луна») — скриптовый язык программирования, разработанный в подразделении Tecgraf (ComputerGraphicsTechnologyGroup) Католического университета Рио-де-Жанейро (Бразилия). Интерпретатор языка является свободно распространяемым, с открытыми исходными текстами на языке Си.
По идеологии и реализации язык Lua ближе всего к JavaScript, в частности, он также реализует прототипную модель ООП, но отличается Паскале-подобным синтаксисом и более мощными и гибкими конструкциями. Характерной особенностью Lua является реализация большого числа программных сущностей минимумом синтаксических средств. Так, все составные пользовательские типы данных (массивы, структуры, множества, очереди, списки) реализуются через механизм таблиц, а механизмы объектно-ориентированного программирования, включая множественное наследование — с использованием метатаблиц, которые также отвечают за перегрузку операций и ряд других возможностей. Язык широко используется для создания тиражируемого программного обеспечения (например, на нём написан графический интерфейс пакета AdobeLightroom). Также получил известность как язык программирования уровней и расширений во многих играх (в том числе WorldofWarcraft и S.T.A.L.K.E.R.) из-за удобства встраивания, скорости исполнения кода и лёгкости обучения. [2].
Следующий - Python- высокоуровневый язык программирования общего назначения, ориентированный на повышение производительности разработчика и читаемости кода. Синтаксис ядра Python минималистичен. В то же время стандартная библиотека включает большой объём полезных функций.
Python поддерживает несколько парадигм программирования, в том числе структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное. Основные архитектурные черты — динамическая типизация, автоматическое управление памятью, полная интроспекция, механизм обработки исключений, поддержка многопоточных вычислений и удобные высокоуровневые структуры данных. Код в Python организовывается в функции и классы, которые могут объединяться в модули (они в свою очередь могут быть объединены в пакеты).
Эталонной реализацией Python является интерпретатор CPython, поддерживающий большинство активно используемых платформ. Он распространяется под свободной лицензией PythonSoftwareFoundationLicense, позволяющей использовать его без ограничений в любых приложениях, включая проприетарные. Есть реализации интерпретаторов для JVM (с возможностью компиляции), MSIL (с возможностью компиляции), LLVM и других. Проект PyPy предлагает реализацию Python с использованием JIT-компиляции, которая значительно увеличивает скорость выполнения Python-программ. [3]
Ещё один язык C♯ (произносится си шарп) — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров компании Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота как язык разработки приложений для платформы Microsoft .NET Framework. Впоследствии был стандартизирован как ECMA-334 и ISO/IEC 23270.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Переняв многое от своих предшественников — языков C++, Pascal, Модула, Smalltalk и, в особенности, Java — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем, например, C# в отличие от C++ не поддерживает множественное наследование классов (между тем допускается множественное наследование интерфейсов). [4]
Ещё существуют такие встроенные языки как ECMAScript [5], встроенный язык программирования 1С:Предприятие [1], UnrealScript [7],
BearScript - авторская разработка.
Изучив и проанализировав информацию в интернете, по данной теме, я узнал, что встроенные языки программирования это мощное средство SCADA - систем, предоставляющее разработчику гибкий инструмент для разработки сложных приложений.
Цифровые сигнальные и встроенные системные процессоры Организация памяти.
Цифровые сигнальные процессоры (ЦСП) – это особый вид микропроцессорной техники, предназначенный для работы в реальном времени. Области применения ЦСП:
- цифровая фильтрация сигналов,
- оптимальная обработка, вычисление корреляционных функций,
- спектральный анализ сигналов,
- кодирование и декодирование информации,
- распознавание и синтез речи, синтез и обработка музыки,
- обработка изображений,
- компьютерная графика, синтез изображений,
- измерительная техника.
Главной отличительной особенностью ЦСП является большой объем вычислений, выполняемый в реальном времени. Это определяет следующие отличительные особенности ЦСП:
- применение расширенной гарвардской архитектуры – раздельных памяти команд и данных с независимыми шинами, что позволяет за один такт внутренней частоты кристалла осуществлять выборку команд и их исполнение,
- короткие команды, реализуемые в конвейерных устройствах, обуславливают RISC архитектуру ЦСП,
- обязательное наличие параллельного аппаратного умножителя, выполняющего команды умножения за один такт внутренней частоты кристалла,
- наличие специальных команд обработки сигналов. Например, в семействе процессоров TMS320 фирмы Texas Instruments имеется команда dmov, которая добавляет новый отсчет сигнала к выборке, сдвигая остальные отсчеты на один квант времени, команда LTD загружает множимое в регистр умножителя, осуществляет сдвиг отсчетов сигнала и складывает результат предыдущего умножения с содержимым аккумулятора.
За свою историю развития с начала 80-х годов прошлого века сменилось несколько поколений ЦСП, но ряд ЦСП предыдущих поколений в современном исполнении продолжают выпускаться из-за удачной архитектуры. ЦСП первого поколения TMS32010 разработан фирмой Texas Instruments в 1982 году. Это 16-разрядный микропроцессор с производительностью 5 миллионов команд в секунду (MIPS) имел внутреннее ОЗУ 144-256 слов, ПЗУ 1,5 - 4К слов. АЛУ и аккумулятор 32 разрядные, аппаратный умножитель 16х16 – результат 32 разряда, имелись порты ввода – вывода.
ЦСП второго поколения появились в середине 80-х годов. Это TMS32020, КМОП микропроцессор TMS320C25 с производительностью 10 MIPS. Наиболее интересны ЦСП DSP56000 и DSP56001 производительностью 10 и 25 MIPS соответственно. Их разработала фирма Motorola. Это единственные 24-разрядные ЦСП. Модификации ЦСП такой архитектуры до сих пор выпускаются. Архитектура DSP56001 показана на рис. 7.1. Процессор имеет расширенную гарвардскую архитектуру. ОЗУ данных X и Y имеют отдельные шины адреса YA, XA и данных XD, YD. Кроме того, отдельная шина адреса PA применена для адресации ПЗУ загрузки и ОЗУ программ, имеющих и отдельную шину данных PD. Шина данных GD используется для загрузки программ из host-компьютера по синхронному последовательному интерфейсу. Кроме того, GD используется для обслуживания прерываний от программируемого контроллера прерываний. Блоки коммутации могут передавать данные и адреса между этими шинами, а блоки коммутации внешних шин позволяют выводить из кристалла любую из шин. Генератор управляющих сигналов формирует внешние сигналы управления. К тактовому генератору подключается внешний кварц и он тактирует всю схему.
Рис. 7.1. Архитектура DSP56001
В ПЗУ X и Y записаны отсчеты синуса и косинуса, что позволяет проводить квадратурный прием и обработку. В настоящее время такой ЦСП наиболее часто используется при обработке и синтезе звука.
ЦСП третьего поколения появились на рубеже 80 – 90 годов. Это TMS320C30 - TI, DSP96002 – Motorola, DSP32C AT&T Microelectronics. Особенности этих процессоров – они 32 разрядные, в одном АЛУ могут выполнять целочисленные вычисления и с плавающей точкой, имеют расширенную гарвардскую архитектуру, наличие таймеров и портов ввода – вывода. Модификация ЦСП TMS320C30 выпускается и до настоящего времени – это TMS320VC33-120 и -150. Производительность TMS320VC33-150 150 миллионов операций с плавающей точкой в секунду (MFLOPS).
Его основные параметры:
- ОЗУ 34K 32 разрядных слов с двумя параллельными шинами доступа,
- тактовый генератор с возможностью умножения внутренней частоты,
- 32 разрядное ядро плавающей точки,
- 4 строба выборки внешних устройств,
- контроллер прерываний,
- начальный загрузчик,
- 8 40-разрядных регистров повышенной точности,
- 2 генератора адреса с 8 индексными регистрами,
- один последовательный порт,
- два таймера,
сопроцессор прямого доступа к памяти (ПДП),
- 144 выводный корпус LQFP.
Память во встроенных системах.
Семейство ОЗУ содержит два важных типа запоминающих устройств: статическое ОЗУ (SRAM) и динамическое ОЗУ (DRAM). Главное различие между ними – это долговечность хранимых ими данных. SRAM сохраняет свое содержимое до тех пор, пока к микросхеме подается энергия. Если же энергия отключена, или временно отсутствует, содержимое чипа будет потеряно навсегда. DRAM, с другой стороны, имеет чрезвычайно короткий период продолжительности работы данных – обычно около четырех миллисекунд, даже если энергия подается непрерывно.
Словом, SRAM имеет все свойства памяти, с которыми ассоциируется слово RAM. В сравнении с ней, DRAM кажется, как будто бы, бесполезной. Сама по себе, она таковой и является. Однако можно использовать простой элемент конструкции, именуемый контроллером DRAM, для того, чтобы DRAM вела себя скорее как SRAM. Работа контроллера DRAM заключается в периодическом обновлении данных, хранящихся в DRAM. Обновляя данные до того, как они исчезнут, содержимое памяти может сохраняться так долго, как это необходимо. Таким образом, DRAM так же эффективна, как и SRAM.
Решая, какой тип ОЗУ использовать, разработчик системы должен учесть время доступа и стоимость. SRAM устройства предлагают чрезвычайно малое время доступа (примерно в четыре раза быстрее, чем DRAM) но гораздо дороже при производстве. Как правило, SRAM используется только там, где крайне важна скорость доступа. Более низкая цена за байт делает DRAM привлекательной в тех случаях, когда требуется много ОЗУ. Многие встроенные системы включают оба типа: маленький блок SRAM (несколько килобайт) для важных данных и гораздо больший блок DRAM (может быть, даже мегабайты) для всего остального.
ТИПЫ ПЗУ (ROM)
Типы памяти в семействе ПЗУ характерны методами, которые используются для записи на них новых данных (обычно называемых программными) и числом раз, которое они могут быть перезаписаны. Эта классификация отражает эволюцию ПЗУ от жестко запрограммированных до программируемых, а затем до стираемых и программируемых. Общая особенность всех этих устройств – это их способность сохранять данные и программы навсегда, даже во время перебоев в питании.
Самые первые ПЗУ были прошитыми устройствами, которые содержали заранее запрограммированный набор данных, или инструкций. Содержимое ПЗУ должно было быть определено до производства чипа, так что фактические данные могли быть использованы для компоновки транзисторов внутри микросхемы. Прошитая память все еще используется, хотя теперь она называется масочным ПЗУ (masked ROMs), чтобы отличать ее от других типов памяти. Главное преимущество масочных ПЗУ - в их низкой стоимости производства. К сожалению, цена низка только тогда, когда требуются большие количества одинаковых ПЗУ.
На одну ступеньку выше масочных ПЗУ находится PROM (программируемое ПЗУ), которое приобретается в незапрограммированном состоянии. Если посмотреть на содержимое незапрограммированных PROM, то видно, что данные составлены целиком из единиц. Процесс записи ваших данных на PROM предусматривает специальное оборудование, называемое программирующим устройством. Программирующее устройство записывает данные на устройство по одному элементу информации единовременно, подавая электрический заряд к входным контактам чипа. Будучи запрограммированным однажды таким образом, содержимое PROM больше никогда изменить не удастся. Если код, или данные, хранящиеся в PROM, необходимо изменить, находящееся в обращении устройство придется выбросить. В результате PROM известны как однократно программируемые устройства.
EPROM (стираемое и программируемое ПЗУ) программируется тем же способом, что и PROM. Однако устройства EPROM могут быть очищены и перезаписаны повторно. Чтобы очистить EPROM, вы просто подвергаете устройство сильному воздействию ультрафиолетового излучения. ( Окно в верхней части устройства позволяет свету попасть на полупроводник.) Поступая таким образом, вы, по существу, возвращаете чип в его первоначальное незапрограммированное состояние. Несмотря на большую стоимость по сравнению с PROM, способность к перепрограммированию, делает EPROM неотъемлемой частью разработки ПО и процесса тестирования.
ГИБРИДЫ (Hybrid)
По мере развития технологии, в последние годы граница между ОЗУ и ПЗУ стерлась. Теперь некоторые типы памяти сочетают особенности обоих типов. Эти устройства не принадлежат ни к одной из групп и могут быть сообща отнесены к гибридным устройствам памяти. В гибридную память можно записывать информацию и считывать ее оттуда при необходимости, как и в случае с ОЗУ, а сохранять ее содержимое без электроэнергии, точно также как в ПЗУ. Два типа гибридных устройств – EEPROM и Flash происходят от ПЗУ. Их обычно используют для хранения кода. Третий гибрид – NVRAM, является модифицированной версией SRAM. NVRAM, обычно, содержит постоянные данные.
EEPROM – это электрически стираемая и программируемая память. По сути дела, она подобна EPROM устройствам, но операция стирания происходит при помощи электричества, а не благодаря воздействию ультрафиолетовых лучей. Любой байт в EEPROM может быть стерт и перезаписан. Будучи однажды записанными, новые данные останутся в устройстве навсегда, или, по крайней мере, до тех пор, пока не будут удалены при помощи электричества. Главный компромисс при столь улучшенной функциональности – более высокая стоимость, хотя циклы записи также значительно дольше, чем запись в RAM. Поэтому вряд ли вы захотите использовать EEPROM для главной системной памяти.
Флэш-память (Flash memory) сочетает лучшие черты накопительных устройств, описанных выше. Флэш-память имеет высокую плотность, низкую цену, энергонезависимость, скорость (для чтения, но не для записи) и перепрограммирование при помощи электричества. Эти преимущества огромны и, как прямой результат - использование флэш-памяти во встроенных системах резко увеличилось. С точки зрения ПО, технологии флэш и EEPROM очень похожи. Главное различие в том, что флэш-устройства могут быть очищены сразу в пределах целого сектора, а не байт за байтом. Типичные размеры сектора находятся в промежутке от 256 байт до 16 килобайт. Несмотря на этот недостаток, флэш-память намного популярнее, чем EEPROM и быстро вытесняет также многие другие ROM устройства.
Третий член в семействе гибридной памяти – NVRAM (энергонезависимая RAM). Энергонезависимость также является характеристикой ROM- устройств и гибридных типов памяти, описанных выше. Однако NVRAM физически сильно отличается от этих устройств. NVRAM – это, как правило, SRAM с резервным аккумулятором. Когда питание включено, NVRAM действует как любая другая SRAM. При отключении питания NVRAM берет из батареи ровно столько энергии, сколько требуется для сохранения данных. NVRAM достаточно часто встречается во встроенных системах. Однако она дорого стоит, даже дороже, чем SRAM - из-за наличия батареи, так что ее приложения обычно ограничены способностью хранить несколько сотен байт важной системной информации, которую нельзя сохранить каким-либо другим путем.
Таблица 1 резюмирует особенности каждого типа памяти, описного выше, но имейте в виду, что различные типы памяти служат разным целям. Каждый тип памяти имеет свои сильные и слабые стороны. Сравнение «один к одному» не всегда эффективно.
Ввод/вывод информации во встроенных системах.
Устройства ввода-вывода можно условно разделить на две категории: блочные устройства и символьные устройства. К блочным относятся такие устройства, которые хранят информацию в блоках фиксированной длины, у каждого из которых есть собственный адрес. Обычно размеры блоков варьируются от 512 до 65 536 байт. Вся передача данных ведется пакетами из одного или нескольких целых (последовательных) блоков. Важным свойством блочного устройства является то, что оно способно читать или записывать каждый блок независимо от всех других блоков. Среди наиболее распространенных блочных устройств жесткие диски, приводы Blu-ray-дисков и флеш накопители USB.
Если приглядеться, то граница между устройствами с адресуемыми блоками и устройствами, не обладающими таким свойством, не имеет четкого определения. Каждый согласен, что диск является устройством с адресуемыми блоками, поскольку, где бы в данный момент ни находился блок головок, всегда есть возможность переместиться к другому цилиндру, а затем дождаться, пока нужный блок не подойдет под головку.
Теперь рассмотрим устаревающий накопитель на магнитной ленте, иногда все еще используемый для создания резервной копии диска (по причине дешивизны ленты). Ленты содержат последовательность блоков. Если накопитель получает команду считать блок N, он всегда может перемотать ленту назад и запустить рабочий ход вперед до тех пор, пока не доберется до блока N. Эта операция аналогична операции позиционирования головок на нужную дорожку на диске, за исключением того, что на нее затрачивается гораздо больше времени. Также накопитель может иметь, а может и не иметь возможность переписать один блок в середине ленты. Даже если имеется возможность использовать накопители на магнитной ленте в качестве блочных устройств произвольного доступа, считать их таковыми будет некоторым преувеличением: как правило, они в этом качестве не используются.
Другой тип устройств ввода-вывода — символьные устройства. Они выдают или воспринимают поток символов, не относящийся ни к какой блочной структуре. Они не являются адресуемыми и не имеют никакой операции позиционирования. В качестве символьных устройств могут рассматриваться принтеры, сетевые интерфейсы, мыши (в качестве устройства-указателя), крысы (для лабораторных исследований по психологии) и множество других устройств, не похожих на дисковые устройства.
Эта классификационная схема далека от совершенства. Некоторые устройства под нее не подпадают. Часы, к примеру, не являются блочно адресуемыми. Они также не генерируют и не воспринимают символьные строки. Все, чем они занимаются, — вызывают прерывания через четко определенные интервалы времени. Экраны, имеющие отображение в памяти, также не вписываются в эту модель. По этой же причине под нее не подпадают и сенсорные экраны. Тем не менее модель блочных и символьных устройств является достаточно общей для того, чтобы использовать ее в качестве основы для придания части программного обеспечения операционной системы независимости от устройства ввода-вывода. Файловая система, к примеру, работает только с абстрактными блочными устройствами, а зависимую от конкретного устройства часть оставляет на долю программного обеспечения низкого уровня.
Устройства ввода-вывода охватывают огромный диапазон скоростей, создающих немалые трудности для программного обеспечения, которому приходится обеспечивать хорошую производительность на скоростях передачи данных, различающихся на несколько порядков. В табл. 8 приведены скорости передачи данных некоторых наиболее распространенных устройств. Для многих из этих устройств наблюдается тенденция к росту скорости обмена данными при появлении со временем новых моделей.
Скорости передачи данных некоторых наиболее распространенных устройств
|
| |