SlideShare una empresa de Scribd logo
1 de 19
Embedded System Development


    Что это такое?                 
                                       Как мы за полвека

    Где это применяется?               перешли от
                                       электромагнетизма
                                       до высокоуровневого
                                       программирования




Антонян Олег AntLabs software development
Agenda


    О себе

    Главное слово - астракция

    Собственно embedded systems

    Демо!

    Вопросы
45 минут на всё
О себе


    2 года профессионально занимаюсь
    разработкой электронных устройств и ПО для
    них

    Фриланс → маленькая компания

    С 6 лет радиолюбитель
What is engineering?
Это целенаправленное применение науки

    Phase 1 — Придумать новую технологию, закон,
    материал, etc (учёные-теоретики)

    Phase 2 — ??? (инженеры-практики)

    Phase 3 — Profit!
Абстракция

     Более 9000 абстракций...


      “Машинные коды” АЛУ


   АЛУ, концепция “вычисление”


      Цифровая схемотехника

Электротехника, электрические цепи

Электромагнитизм, движение зарядов
“Закон дырявых абстракций”

    The Law of Leaky Abstractions by Joel Spolsky

    Как ненадёжные низшие уровни обеспечивают
    надёжность высших и всегда ли это работает?

    http://joelonsoftware.com/Articles/LeakyAbstractions.html
Wonder why we don't crash like computers?
            Yale explains




by Ben Coxworth
http://www.gizmag.com/yale-scientists-compare-bacteria-to-linux/15037/
Что такое embedded system?
Причём тут школьная физика?


    Разработка embedded устройств требует
    знания электроники и низкоуровневого
    программирования

    Вы видите как запись битов в регистры
    изменяет уровни напряжения на выводах
    процессора

    “То что нельзя сделать с помощью кода
    приходится делать с помощью паяльника”
Ужасная терминология


    Слово “embedded” как нельзя хуже подходит
    для описания этой области

    Согласно терминологии – веб-сервер в
    датацентре – embedded system?

    Деление на низкоуровневое и высокоуровневое
    программирование как и деление на настольные
    ПК и устройства управления кофеваркой –
    условное
Так в чём же отличия?


    Различные подходы к разработке

    Различные инструменты

    Различные предметные области

    Real-time
Real time means right now!


    Часто в устройствах на микроконтроллерах
    используется подход “real time”

    Гарантированный отклик на внешнее событие,
    гарантированное время работы потока в RTOS
Инструменты разработки


    На самом деле не такие они и разные

    Доминирует язык C и Ассемблер, за ним C++,
    кое-где приходит .NET micro framework и C#,
    потихоньку наступает Java (недавно выпущена
    бета-версия для STM32)

    В более крупных системах на embedded
    GNU/Linux или специальных RTOS в
    принципе нет ограничений на
    языки/фреймворки кроме аппаратных
Гиганты и малявки


    Под крупными системами подразумеваются
    устройства под управлением Linux или
    аналогичных по “весовой категории” RTOS

    Linux != RTOS, несмотря на существование
    CONFIG_PREEMPT_RT

    Пример популярной RTOS для
    микроконтроллеров - FreeRTOS
FreeRTOS vs GNU/Linux

    В ядре только простейший планировщик, IPC
    (очереди, мьютексы и тд.), “выделятор”
    динамической памяти

    Без MMU нет виртуальной памяти

    Доступ к периферии напрямую из процессов
    (хотя на процессорах с MPU возможно
    разделение на user и kernel space)
Пример
int main(void)
{
     xTaskCreate(thread_func,”name", STACK_DEPTH, &params, 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);
     }
}
Есть ли жизнь без ОС?


    Ага. Большинство устройств на
    микроконтроллерах не имеют ОС

    Вся работа выполняется в одном бесконечном
    цикле и прерываниях

    Не нужно беспокоиться о thread-safety

    Сложнее масштабировать, но для простых
    устройств нет нужды использовать ОС
Пример
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 */
   }
}
Демо!

Más contenido relacionado

Similar a Олег Антонян

Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программистru_Parallels
 
26
2626
26JIuc
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекцияSergey Lomakin
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовDI GR
 
Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPIntersog
 
Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...CEE-SEC(R)
 
Многопроцессорным компьютерам - параллельные программы!
Многопроцессорным компьютерам -  параллельные программы!Многопроцессорным компьютерам -  параллельные программы!
Многопроцессорным компьютерам - параллельные программы!Tatyanazaxarova
 
Конструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераКонструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераAlexandr Konfidentsialno
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinescorehard_by
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesCOMAQA.BY
 
Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersÞorgeir Ingvarsson
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfuaAndy Shutka
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТСбертех | SberTech
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
ROS - Robotics Operation System
ROS - Robotics Operation SystemROS - Robotics Operation System
ROS - Robotics Operation Systemhudvin
 

Similar a Олег Антонян (20)

Theme 01
Theme 01Theme 01
Theme 01
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
26
2626
26
 
16 процессоры и память эвм лекция
16 процессоры и память эвм лекция16 процессоры и память эвм лекция
16 процессоры и память эвм лекция
 
Введение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодовВведение в профессию исследователя приложений без исходных кодов
Введение в профессию исследователя приложений без исходных кодов
 
