Підписатися на отримання нових постів на пошту:

Сі — практичність використання. Embedded Systems. Крок №95

Всім привіт. У цьому записі ми з Вами поговоримо і зробимо огляд практичності застосування мови Сі «на сьогодні» в тій чи іншій сфері, на прикладах від DIY — пристроїв до IoT- проектів, описуваних в даному блозі. Заодно підведемо підсумок виконаної роботи.

Перед програмістом початківцем завжди стоїть питання вибору вивчення тієї чи іншої мови. Завжди хочеться знайти вагомі аргументи, перед тим як витратити свій час і зусилля. Для чого ж сьогодні вивчати Сі? Основні дві причини: перша це висока продуктивність (наприклад, в технологіях IoT, де важливий кожен байт і мілісекунда) і друга причина — це механізми для роботи з нижнім рівнем. Нижчеасемблер, який зараз може застосовуватися у вигляді вставок, коли потрібно оптимізувати код програми, зменшити час виконання операцій. Наприклад в програмах розроблюваних за допомогою WinAVR ( компілятор AVR-GCC) вищеописане дію доступно за допомогою оператора asm. В ході поетапного вивчення ми з Вами використовували asm ( «cli»), asm ( «sei») та ін.

Отже основні області застосування:

1. Програмування DIY- пристроїв на мікроконтролерах. Такими можуть бути від простих приладів вимірювання фізичних параметрів до різноманітних контролерів для моніторингу, управління і т.д. На мал. зліва, наприклад блок живлення, перероблений з комп'ютерного, в нього доданий мікроконтролер для вимірювання і індикації струму і напруги.

 

2. Наступний пункт вже носить більш масовий характер. Програмування спеціалізованих пристроїв і вбудованих систем (Embedded Systems) для енергетичного сектора, обороної промисловості та ін., де використовуються мікроконтролери. Сюди відносяться, наприклад, пристрої від реле напруги до тиристорних перетворювачів та ін.

Для реалізації відносно нескладних приладів в більшій масі використовують мікроконтролери PIC (менш функціональні і дешевші), AVR (більш функціональні і дорожчі) і STM з архітектурою RISK . Наприклад бар'єри, ультразвукові лічильники води «Ергомера» на Atmega (AVR) (на мал. зліва) та ін.

Для реалізації проектів, де ресурсів вищенаведених МК недостатньо, таких як вбудована система, що представляє собою спеціалізовану мікропроцесорну систему управління, контролю і моніторингу вбудованої безпосередньо в пристрій, яким вона керує — використовують контролери і процесори з архітектурою ядра ARM (вдосконалена RISC-машина ). Це можуть бути бренди Atmel, ST, Fujitsu, NXP, Toshiba, Samsung та багато ін. Нижче на малюнку приклад вбудованої системи технічного обліку «Сінет» (імпульсна) на процесорній платі 5025A-386 (Intel 80386), модеми ZyXEL, шафи комерційного обліку:

Intel 80386

Ще один яскравий приклад вбудованої системи  — управління тиристорним перетворювачем на процесорі NXP для управління приводом постійного струму. На малюнку нижче представлений безпосередньо сама шафа з тиристорними блоками, силовою електротехнікою, та електронною обв'язкою, а також безпосередньо сама плата управління на процесорі NXP . Вся логіка написана на мові Сі . Продукція ТОВ «НВП« Перетворювач-комплекс ».

thyristor converter

thyristor converter_in front

thyristor converter_behind industrial controller_CM3

freertos 3. По-третє — це операційні системи такі як Ядро Linux, FreeBSD, Windows пишуть на мові Сі . Також можна сюди віднести FreeRTOS , яка є багатозадачною операційною системою реального часу (ОСРВ) для вбудованих систем. Портована на 35 мікропроцесорних архітектур. Поширюється під ліцензією MIT (ліцензія відкритого програмного забезпечення) з 2017 року. У перелік підтримуваних платформ входить як ARM , так і Atmel AVR . У наступних постах ми портуємо її на мікроконтролер STM .

4.
Також практичним прикладом
буде те, що на Сі/C++ часто пишуться розширення для інших мов, наприклад в java є інтерфейс JNI (Java Native Interface) який передбачає роботу і в Android. Дані обгортки пишуться для проектів які використовують власні протоколи, формати, моделі і інші форми взаємодії даних та ін.

5. Заключний пункт  — для вивчення фундаментальних основ імперативного (послідовного) програмування, що розвиває в свою чергу алгоритмічне мислення. Звичайно знання цієї мови не повинно обмежуватися ним, а тільки бути плюсом до існуючих.

Добрим прикладом вищесказаного є поетапний опис вивчення основ написання коду, проектування пристроїв на мікроконтролерах і їх практичне застосування. Однією з таких рубрик в блозі є Web-технології, які передбачають концепцію IoT, де для використання даної технології використовується зв'язка пристроїв на різних мовах, наприклад: Сі, java, php, svg , які використовуються для МК, web-сервера, web-інтерфейсу, ОС Androoid . Надалі ми продовжимо доповнювати дану категорію, розробляючи додаток smarthouse для Android з одного боку як клієнт і програму для stm32, як сервер з іншого боку, а також почнемо робити огляд IIoT, використання якої на сьогодні має бути пріоритетним в кожному напрямку виробництва. Раз вже ми торкнулися цієї теми, то хочеться процитувати експерта Олександра Хайтіна про Industrial Internet of Things  (http://www.energoatlas.ru/2018/03/01/smart-energy-summit-iot/):

« ...Зараз бізнес став дуже динамічним, і це призводить до того, що істотним фактором для його управління, в тому числі суто операційного, залишається питання швидкості реакції. Ось що важливо: своєчасно і чітко зреагувати. Все тече, все змінюється, і тече це все більш швидко, ніж хотілося б традиційним індустріям, але діватися знову нікуди, і треба вчитися пристосовуватися до нових реалій. Я не бачу іншого виходу, крім скорочень витрат підвищення ефективності, скорочення часу реакції і підвищення гнучкості виробництва, бізнесу, чого завгодно. Все це нам дає IоT... Легко помітити, що тут досягається два результата, по-перше, можна добути необмежено багато даних і налаштувати його (пристрій) цим величезним набором даних, а по-друге, можна приймати більш обґрунтовані рішення.»

Підводячи підсумок, можна сказати, що Сі на сьогодні широко використовується як для мікроконтролерів так і в ООП. З вище перерахованих сфер застосування можна виділити дві, які охоплює даний блог це прикладне програмування для DIY-пристроїв і основи IoT, яка в своя чергу передбачає використання різних пристроїв, систем і мов. На цьому ми сьогодні і зупинимося. Всім до зустрічі.

Переглянуто раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting