Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Концепции построения встраиваемого ПО
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Вопросы системного уровня проектирования
gazpar
Здравствуйте.

Интересуют книги, статьи, методички, примеры(небольшие(Linux уж слишком объёмен)) и т.п., описывающие то, как нужно строить программы от малых и простых до больших и сложных для встраиваемых систем.

Под построением программы я подразумеваю следующее:
1) Архитектура программы
2) Организация проекта
3) Оформление кода
4) Оформление документации

Есть ли в природе такие базовые труды(желательно на русском или английском)?
Посоветуйте, пожалуйста, литературу по концепциям построения ПО.
tamam
Здравствуйте.

Если интересно, то посмотрите http://www.state-machine.com
У автора есть книга по событийной модели проектирования встроенного ПО.
Также полезно, как мне кажется, ознакомится с так называемым Test Driven Development подходом к разработке.
Есть книга Джеймса Греннинга Test-Driven Development for Embedded C.
gazpar
Цитата(tamam @ Nov 27 2015, 17:03) *
Здравствуйте.

Если интересно, то посмотрите http://www.state-machine.com
У автора есть книга по событийной модели проектирования встроенного ПО.
Также полезно, как мне кажется, ознакомится с так называемым Test Driven Development подходом к разработке.
Есть книга Джеймса Греннинга Test-Driven Development for Embedded C.



Благодарствую)
Думать уж начал, что всем нечего посоветовать)
syoma
Вопрос ТС - вас интересует построение программ от А до Я, т.е. взаимодействие с железом, алгоритмы управления, сетевые протоколы, интерфейсы пользователя? Или что-то конкретное?
gazpar
Цитата(syoma @ Nov 30 2015, 13:51) *
Вопрос ТС - вас интересует построение программ от А до Я, т.е. взаимодействие с железом, алгоритмы управления, сетевые протоколы, интерфейсы пользователя? Или что-то конкретное?


Видать неясно выразился)

Интересует то, как строить программы для встраиваемых систем. Какие существуют концепции(супер цикл, конечный автомат, ОС, ОСРВ). Полное описание этих концепций. Как правильно строить абстракции (HAL, API). Рекомендации: в каком случае применять ту или иную концепцию. И да, это включает в себя и взаимодействие с железом, и алгоритмы управления, и сетевые протоколы, и интерфейсы пользователя.

Вдобавок, организация проектов, оформление кода и документации к ПО.

В общем, базовая литература, применительно к встраиваемому ПО.
Grizzzly
Присоединяюсь к просьбе ТС.
syoma
А что такое "супер-цикл"?
Grizzzly
Цитата(syoma @ Dec 3 2015, 10:29) *
А что такое "супер-цикл"?

Super-Loop Architecture - бесконечный цикл.
Tarbal
Как я понял интересует теоретический аспект. Мог бы поделиться практическими методами реалтайма с использованием суперцикла если это не будет офтопиком.
gazpar
Цитата(Tarbal @ Dec 4 2015, 16:21) *
Как я понял интересует теоретический аспект. Мог бы поделиться практическими методами реалтайма с использованием суперцикла если это не будет офтопиком.


Конечно это не будет оффотопом. Тема для того и создавалась, чтобы собрать в кучу имеющиеся у народа материалы.
А практические методы(примеры)- это действительно ценный материал. Уверен он будет полезен, и не только лично мне)
syoma
Цитата
Мог бы поделиться практическими методами реалтайма с использованием суперцикла если это не будет офтопиком.

Вы же уже в "общении" поделились. wink.gif

Цитата
Интересует то, как строить программы для встраиваемых систем. Какие существуют концепции(супер цикл, конечный автомат, ОС, ОСРВ). Полное описание этих концепций. Как правильно строить абстракции (HAL, API). Рекомендации: в каком случае применять ту или иную концепцию. И да, это включает в себя и взаимодействие с железом, и алгоритмы управления, и сетевые протоколы, и интерфейсы пользователя.

Я не знаю, правильно ли я понял, но концепции это одно, архитектура - это ИМХО другое.
Например суперцикл, конечный автомат - это хорошие концепции для применения в алгоритмах управления. Интерфейсы пользователя обычно строятся на событийной модели. Сетевые протоколы - модель OSI.
Применять конечный автомат в интерфейсе пользователя я думаю не получится.
Поэтому я и спрашивал насчет конкретики.

