Разделы презентаций


Цифровые вычислительные устройства и микропроцессоры приборных комплексов

Содержание

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

Слайды и текст этой презентации

Слайд 1Цифровые вычислительные устройства и микропроцессоры приборных комплексов
Разработка ПО микроконтроллерных систем


Некрасов Александр Витальевич, канд. техн. наук, доцент кафедры С-16
Соловьёв Сергей

Юрьевич, канд. техн. наук, доцент кафедры 303
Цифровые вычислительные устройства и микропроцессоры приборных комплексовРазработка ПО микроконтроллерных систем Некрасов Александр Витальевич, канд. техн. наук, доцент

Слайд 2Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
1.

Программное обеспечение встраиваемых микропроцессорных систем
Программное обеспечение встраиваемых микропроцессорных систем представляет

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

Слайд 3Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Системное

программное обеспечение (1)
К системному программному обеспечению встраиваемых микропроцессорных систем относятся

операционные системы (ОС), начальные загрузчики и другие программные средства.
Операционная система (operating system, OS) – это совокупность программ, обеспечивающих управление аппаратными ресурсами микропроцессорной системы, а также взаимодействие программных процессов с аппаратурой и другими процессами.
Во встраиваемых микропроцессорных системах, в том числе построенных на базе RISC-микроконтроллеров, используются встраиваемые операционные системы.
Встраиваемая операционная система выполняет следующие основные функции:
управление памятью (memory management);
управление процессами (tasks management);
интерфейс с периферийными устройствами;
поддержка различных коммуникационных протоколов.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Системное программное обеспечение (1)К системному программному обеспечению встраиваемых

Слайд 4Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Системное

программное обеспечение (2)
Первые две функции обычно выполняет ядро (kernel) операционной

системы. Интерфейс с периферийными устройствами и поддержку различных протоколов обеспечивают отдельные специализированные модули (аналоги драйверов), что повышает гибкость использования операционной системы.
Одной из основных функций ОС является управление процессами. Это обусловлено тем, что микропроцессор, встроенный в систему управления некоторым объектом, должен обслуживать большое количество источников и потребителей информации. При этом, как правило, возникает необходимость одновременного выполнения различных действий (процессов): обработки поступающей информации, формирования и выдачи управляющих воздействий, обмена данными и др.
Под процессом (process) понимают функционально и логически законченную последовательность команд микропроцессора. В литературе процесс иногда называют задачей (task). Так как процессорные ядра большинства современных микроконтроллеров представляют собой вычислители с одним потоком команд и одним потоком данных (SISD: Single Instruction – Single Data), в один момент времени обеспечивается выполнение только одной задачи.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Системное программное обеспечение (2)Первые две функции обычно выполняет

Слайд 5Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Системное

программное обеспечение (3)
Совмещение во времени выполнения нескольких программных потоков достигается

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


Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Системное программное обеспечение (3)Совмещение во времени выполнения нескольких

Слайд 6Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Системное

программное обеспечение (4)
Наиболее совершенными средствами реализации многозадачности обладают операционные системы

реального времени.
Операционная система реального времени (ОС РВ – real-time OS, RTOS) – ОС, обеспечивающая взаимодействие микропроцессорной системы с внешними процессами в темпе, соизмеримом со скоростью протекания этих процессов, т. е. с гарантированным временем реакции (отклика).
Типичная ОС реального времени:
выполняет задачи в соответствии с приоритетами,
осуществляет динамическое распределение памяти,
использует различные средства межзадачного взаимодействия (семафоры, сигналы, события, алармы, программные каналы, разделяемые модули данных, стеки сообщений и др.),
обеспечивает быстрые процедуры обслуживания прерываний,
гибкое взаимодействие между программными модулями и
параллельную работу процессов, обслуживающих разные внешние устройства.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Системное программное обеспечение (4)Наиболее совершенными средствами реализации многозадачности

Слайд 7Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Системное

программное обеспечение (5)
В силу специфических условий применения основным требованием, предъявляемым

к встраиваемым ОС, является компактность. Чаще всего ядро встраиваемой операционной системы имеет объём порядка нескольких килобайт, и ещё несколько килобайт занимают различные драйверы. В том случае, если по каким-либо причинам использование встраиваемой ОС в конкретной разработке невозможно (ограниченные ресурсы, отсутствие подходящей ОС и др.), функции ОС реализуются программистом при разработке прикладного ПО.
Начальный загрузчик (boot loader) – это специализированная программа, предназначенная для загрузки исполняемого кода программы (или операционной системы) в определённое место памяти программ при включении питания. Функции и характеристики начальных загрузчиков сильно различаются в зависимости от типа микропроцессора и структуры его памяти. Например, начальный загрузчик может выполнять функции программирования внутренней или внешней FLASH-памяти микроконтроллера с помощью интерфейсов RS232, SPI и др. или же (в том случае, если программа исполняется из ОЗУ) загружать код программы (операционной системы) из ПЗУ в оперативную память.

Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Системное программное обеспечение (5)В силу специфических условий применения

