===== Системы реального времени: лекции ===== - {{ :rts:lecture_01.pdf | Введение в курс}} -- [[https://www.youtube.com/watch?v=ac-8Wny0U1U&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=5|видеоролик]]; - {{ :rts:lecture_02.pdf | Классификация систем реального времени}}; - {{ :rts:lecture_03.pdf | Системная инженерия}} -- [[https://www.youtube.com/watch?v=S9N_ctbMkbU&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=6|видеоролик]]; - {{ :rts:lecture_04.pdf | Некоторые методологии проектирования}}; - {{ :rts:lecture_05.pdf | Этапы разработки}}; - {{ :rts:lecture_06.pdf | Стандарт POSIX}} -- [[https://www.youtube.com/watch?v=plS0IQbO1pU&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=9|видеоролик]]; - {{ :rts:lecture_07.pdf | Языки программирования}}; - {{ :rts:lecture_08.pdf | Представление времени}} -- [[https://www.youtube.com/watch?v=6cqD_MPhx9c&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=10|видеоролик]]; - {{ :rts:lecture_09.pdf | Теория программирования: языковые структуры, модули}} [[https://youtu.be/BqnI6RImvh0|видеоролик]]; - {{ :rts:lecture_10.pdf | Теория программирования: надежность}} [[https://www.youtube.com/watch?v=-tctfTxNAdU|видеоролик]]; - {{ :rts:lecture_11.pdf | Системы цифрового управления}} [[https://youtu.be/0eNB-NI9VEM|видеоролик]]; - {{ :rts:lecture_12.pdf | Введение в LEGO Mindstorms}}; - {{ :rts:lecture_13.pdf | Теория программирования: надежность программного обеспечения (продолжение)}} [[https://youtu.be/lTIMrzxIg-4|видеоролик]]; - {{ :rts:lecture_14.pdf | Восстановление из состояния сбоя, противодействие сбоям}}; - {{ :rts:lecture_15.pdf | Исключения (Exceptions)}}; - {{ :rts:lecture_16.pdf | Исключения (продолжение)}}; - {{ :rts:lecture_17.pdf | Многозадачность}} [[https://youtu.be/5UKkXgB4vYM|видеоролик]]; - {{ :rts:lecture_18.pdf | Многозадачное программирование (продолжение)}}; - {{ :rts:lecture_19.pdf | Взаимодействие и синхронизация}}; - {{ :rts:lecture_20.pdf | Взаимодействие и синхронизация (продолжение)}}; - {{ :rts:lecture_21.pdf | Координация процессов при помощи POSIX}}; - {{ :rts:lecture_22.pdf | Распределение процессорного сремени (Scheduling)}}; - {{ :rts:lecture_23.pdf | Распреденение времени с фиксированным приоритетом}}; - {{ :rts:lecture_24.pdf | Обращение приоритетов}}. ===== Лабораторные работы ===== - Разработка программы на языке С без использования чисел с плавающей точкой и операций умножения и деления (вычисление квадратного корня из целого числа, алгоритм Бразенхэма) - Перевести программу из Лабораторной 1 на ассемблер при помощи ''gcc -S'' и опции оптимизации ''-Ox''. Необходимо полученную программу программу откомментировать (найти переменные в стек-фрейме, границы циклов), видеоролики: * [[https://www.youtube.com/watch?v=sFnLigtdSQc&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=15|порождение ассемблерного модуля и его анализ]] * [[https://www.youtube.com/watch?v=yTk38AfIFUg&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=16|эксперименты с флагами оптимизации компилятора gcc]] - Реализовать программу из Лабораторной 1 на языке Forth * [[https://www.youtube.com/watch?v=Np5pdDAswEI&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=8|обзор языка программирования Forth]] - Реализовать два процесса POSIX, C (родительский, порождающий дочерний), обеспечить их взаимодействие (''pipe, shmem, mmap, file, fifo, ...''), если необходимо, обеспечить синхронизацию доступа процессам к общему ресурсу при помощи семафоров * [[https://www.youtube.com/watch?v=x_a-7MxcdM4&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=17|системные вызовы Linux]] * [[https://www.youtube.com/watch?v=gDf0Jyo41L4&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=18|пример использования системного вызова (write)]] * [[https://www.youtube.com/watch?v=MpN1TMEZBXQ&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=19|создание дочернего процесса]] * [[https://www.youtube.com/watch?v=K89cHNC6_Xs&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=20|пример передачи информации между процессами (потоковое шифрование)]] * [[https://www.youtube.com/watch?v=A-xZuJoSkd0&list=PLDmve33tqgosZR652b14FqH5QW2zrkP-K&index=21|замена pipe на shmem]] * [[https://www.opennet.ru/base/dev/linux_semaphore.txt.html|синхронизация доступа]] к общей памяти (лекции пока нет). Другие виды [[http://dmilvdv.narod.ru/Translate/ELSDD/elsdd_posix_semaphores.html|семафоров POSIX]] ==== Книги в Интернете ==== - Lee & Seshia: [[http://leeseshia.org/|Introduction to Embedded Systems]] - A Cyber-Physical Systems Approach. {{http://leeseshia.org/releases/LeeSeshia_DigitalV2_2.pdf|Загрузить pdf с сайта}}, {{ :rts:leeseshia_digitalv2_2.pdf |локальная копия}}. - Монография [[https://ptolemy.eecs.berkeley.edu/books/Systems/|System Design, Modeling, and Simulation using Ptolemy II]]. Загрузка {{https://ptolemy.eecs.berkeley.edu/books/Systems/PtolemyII_DigitalV1_02.pdf| с сайта}},