Олег Антонян
description
Transcript of Олег Антонян
![Page 1: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/1.jpg)
Embedded System Development
Что это такое? Где это применяется?
Как мы за полвека перешли от электромагнетизма до высокоуровневого программирования
Антонян Олег AntLabs software development
![Page 2: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/2.jpg)
Agenda
О себе Главное слово - астракция Собственно embedded systems Демо! Вопросы
45 минут на всё
![Page 3: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/3.jpg)
О себе
2 года профессионально занимаюсь разработкой электронных устройств и ПО для них
Фриланс → маленькая компания С 6 лет радиолюбитель
![Page 4: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/4.jpg)
What is engineering?
Это целенаправленное применение науки Phase 1 — Придумать новую технологию, закон,
материал, etc (учёные-теоретики) Phase 2 — ??? (инженеры-практики) Phase 3 — Profit!
![Page 5: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/5.jpg)
Абстракция
Электромагнитизм, движение зарядов
Электротехника, электрические цепи
Цифровая схемотехника
АЛУ, концепция “вычисление”
“Машинные коды” АЛУ
Более 9000 абстракций...
![Page 6: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/6.jpg)
“Закон дырявых абстракций”
The Law of Leaky Abstractions by Joel Spolsky Как ненадёжные низшие уровни обеспечивают
надёжность высших и всегда ли это работает? http://joelonsoftware.com/Articles/LeakyAbstractions.html
![Page 7: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/7.jpg)
Wonder why we don't crash like computers? Yale explains
by Ben Coxworth
http://www.gizmag.com/yale-scientists-compare-bacteria-to-linux/15037/
![Page 8: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/8.jpg)
Что такое embedded system?
![Page 9: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/9.jpg)
Причём тут школьная физика?
Разработка embedded устройств требует знания электроники и низкоуровневого программирования
Вы видите как запись битов в регистры изменяет уровни напряжения на выводах процессора
“То что нельзя сделать с помощью кода приходится делать с помощью паяльника”
![Page 10: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/10.jpg)
Ужасная терминология
Слово “embedded” как нельзя хуже подходит для описания этой области
Согласно терминологии – веб-сервер в датацентре – embedded system?
Деление на низкоуровневое и высокоуровневое программирование как и деление на настольные ПК и устройства управления кофеваркой – условное
![Page 11: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/11.jpg)
Так в чём же отличия?
Различные подходы к разработке Различные инструменты Различные предметные области Real-time
![Page 12: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/12.jpg)
Real time means right now!
Часто в устройствах на микроконтроллерах используется подход “real time”
Гарантированный отклик на внешнее событие, гарантированное время работы потока в RTOS
![Page 13: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/13.jpg)
Инструменты разработки
На самом деле не такие они и разные Доминирует язык C и Ассемблер, за ним C++,
кое-где приходит .NET micro framework и C#, потихоньку наступает Java (недавно выпущена бета-версия для STM32)
В более крупных системах на embedded GNU/Linux или специальных RTOS в принципе нет ограничений на языки/фреймворки кроме аппаратных
![Page 14: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/14.jpg)
Гиганты и малявки
Под крупными системами подразумеваются устройства под управлением Linux или аналогичных по “весовой категории” RTOS
Linux != RTOS, несмотря на существование CONFIG_PREEMPT_RT
Пример популярной RTOS для микроконтроллеров - FreeRTOS
![Page 15: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/15.jpg)
FreeRTOS vs GNU/Linux
В ядре только простейший планировщик, IPC (очереди, мьютексы и тд.), “выделятор” динамической памяти
Без MMU нет виртуальной памяти Доступ к периферии напрямую из процессов
(хотя на процессорах с MPU возможно разделение на user и kernel space)
![Page 16: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/16.jpg)
Пример
int main(void) {
xTaskCreate(thread_func,”name", STACK_DEPTH, ¶ms, PRIORITY, &handle)
vTaskStartScheduler();
/* will only get here if there was no memory to create the idle task */return 1;
}
void thread_func(void *params) {
while(1) { /*do stuff */
/* and sleep for 10 mS */vTaskDelay(10 / portTICK_RATE_MS);
} }
![Page 17: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/17.jpg)
Есть ли жизнь без ОС?
Ага. Большинство устройств на микроконтроллерах не имеют ОС
Вся работа выполняется в одном бесконечном цикле и прерываниях
Не нужно беспокоиться о thread-safety Сложнее масштабировать, но для простых
устройств нет нужды использовать ОС
![Page 18: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/18.jpg)
Пример
int main(void) { while(1) { if(some_flag) { do_some_stuff(); } if(some_other_flag) { do_some_other_stuff(); } /* here we can shut down CPU and wait for interrupt */ } }
![Page 19: Олег Антонян](https://reader035.fdocument.pub/reader035/viewer/2022062307/557ec829d8b42a706f8b4911/html5/thumbnails/19.jpg)
Демо!