Слайд 8Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Прикладное

программное обеспечение (1)
В настоящее время при разработке прикладного ПО для

микроконтроллеров и других типов встраиваемых микропроцессоров всё шире применяются языки программирования высокого уровня (С, Паскаль, Бейсик и др.). Управляющие конструкции и структуры данных языков высокого уровня отражают понятия, естественные для некоторой предметной области (обработки информации, управления и т. п.), а не архитектуру микропроцессорной системы.
По сравнению с языками ассемблера языки высокого уровня обеспечивают следующие основные преимущества:
большую гибкость в описании алгоритмических конструкций и структур данных благодаря наличию различных операторов, типов данных и других развитых языковых средств;
наглядность и удобство использования за счёт поддержки методов структурного программирования и существования обширных библиотек функций;
переносимость программного обеспечения (программы, написанные на стандартизованных языках высокого уровня, могут быть перенесены на другие микропроцессоры без внесения изменений или с незначительными изменениями);
ускорение разработки и упрощение сопровождения разработанного ПО.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Прикладное программное обеспечение (1)В настоящее время при разработке

Слайд 9Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Прикладное

программное обеспечение (2)
Программа, написанная на языке высокого уровня, как правило,

имеет больший объём и медленнее выполняется, чем аналогичная программа на языке ассемблера. Тем не менее, современные компиляторы с языков высокого уровня имеют эффективные средства оптимизации и позволяют получать программы, сравнимые по эффективности с программами на языке ассемблера. В том случае, если характеристики разработанной программы не удовлетворяют заданным требованиям (по быстродействию или размеру кода), используется следующий приём: выявляются критические с точки зрения производительности участки программы и записываются на языке ассемблера. Например, на языке ассемблера зачастую составляются процедуры обработки прерываний, которые, как следует из принципов организации режима работы по прерываниям, должны выполняться максимально быстро.
Одним из наиболее популярных языков высокого уровня является язык С, характеризующийся следующими достоинствами:
небольшим количеством элементов языка;
высокой скоростью выполнения написанных на нём программ;
поддержкой модульного программирования;
возможностью работы на аппаратном уровне.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Прикладное программное обеспечение (2)Программа, написанная на языке высокого

Слайд 10Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Прикладное

программное обеспечение (3)
Благодаря сочетанию управляющих структур, характерных для языков высокого

уровня, с возможностью манипулирования битами, байтами и указателями (адресами) язык С занимает промежуточное положение между языками высокого уровня и языком ассемблера, в связи с чем язык C иногда называют языком среднего уровня.
Язык С является стандартизованным, что значительно упрощает сопровождение и расширение написанного на нём программного обеспечения.
Наибольшее распространение получила версия языка С, соответствующая стандарту, принятому в 1989 г. Американским национальным институтом стандартизации ANSI (American National Standards Institute).
В 1999 г. был утверждён новый ANSI/ISO-стандарт языка C (ISO – International Standards Organization – Международная организация по стандартизации). Этот стандарт включает ряд усовершенствований и несколько новых средств, часть из которых позаимствована из языка C++.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Прикладное программное обеспечение (3)Благодаря сочетанию управляющих структур, характерных

Слайд 11Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
2.

Программирование микроконтроллеров
Процесс разработки прикладного ПО устройств на основе однокристальных микроконтроллеров

включает следующие этапы:
разработки алгоритма и структуры программы;
написания исходного текста программы;
получения выполняемой программы;
тестирования и отладки программы;
получения загрузочной программы.
На этапе разработки алгоритма и структуры программы выбирается метод решения задачи и разрабатывается алгоритм его реализации. Алгоритм – это набор правил или описание последовательности операций для решения определённой задачи или достижения некоторой цели. Графическим изображением алгоритма является схема алгоритма (flowchart), выполняемая в соответствии с ГОСТ 19.701–90 «Единая система программной документации. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».
На этапе написания исходного текста программы разработанный алгоритм записывается в виде программы на исходном языке (ассемблере или языке высокого уровня).
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 102. Программирование микроконтроллеровПроцесс разработки прикладного ПО устройств на

Слайд 12Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Программирование

микроконтроллеров (1)
Языком ассемблера называется язык программирования, в котором каждой команде