Стек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMPСтек протоколов для IoT. Пример использования SNMP
Стек протоколов для IoT. Пример использования SNMP
 
Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...Российская операционная система реального времени для микроконтроллеров, с по...
Российская операционная система реального времени для микроконтроллеров, с по...
 
Многопроцессорным компьютерам - параллельные программы!
Многопроцессорным компьютерам -  параллельные программы!Многопроцессорным компьютерам -  параллельные программы!
Многопроцессорным компьютерам - параллельные программы!
 
Конструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютераКонструкция и компоновка персонального компьютера
Конструкция и компоновка персонального компьютера
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
закон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelinesзакон иерархических компенсаций седова и C++ core guidelines
закон иерархических компенсаций седова и C++ core guidelines
 
Mortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation EngineersMortal Sins and Guilty Pleasures of Automation Engineers
Mortal Sins and Guilty Pleasures of Automation Engineers
 
IoT Conf UA 2016
IoT Conf UA 2016IoT Conf UA 2016
IoT Conf UA 2016
 
IoT Protocols #iotconfua
IoT Protocols #iotconfuaIoT Protocols #iotconfua
IoT Protocols #iotconfua
 
Чистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТЧистая архитектура, Артур Бадретдинов АБЦТ
Чистая архитектура, Артур Бадретдинов АБЦТ
 
Lirc или домашний медиацентр
Lirc или домашний медиацентрLirc или домашний медиацентр
Lirc или домашний медиацентр
 
запахи кода
запахи кодазапахи кода
запахи кода
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
ROS - Robotics Operation System
ROS - Robotics Operation SystemROS - Robotics Operation System
ROS - Robotics Operation System
 

Олег Антонян

  • 1. Embedded System Development  Что это такое?  Как мы за полвека  Где это применяется? перешли от электромагнетизма до высокоуровневого программирования Антонян Олег AntLabs software development
  • 2. Agenda  О себе  Главное слово - астракция  Собственно embedded systems  Демо!  Вопросы 45 минут на всё
  • 3. О себе  2 года профессионально занимаюсь разработкой электронных устройств и ПО для них  Фриланс → маленькая компания  С 6 лет радиолюбитель
  • 4. What is engineering? Это целенаправленное применение науки  Phase 1 — Придумать новую технологию, закон, материал, etc (учёные-теоретики)  Phase 2 — ??? (инженеры-практики)  Phase 3 — Profit!
  • 5. Абстракция Более 9000 абстракций... “Машинные коды” АЛУ АЛУ, концепция “вычисление” Цифровая схемотехника Электротехника, электрические цепи Электромагнитизм, движение зарядов
  • 6. “Закон дырявых абстракций”  The Law of Leaky Abstractions by Joel Spolsky  Как ненадёжные низшие уровни обеспечивают надёжность высших и всегда ли это работает?  http://joelonsoftware.com/Articles/LeakyAbstractions.html
  • 7. Wonder why we don't crash like computers? Yale explains by Ben Coxworth http://www.gizmag.com/yale-scientists-compare-bacteria-to-linux/15037/
  • 9. Причём тут школьная физика?  Разработка embedded устройств требует знания электроники и низкоуровневого программирования  Вы видите как запись битов в регистры изменяет уровни напряжения на выводах процессора  “То что нельзя сделать с помощью кода приходится делать с помощью паяльника”
  • 10. Ужасная терминология  Слово “embedded” как нельзя хуже подходит для описания этой области  Согласно терминологии – веб-сервер в датацентре – embedded system?  Деление на низкоуровневое и высокоуровневое программирование как и деление на настольные ПК и устройства управления кофеваркой – условное
  • 11. Так в чём же отличия?  Различные подходы к разработке  Различные инструменты  Различные предметные области  Real-time
  • 12. Real time means right now!  Часто в устройствах на микроконтроллерах используется подход “real time”  Гарантированный отклик на внешнее событие, гарантированное время работы потока в RTOS
  • 13. Инструменты разработки  На самом деле не такие они и разные  Доминирует язык C и Ассемблер, за ним C++, кое-где приходит .NET micro framework и C#, потихоньку наступает Java (недавно выпущена бета-версия для STM32)  В более крупных системах на embedded GNU/Linux или специальных RTOS в принципе нет ограничений на языки/фреймворки кроме аппаратных
  • 14. Гиганты и малявки  Под крупными системами подразумеваются устройства под управлением Linux или аналогичных по “весовой категории” RTOS  Linux != RTOS, несмотря на существование CONFIG_PREEMPT_RT  Пример популярной RTOS для микроконтроллеров - FreeRTOS
  • 15. FreeRTOS vs GNU/Linux  В ядре только простейший планировщик, IPC (очереди, мьютексы и тд.), “выделятор” динамической памяти  Без MMU нет виртуальной памяти  Доступ к периферии напрямую из процессов (хотя на процессорах с MPU возможно разделение на user и kernel space)
  • 16. Пример int main(void) { xTaskCreate(thread_func,”name", STACK_DEPTH, &params, 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); } }
  • 17. Есть ли жизнь без ОС?  Ага. Большинство устройств на микроконтроллерах не имеют ОС  Вся работа выполняется в одном бесконечном цикле и прерываниях  Не нужно беспокоиться о thread-safety  Сложнее масштабировать, но для простых устройств нет нужды использовать ОС
  • 18. Пример 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 */ } }