С точки зрения методологии для создания ПО для управления чем либо физическим в реальном времени, или обработки сигналов, то тут в настоящий момент ИМХО рулит модельно-ориентированное проектирование.
То есть создание моделей объектов управления и контроллеров для них в результате моделирования.
В данной методологии вы можете применять как классическую теорию управления, так и автоматы состояния. И ли все вместе. Главное - решить задачу.
Потом генерите код для своего встраиваемого контроллера и на этом забываете об этой части ПО. Данная методология также включает в себя создание архитектуры контроллера исходя из требований к реакции на внешние события, менеджмент самих требований, организация тестирования, и создание документации для этой части встроенного ПО
gazpar
Цитата(syoma @ Dec 4 2015, 18:37) *
Я не знаю, правильно ли я понял, но концепции это одно, архитектура - это ИМХО другое.
Например суперцикл, конечный автомат - это хорошие концепции для применения в алгоритмах управления. Интерфейсы пользователя обычно строятся на событийной модели. Сетевые протоколы - модель OSI.
Применять конечный автомат в интерфейсе пользователя я думаю не получится.
Поэтому я и спрашивал насчет конкретики.

Согласен: концепция и архитектура- это разные вещи. Концепция стоит над архитектурой. Последняя разрабатывается исходя из первой.
Главное, чего хочу добиться, собрать информацию о имеющихся концепциях построения ПО для встраиваемых систем. Сперва обобщённую. Потом уже более детально разобранные частные случаи и рекомендации по применению.
Собрав материал в такой последовательности, и проанализировав его, можно будет себе чётко представить общую картину того, какие варианты решения задач по построению ПО встраиваемых систем имеются на данный момент и какие концепции("методологии") стоит применять при решении конкретных задач.
А далее оформление...

Цитата
С точки зрения методологии для создания ПО для управления чем либо физическим в реальном времени, или обработки сигналов, то тут в настоящий момент ИМХО рулит
То есть создание моделей объектов управления и контроллеров для них в результате моделирования.
В данной методологии вы можете применять как классическую теорию управления, так и автоматы состояния. И ли все вместе. Главное - решить задачу.
Потом генерите код для своего встраиваемого контроллера и на этом забываете об этой части ПО. Данная методология также включает в себя создание архитектуры контроллера исходя из требований к реакции на внешние события, менеджмент самих требований, организация тестирования, и создание документации для этой части встроенного ПО

Это конкретный частный случай. Посоветуйте, пожалуйста, литературу об этой "методологии".


syoma
Цитата
Это конкретный частный случай. Посоветуйте, пожалуйста, литературу об этой "методологии".

Русскоязычных материалов мало. http://matlab.ru/solutions/mbd/mbd
Все обучащие материалы на английском.
http://de.mathworks.com/solutions/model-based-design/
alexunder
Цитата(gazpar @ Dec 2 2015, 13:33) *
Как правильно строить абстракции (HAL, API).

тоже интересует, есть ли какие-то общие принципы построения HAL.
gazpar
Несколько итераций поисков дали следующие результаты:
1) "Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems", Bruce Powel Douglass
Серьёзная фундаментальная книга с описанием паттернов разработки систем реального времени. Недостаток- отсутствие примеров, чистая теория.
2) "Real-Time Concepts for Embedded Systems", Qing Li and Carolyn
Достаточно объёмная книга, основной уклон на ОСРВ.
3) "Embedded Software Development The Open-Source Approach", Ivan Cibrario Bertolotti, Tingting Hu
Описание процесса разработки для встраиваемых систем. Захватывает практически все вопросы разработки, кроме тестирования ПО для встраиваемых систем
4) "Programming Embedded Systems, Second Edition with C and GNU Development Tools", Michael Barr & Anthony Massa,
Полное описание разработки ПО. Затронуты MCU и embedded Linux
5) "Языки программирования Концепции и принципы", Кауфман В. Ш.
Фундаментальная книга по общей теории программирования, начиная с теории ЯП и заканчивая парадигмами софтостроения.

Книги очень хорошие, объёмные. Полезны будут, как в практике, так и уталении академического интереса.

PS: Про встраиваемые системы на русском языке солидной литературы не нашлось, покамест laughing.gif
bbb
Цитата(gazpar @ Nov 27 2015, 08:05) *
Здравствуйте.