процессора или совокупности команд процессора соответствует сокращённая символическая запись (мнемоника). Использование символического обозначения команд, а также адресов регистров и ячеек памяти, переменных, констант и других элементов программы существенно облегчает процесс составления программ по сравнению с программированием на уровне машинных кодов. Символические обозначения элементов обычно отражают их содержательный смысл. Язык ассемблера обеспечивает возможность гибкого доступа ко всем ресурсам программируемого микропроцессора (микроконтроллера) и позволяет создавать программы, наиболее эффективные как по быстродействию, так и по объёму занимаемой программной памяти. В этой связи программирование на языке ассемблера предполагает знание архитектуры и свойств микропроцессора, т. е. всего того, что входит в понятие «программная модель». Языки ассемблера являются машинно-ориентированными и, следовательно, отличаются для разных типов микропроцессоров. В ряде ассемблеров допускается оформление повторяющейся последовательности команд как одной макрокоманды (макроса), такие ассемблеры называют макроассемблерами.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Программирование микроконтроллеров (1)Языком ассемблера называется язык программирования, в

Слайд 13Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Программирование

микроконтроллеров (2)
Языки высокого уровня (С, Паскаль, Бейсик и др.), как

и ассемблер, обеспечивают доступ ко всем ресурсам микроконтроллера, но вместе с тем дают возможность создавать хорошо структурированные программы, снимают с программиста заботу о распределении памяти и содержат большой набор библиотечных функций для выполнения стандартных операций.
На этапе получения выполняемой программы исходный текст программы с помощью специальных средств (трансляторов, компиляторов, компоновщиков и др.) преобразуется в исполняемый код. Транслятором (translator) называют программу, служащую для перевода (трансляции) программ на языке ассемблера в машинный код, «понимаемый» процессором. Компилятор (compiler) представляет собой программу, преобразующую в эквивалентный машинный код текст программы на языке высокого уровня. Результатом работы транслятора или компилятора может быть как выполняемый загрузочный модуль, так и объектный модуль (программа, команды, переменные и константы которой не «привязаны» к конкретным адресам ячеек памяти). Для построения выполняемой программы из объектных модулей применяется компоновщик (редактор связей, linker).
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Программирование микроконтроллеров (2)Языки высокого уровня (С, Паскаль, Бейсик

Слайд 14Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Программирование

микроконтроллеров (3)
В процессе получения выполняемой программы из исходного текста программы

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

Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Программирование микроконтроллеров (3)В процессе получения выполняемой программы из

Слайд 15Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Программирование

микроконтроллеров (4)
На этапе получения загрузочной программы производится «освобождение» программы от

лишних фрагментов, использовавшихся для тестирования и отладки. Эти фрагменты увеличивают объём программы и не нужны при нормальном функционировании микропроцессорной системы. Далее полученная загрузочная программа заносится в память микроконтроллера.
По завершении процесса разработки производится документирование, т. е. составление комплекта документов, необходимых для эксплуатации и сопровождения программы. Сопровождение программы (program maintenance) – это процесс внесения изменений, исправления оставшихся ошибок и проведения консультаций по программе, находящейся в эксплуатации. Виды программных документов регламентированы ГОСТ 19.101–77 «Единая система программной документации. Виды программ и программных документов».
Разработка ПО для встраиваемых микропроцессоров производится на персональном компьютере с использованием специальных программных и аппаратных средств. Такой способ создания ПО носит название кросс-разработки. Совокупность аппаратных и программных средств, применяемых для разработки и отладки ПО, объединяют общим наименованием средства поддержки разработки.


Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Программирование микроконтроллеров (4)На этапе получения загрузочной программы производится

Слайд 16Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
3.

Надёжность программного обеспечения
Для сложных программных комплексов (особенно программных комплексов специализированных

микропроцессорных систем, например, бортовых вычислителей) весьма актуальной является задача обеспечения высокой надёжности. Под надёжностью программного обеспечения понимается вероятность его работы без отказов в течение определённого периода времени, рассчитанного с учётом стоимости каждого отказа. Отказ программного обеспечения – это проявление имеющейся в нём ошибки, заключающееся в том, что ПО не выполняет необходимых действий (операций).
В зависимости от причины, порождающей ошибку, источники ошибок ПО можно разделить на внутренние и внешние. Внутренние – это ошибки проектирования, ошибки алгоритмизации, ошибки программирования, недостаточное качество средств защиты, ошибки в документации и т. п. Внешние ошибки связаны со сбоями и отказами аппаратуры, искажением информации в каналах связи, изменением конфигурации системы, ошибками пользователя.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 103. Надёжность программного обеспеченияДля сложных программных комплексов (особенно

Слайд 17Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (2)
Число ошибок в ПО, допущенных на стадии разработки,

зависит от используемой технологии проектирования, организации работ и квалификации исполнителей и в принципе не является функцией времени. Однако интенсивность отказов аппаратуры из-за ошибок в ПО является функцией времени и может с течением времени как снижаться, так и повышаться. При этом отказы аппаратных средств являются функцией времени и обусловлены физическим старением, износом или разрушением отдельных элементов в процессе эксплуатации, хранения, транспортировки.
Выделяют следующие методы проектирования надёжного ПО:
методы предупреждения ошибок, позволяющие минимизировать или исключить появление ошибок;
методы обнаружения ошибок, направленные на выявление ошибок в программном обеспечении;
методы обеспечения устойчивости к ошибкам, позволяющие системе функционировать при наличии ошибок и устранять их последствия.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (2)Число ошибок в ПО, допущенных

Слайд 18Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (3)
Методы предупреждения ошибок включают в себя комплекс мер,

направленных на уменьшение количества ошибок, допускаемых в процессе проектирования программного обеспечения. Основными методами предупреждения ошибок является уменьшение сложности ПО, совершенствование способов обмена информацией, обнаружение и устранение ошибок на каждом этапе разработки ПО (до этапа тестирования).
Сложность является одной из главных причин низкой надежности программного обеспечения. В общем случае сложность объекта является функцией количества связей между его компонентами. Для уменьшения сложности ПО используются два основных приёма – иерархическое построение ПО и минимизация связей («сцепления») между модулями. Иерархическое построение ПО состоит в разделении программного комплекса по уровням понимания (абстракции), что позволяет анализировать систему, скрывая несущественные для данного уровня детали реализации других уровней. Минимизация связей между модулями заключается в усилении независимости отдельных программных модулей. Использование такого приёма должно предотвращать ситуацию, когда изменение одного модуля влечёт за собой необходимость внесения изменений в другие программные модули, связанные с ним.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (3)Методы предупреждения ошибок включают в

Слайд 19Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (4)
Методы обнаружения ошибок базируются на введении в программное

обеспечение различных видов избыточности – временнóй, информационной и программной.
Временнáя избыточность заключается в использовании части производительности процессора для контроля исполнения и восстановления работоспособности ПО после сбоя.
Информационная избыточность состоит в дублировании части данных информационной системы для обеспечения надёжности и контроля достоверности данных.
Программная избыточность подразумевает, что компоненты программного комплекса проектируются исходя из предположения, что другие компоненты и исходные данные содержат ошибки, и должны их обнаруживать. Программная избыточность обеспечивает нахождение и регистрацию ошибок, выполнение одинаковых функций разными модулями системы и сопоставление результатов обработки; контроль и восстановление данных с использованием других видов избыточности.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (4)Методы обнаружения ошибок базируются на

Слайд 20Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (5)
Методы обеспечения устойчивости к ошибкам направлены на минимизацию

ущерба, вызванного наличием ошибок, и реализуются путём обработки сбоев аппаратуры, повторного выполнения операций, динамического изменения конфигурации, выполнения специальных операций в случае отказа отдельных функций системы, копирования и восстановления данных и ряда других действий.
Основным способом обнаружения ошибок в программном обеспечении является тестирование. Из-за бесконечного числа возможных сочетаний исходных данных исчерпывающее тестирование всех ветвей алгоритма любой сложной программы во всех режимах практически неосуществимо. Поэтому считается, что сложные программные комплексы неизбежно содержит ошибки, которые выявляются в течение длительного периода при эксплуатации (иногда на протяжении всего периода эксплуатации).
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (5)Методы обеспечения устойчивости к ошибкам

Слайд 21Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (6)
Выделяют следующие этапы тестирования программных комплексов:
автономное тестирование –

контроль отдельного программного модуля отдельно от других модулей программного комплекса;
тестирование сопряжений – контроль связей между частями программного комплекса (модулями, компонентами, подсистемами);
тестирование функций – контроль выполнения программным комплексом необходимых функций;
комплексное тестирование – проверка соответствия программного комплекса заданным требованиям;
тестирование конфигураций – проверка каждого конкретного варианта поставки (установки) программного комплекса.
Ошибки в программах и данных могут проявиться на любой стадии тестирования, а также в период эксплуатации системы. Зарегистрированные и обработанные сведения должны использоваться для выявления отклонений от требований заказчика или технического задания.
Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (6)Выделяют следующие этапы тестирования программных

Слайд 22Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10
Надёжность

программного обеспечения (7)
Хотя при наличии неисправленной ошибки в ПО, приводящей

к отказу при определённом сочетании входных данных, этот отказ проявится в случае последующего выполнения программы при том же сочетании входных данных, тем не менее можно считать, что отказы ПО носят вероятностный характер, так как, во-первых, ошибки в ПО распределены случайным образом, а во-вторых, случайными являются и конкретные наборы входных данных. Поэтому интервал времени безотказной работы программного обеспечения также является случайной величиной.

Цифровые вычислительные устройства и микропроцессоры приборных комплексов - Лекция 10Надёжность программного обеспечения (7)Хотя при наличии неисправленной ошибки

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика