Британская компания, две американские компании и 18 университетов (включая российские МИЭТ, ИТМО, СГАУ, ННТУ) сотрудничали, чтобы выпустить современный курс по микроконтроллерам c небольшой привязкой к интернету вещей. Об этом – сегодняшний пресс-релиз Imagination Technologies, Microchip Technology и Digilent (отделения National Instruments). Главный автор — профессор Александр Дин из университета Северной Каролины. В отличие от более легковестных курсов интернета вещей, новый курс подводит под предмет твердую инженерную базу – в нем подробно обсуждается использование RTOS-ов, архитектура микропроцессорного ядра микроконтроллера, протоколы периферии и даже оптимизация алгоритмов при программировании.
![07_Communications](https://habrastorage.org/r/w1560/getpro/habr/post_images/1cf/ce4/68a/1cfce468adf5c35fe8f6553d2361f4fb.png)
Скачать курс можно здесь:
https://community.imgtec.com/downloads/connected-microcontroller-lab-v1.2/
В пресс-релизе, помимо цитат из США, Великобритании, Германии, Китая, есть и цитата из России:
Пару десятков слайдов из курса, чтобы вы почувствовали его вкус:
Когда стоит использовать микроконтроллеры, а когда — специализированные микросхемы, ПЛИСы или встроенные PC:
![01_Introduction](https://habrastorage.org/r/w1560/getpro/habr/post_images/5c1/2d6/00b/5c12d600bd9e1465df3affa54772759c.png)
Три уровня в курсе — микропроцессорное ядро, микроконтроллер, плата:
![01_Introduction_2](https://habrastorage.org/r/w1560/getpro/habr/post_images/f83/c43/265/f83c43265176e76497c7ef2bcc608cd3.png)
Что есть что в ассемблерном коде, странслированном из Си:
![02_Software_Basics](https://habrastorage.org/r/w1560/getpro/habr/post_images/b27/df6/4c3/b27df64c3da3f7aee62a71faab554b46.png)
Как различные устройства внутри микроконтроллера могут использовать одни и те же выводы из корпуса:
![03_Basic_Peripherals_Port_IO](https://habrastorage.org/r/w1560/getpro/habr/post_images/284/ee0/d51/284ee0d512f345b3a3a66832e7ea2103.png)
Проблема с последовательными программами как предисловие к параллельному программированию:
![04_Basic_Concurrency_And_Interrupts](https://habrastorage.org/r/w1560/getpro/habr/post_images/22d/309/fff/22d309fffbdc7a999849e11377788d4d.png)
Объяснение концепции прерываний как решение проблем с последовательными программами:
![04_Basic_Concurrency_And_Interrupts_2](https://habrastorage.org/r/w1560/getpro/habr/post_images/1e5/b85/d64/1e5b85d64b0cf77c3703ae7c33f655a2.png)
Как работают аналоговые периферийные устройства:
![05_Analog_Interfacing](https://habrastorage.org/r/w1560/getpro/habr/post_images/7e1/3e6/5ff/7e13e65ff63e6268844d69ee90fa5a09.png)
Что такое, зачем нужна и как делать широтно-импульсную модуляцию (ШИМ):
![06_Timers_and_Counters](https://habrastorage.org/r/w1560/getpro/habr/post_images/beb/346/0ec/beb3460ec77610f25751a5213e6da54f.png)
Детали протоколов коммуникации с периферийными устройствами, концепция framing:
![07_Communications_2](https://habrastorage.org/r/w1560/getpro/habr/post_images/6d5/8cf/4c4/6d58cf4c4bc70fcfd3f10f80581e1a84.png)
Вид с «птичьего полета» на систему во время работы программы с несколькими периферийными устройствами:
![07_Communications_3](https://habrastorage.org/r/w1560/getpro/habr/post_images/b1f/376/262/b1f376262fbcb1371f324eecc045228e.png)
Что делает контроллер прямого доступа к памяти:
![08_Other_Peripherals](https://habrastorage.org/r/w1560/getpro/habr/post_images/9b5/abe/fde/9b5abefde7dafd2c7fedd73c0603cfbc.png)
Есть кое-что и для любителей Ардуино:
![09_Arduino_Shield_Interfacing](https://habrastorage.org/r/w1560/getpro/habr/post_images/a6f/19c/bb8/a6f19cbb86643f6b529684d9ee24816a.png)
Введение в операционные системы реального времени:
![10_Advanced_Concurrency](https://habrastorage.org/r/w1560/getpro/habr/post_images/548/39e/c90/54839ec90827446e27371962b63fc4d6.png)
А вот как двумерный массив вмещается в кэш:
![11B_CPU](https://habrastorage.org/r/w1560/getpro/habr/post_images/374/99b/470/37499b470920ef0291d460747729390f.png)
А теперь вглубь, в микроархитектуру микропроцессорного ядра в сердце микроконтроллера:
![11C_CPU](https://habrastorage.org/r/w1560/getpro/habr/post_images/bb1/881/042/bb18810421cc156f8bf36b2382368521.png)
Объяснение концепции процессорного конвейера, нужного для понимания микроархитектуры:
![11C_CPU_2](https://habrastorage.org/r/w1560/getpro/habr/post_images/7c0/e9c/a05/7c0e9ca0576c2910c6bcb9937ef95f8f.png)
Так как курс для студентов младших курсов, то есть и просто здравый смысл программирования:
![12A_Performance](https://habrastorage.org/r/w1560/getpro/habr/post_images/5bc/f63/da6/5bcf63da6bab091f519912bd97d12024.png)
А также несколько напоминаний про структуры данных, чтобы писать эффективные программы:
![12B_Performance](https://habrastorage.org/r/w1560/getpro/habr/post_images/b24/e64/76a/b24e6476adc1af7c3b7d88d99bde65eb.png)
И про интернет вещей конечно — подсоединение к облаку через WiFi:
![13_IoT_and_FlowCloud](https://habrastorage.org/r/w1560/getpro/habr/post_images/f3b/c77/36f/f3bc7736f6cb073064cf51a605f4a197.png)
Благодарности участникам из университетов за подробные ревью материалов:
![00_Acknowledgments](https://habrastorage.org/r/w1560/getpro/habr/post_images/6c4/37b/0ab/6c437b0abc5d7f8e25092c022e524888.png)
![07_Communications](https://habrastorage.org/getpro/habr/post_images/1cf/ce4/68a/1cfce468adf5c35fe8f6553d2361f4fb.png)
Скачать курс можно здесь:
https://community.imgtec.com/downloads/connected-microcontroller-lab-v1.2/
В пресс-релизе, помимо цитат из США, Великобритании, Германии, Китая, есть и цитата из России:
“MIET is part of Imagination’s MIPSfpga and Connected MCU Lab beta-testing programs. Our students have benefited from the MIPSfpga hands-on workshops and we are looking forward to implementing the Connected MCU Lab at our university because this course offers an up-to-date and well-structured curriculum for teaching embedded solutions to future engineers.”
– Alexey Pereverzev, Head of Computer Engineering, National Research University of Electronic Technology (MIET), Russia
Пару десятков слайдов из курса, чтобы вы почувствовали его вкус:
Когда стоит использовать микроконтроллеры, а когда — специализированные микросхемы, ПЛИСы или встроенные PC:
![01_Introduction](https://habrastorage.org/getpro/habr/post_images/5c1/2d6/00b/5c12d600bd9e1465df3affa54772759c.png)
Три уровня в курсе — микропроцессорное ядро, микроконтроллер, плата:
![01_Introduction_2](https://habrastorage.org/getpro/habr/post_images/f83/c43/265/f83c43265176e76497c7ef2bcc608cd3.png)
Что есть что в ассемблерном коде, странслированном из Си:
![02_Software_Basics](https://habrastorage.org/getpro/habr/post_images/b27/df6/4c3/b27df64c3da3f7aee62a71faab554b46.png)
Как различные устройства внутри микроконтроллера могут использовать одни и те же выводы из корпуса:
![03_Basic_Peripherals_Port_IO](https://habrastorage.org/getpro/habr/post_images/284/ee0/d51/284ee0d512f345b3a3a66832e7ea2103.png)
Проблема с последовательными программами как предисловие к параллельному программированию:
![04_Basic_Concurrency_And_Interrupts](https://habrastorage.org/getpro/habr/post_images/22d/309/fff/22d309fffbdc7a999849e11377788d4d.png)
Объяснение концепции прерываний как решение проблем с последовательными программами:
![04_Basic_Concurrency_And_Interrupts_2](https://habrastorage.org/getpro/habr/post_images/1e5/b85/d64/1e5b85d64b0cf77c3703ae7c33f655a2.png)
Как работают аналоговые периферийные устройства:
![05_Analog_Interfacing](https://habrastorage.org/getpro/habr/post_images/7e1/3e6/5ff/7e13e65ff63e6268844d69ee90fa5a09.png)
Что такое, зачем нужна и как делать широтно-импульсную модуляцию (ШИМ):
![06_Timers_and_Counters](https://habrastorage.org/getpro/habr/post_images/beb/346/0ec/beb3460ec77610f25751a5213e6da54f.png)
Детали протоколов коммуникации с периферийными устройствами, концепция framing:
![07_Communications_2](https://habrastorage.org/getpro/habr/post_images/6d5/8cf/4c4/6d58cf4c4bc70fcfd3f10f80581e1a84.png)
Вид с «птичьего полета» на систему во время работы программы с несколькими периферийными устройствами:
![07_Communications_3](https://habrastorage.org/getpro/habr/post_images/b1f/376/262/b1f376262fbcb1371f324eecc045228e.png)
Что делает контроллер прямого доступа к памяти:
![08_Other_Peripherals](https://habrastorage.org/getpro/habr/post_images/9b5/abe/fde/9b5abefde7dafd2c7fedd73c0603cfbc.png)
Есть кое-что и для любителей Ардуино:
![09_Arduino_Shield_Interfacing](https://habrastorage.org/getpro/habr/post_images/a6f/19c/bb8/a6f19cbb86643f6b529684d9ee24816a.png)
Введение в операционные системы реального времени:
![10_Advanced_Concurrency](https://habrastorage.org/getpro/habr/post_images/548/39e/c90/54839ec90827446e27371962b63fc4d6.png)
А вот как двумерный массив вмещается в кэш:
![11B_CPU](https://habrastorage.org/getpro/habr/post_images/374/99b/470/37499b470920ef0291d460747729390f.png)
А теперь вглубь, в микроархитектуру микропроцессорного ядра в сердце микроконтроллера:
![11C_CPU](https://habrastorage.org/getpro/habr/post_images/bb1/881/042/bb18810421cc156f8bf36b2382368521.png)
Объяснение концепции процессорного конвейера, нужного для понимания микроархитектуры:
![11C_CPU_2](https://habrastorage.org/getpro/habr/post_images/7c0/e9c/a05/7c0e9ca0576c2910c6bcb9937ef95f8f.png)
Так как курс для студентов младших курсов, то есть и просто здравый смысл программирования:
![12A_Performance](https://habrastorage.org/getpro/habr/post_images/5bc/f63/da6/5bcf63da6bab091f519912bd97d12024.png)
А также несколько напоминаний про структуры данных, чтобы писать эффективные программы:
![12B_Performance](https://habrastorage.org/getpro/habr/post_images/b24/e64/76a/b24e6476adc1af7c3b7d88d99bde65eb.png)
И про интернет вещей конечно — подсоединение к облаку через WiFi:
![13_IoT_and_FlowCloud](https://habrastorage.org/getpro/habr/post_images/f3b/c77/36f/f3bc7736f6cb073064cf51a605f4a197.png)
Благодарности участникам из университетов за подробные ревью материалов:
![00_Acknowledgments](https://habrastorage.org/getpro/habr/post_images/6c4/37b/0ab/6c437b0abc5d7f8e25092c022e524888.png)