Интересуют книги, статьи, методички, примеры(небольшие(Linux уж слишком объёмен)) и т.п., описывающие то, как нужно строить программы от малых и простых до больших и сложных для встраиваемых систем.

Студент? Курсовик?
Так для Вас есть спец. раздел.

Могу Вас научить. За дешево.Вы задаете вопросы - я отвечаю. Ответ на каждый вопрос 1000евро
Maverick
Цитата(bbb @ Mar 2 2016, 18:36) *
Могу Вас научить. За дешево.Вы задаете вопросы - я отвечаю. Ответ на каждый вопрос 1000евро

Поясните зачем писать заоблочную стоимость - поприкалываться?
или написать лишь бы что-то написать?

Пока устное предупреждение.



Цитата(gazpar @ Mar 2 2016, 15:57) *
Несколько итераций поисков дали следующие результаты:
1) "Real-Time Design Patterns: Robust Scalable Architecture for Real-Time Systems", Bruce Powel Douglass
Серьёзная фундаментальная книга с описанием паттернов разработки систем реального времени. Недостаток- отсутствие примеров, чистая теория.
2) "Real-Time Concepts for Embedded Systems", Qing Li and Carolyn
Достаточно объёмная книга, основной уклон на ОСРВ.
3) "Embedded Software Development The Open-Source Approach", Ivan Cibrario Bertolotti, Tingting Hu
Описание процесса разработки для встраиваемых систем. Захватывает практически все вопросы разработки, кроме тестирования ПО для встраиваемых систем
4) "Programming Embedded Systems, Second Edition with C and GNU Development Tools", Michael Barr & Anthony Massa,
Полное описание разработки ПО. Затронуты MCU и embedded Linux
5) "Языки программирования Концепции и принципы", Кауфман В. Ш.
Фундаментальная книга по общей теории программирования, начиная с теории ЯП и заканчивая парадигмами софтостроения.

Книги очень хорошие, объёмные. Полезны будут, как в практике, так и уталении академического интереса.

PS: Про встраиваемые системы на русском языке солидной литературы не нашлось, покамест laughing.gif

в электронном варианте есть?
можете поделиться, выложив на файлообменник
TSerg
Цитата(bbb @ Mar 2 2016, 19:36) *
Могу Вас научить. За дешево.Вы задаете вопросы - я отвечаю. Ответ на каждый вопрос 1000евро


Чему Вы можете научить в свои 56 лет, опыте "разработки" 34 года и зарплате 25 круб - все уже поняли.
AlexandrY
Мне понравилась вот эта книга - Jack Ganssle. The art of designing embedded systems. Second Edition
Нажмите для просмотра прикрепленного файла

Очень толково пишет что такое фирмваре, из чего состоит, сколько стоит и вообще много интересных фактов про стили программирования, баги и прочее.
gazpar
Цитата(Maverick @ Mar 2 2016, 21:33) *
в электронном варианте есть?
можете поделиться, выложив на файлообменник

Самый малый размер у Нажмите для просмотра прикрепленного файла
Все остальные книги более 5МБ.

Как на файлообменник залить книги весом более 5МБ?
Maverick
Цитата(gazpar @ Mar 3 2016, 01:22) *
Как на файлообменник залить книги весом более 5МБ?

например, такой файлообменник
Заархивируйте и одним файлом заливайте...
MrYuran
Цитата(gazpar @ Mar 3 2016, 02:22) *
Как на файлообменник залить книги весом более 5МБ?

ЙандексДиск чем не устраивает?
Туда гигабайты можно заливать
ViKo
Э-э... а чем не устраивает местное ftp-хранилище? Кидаете в upload, а специально обученный модератор ftp перенесет, куда попало.
Maverick
Цитата(ViKo @ Mar 3 2016, 10:21) *
Э-э... а чем не устраивает местное ftp-хранилище? Кидаете в upload, а специально обученный модератор ftp перенесет, куда попало.

может тем, что gazpar не является своим?
процедура перехода в свои может занять некоторое время...
AlexandrY
Цитата(Maverick @ Mar 3 2016, 12:30) *
может тем, что gazpar не является своим?
процедура перехода в свои может занять некоторое время...


На FTP лежит больше сотни книг по embedded программированию.
И те что назвал gazpar некоторые точно лежат.
gazpar
Если правильно понял, как использовать файлообменник, то вот ссылка.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.