реклама на сайте
подробности

 
 
> Embedded C++.
Jenya7
сообщение May 22 2016, 06:49
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я хочу выучить С++ под ембедед. Подскажите какие нибудь он лайн курсы или другой материал. Хотелось бы также посмотреть готовые проекты на С++ чтоб прочувствовать все аспекты.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Jenya7
сообщение May 23 2016, 06:44
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Погуглив я обнаружил что нет нормальных обучалок по С++ именно под микроконтролеры. Так чтоб объяснили с азов и именно под микроконтролеры. Скачал пару проектов сижу разбираюсь на примерах. Не факт что эти примеры являются образцом.
Go to the top of the page
 
+Quote Post
k155la3
сообщение May 23 2016, 07:38
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(Jenya7 @ May 23 2016, 09:44) *
Погуглив я обнаружил что нет нормальных обучалок по С++ именно под микроконтролеры. Так чтоб объяснили с азов и именно под микроконтролеры. Скачал пару проектов сижу разбираюсь на примерах. Не факт что эти примеры являются образцом.


Если Вы знаете как использовать базовый С (без привязки на контроллеры), и знаете-умеете использовать C++
т.е. анализ задачи, разбивку ее на объекты, их иерархию и все подобное, то курсы Вам (как-бы) не нужны.
Если этой базы у Вас нет, то курсы мало помогут. Разве что курсы по ООП.

Особенность контроллеров - мало ресурсов (оперативная память, память программ).
Соотв-но, основное отличие программирования с OOP под PC от embeded - ХОРОШО-ОПТИМАЛЬНО
продуманная-спроектированная структура данных и методов их обработки.





Цитата(Jenya7 @ May 22 2016, 09:49) *
Я хочу выучить С++ под ембедед. Подскажите какие нибудь он лайн курсы или другой материал. Хотелось бы также посмотреть готовые проекты на С++ чтоб прочувствовать все аспекты.


PS
Чтобы прочуствовать.
Возьмите простую задачу отрисовки простых граф. объектов, и действий с ними (движение, вращение, модификация формы)
И попробуйте реализоваь эту задачу на С и на C++

Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 23 2016, 08:17
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050




Цитата(k155la3 @ May 23 2016, 10:38) *
Соотв-но, основное отличие программирования с OOP под PC от embeded - ХОРОШО-ОПТИМАЛЬНО
продуманная-спроектированная структура данных и методов их обработки.


Это наивное заблуждение.
Люди обычно не сидят и не продумывают.
А кодят. А потом переписывают. Это рефакторинг, он самое главное. Только так и можно что-то написать.
Поэтому С++ здесь идёт стороной, и потому никто практичных примеров для embedded на C++ показать и не может.


Цитата(k155la3 @ May 23 2016, 10:38) *
Возьмите простую задачу отрисовки простых граф. объектов, и действий с ними (движение, вращение, модификация формы)
И попробуйте реализоваь эту задачу на С и на C++


Ну так и почувствуйте. Возьмите uC/GUI написанную на чистейшем C и переведите ее на C++.
Или операционку вроде FreeRTOS и покажите что там даст C++.
biggrin.gif

Ничего не даст абсолютно кроме тормозов.
Go to the top of the page
 
+Quote Post
CrimsonPig
сообщение May 23 2016, 09:09
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 329
Регистрация: 23-04-14
Пользователь №: 81 502



Цитата(AlexandrY @ May 23 2016, 09:17) *
Это наивное заблуждение.
Люди обычно не сидят и не продумывают.
А кодят. А потом переписывают. Это рефакторинг, он самое главное. Только так и можно что-то написать.
Поэтому С++ здесь идёт стороной, и потому никто практичных примеров для embedded на C++ показать и не может.
Ну так и почувствуйте. Возьмите uC/GUI написанную на чистейшем C и переведите ее на C++.
Или операционку вроде FreeRTOS и покажите что там даст C++.
Ничего не даст абсолютно кроме тормозов.


Я таки извиняюсь, Ваше Великолепие.... Можно я вставлю свои 2 пенса ? Это ничего, что самая распространенная на планете Земля операционка (на свое время) Symbian OS была полностью написана на С++, включая драйвера и realtime kernel (EKA2) ? Да, С++ в ядре и драйверах был искуственно ограничен, в юзере более-менее нормален...
Решение спорное, но тем не менее так было.
Насчет симбиановского гуя: как правило, каждая компания, лицензировавшая ОС писала свой гуй с сопутствующими глюками и тормозами..
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение May 23 2016, 10:08
Сообщение #6


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Есть хорошие бесплатные курсы по C++ на https://www.coursera.org/
Лично проходил. Понравилось, что обучают последним версиям языка и очень много дают шаблонного программирования и использования stl.
Курс назывался C++ для Си программистов.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 23 2016, 10:26
Сообщение #7


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(demiurg_spb @ May 23 2016, 16:08) *
Есть хорошие бесплатные курсы по C++ на https://www.coursera.org/
Лично проходил. Понравилось, что обучают последним версиям языка и очень много дают шаблонного программирования и использования stl.
Курс назывался C++ для Си программистов.

спасибо. посмотрю.

Цитата(AlexandrY @ May 23 2016, 16:20) *
Ну так переименуйте файлы .c в .cpp и делов-то.
Вон даже Mentor в своей операционке Nucleus Plus так делать не стесняется.
И в Symbian так наверняка было сделано.

а если проверят? а там ни класов ни строковых типов. sm.gif
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение May 23 2016, 11:06
Сообщение #8


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Jenya7 @ May 23 2016, 13:26) *
а если проверят? а там ни класов ни строковых типов. sm.gif


Строковые типы? В embedded? На Cortex-M4 с сотней килобайт RAM-а на борту? Это очень самоуверенно я вам скажу.

Хотя если речь про Raspberry PI, то все нормально.
Но это чудо теперь и на C# программируется.
Я прямо сейчас для него на C# пишу сервер IoT.

Go to the top of the page
 
+Quote Post
Slash
сообщение May 23 2016, 11:44
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Цитата(AlexandrY @ May 23 2016, 15:06) *
Строковые типы? В embedded? На Cortex-M4 с сотней килобайт RAM-а на борту? Это очень самоуверенно я вам скажу.

Если имеется ввиду std::string, то да, лучше не использовать. Но со строками как-то работать надо, поэтому колхозим свой велосипед:
Код
#pragma once

#include <cstring>
#include <string>
#include <algorithm>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

namespace mylib{
    
template <size_t S>
struct String
{
    String()
    {
        clear();
    }
    
    String(const char * str)
    {
        clear();
        copy(str);
    }
    
    size_t size() const
    {
        return S;
    }
    
    // количество символов в буфере, исключая терминирующий \0
    size_t occupied() const
    {
        return std::char_traits<char>::length(buf);
    }
    
    void clear()
    {
        std::fill(buf, buf + S, 0);
    }
    
    bool contains(const char * str) const
    {
        return std::strstr(buf, str) != NULL;
    }
    
    String<S> & operator=(const char * str)
    {
        copy(str);
        return *this;
    }
        
    char buf[S];
    
private:
    // копируем по указателю str символов не более (размер нашей строки - 1).
    // если копируемая строка меньше (размер нашей строки - 1), остаток добивается \0
    void copy(const char * str)
    {
        size_t size = std::min(S - 1, std::char_traits<char>::length(str));
        std::char_traits<char>::copy(buf, str, size);
    }    
};

}

Класс добивается своими методами по потребностям. Можно полностью содрать интерфейс с std::string.
Если встречу хорошо написанный класс строки, с удовольствием выкину свою поделку sm.gif
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 23 2016, 11:56
Сообщение #10


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Slash @ May 23 2016, 17:44) *
Если имеется ввиду std::string, то да, лучше не использовать. Но со строками как-то работать надо, поэтому колхозим свой велосипед:
Класс добивается своими методами по потребностям. Можно полностью содрать интерфейс с std::string.
Если встречу хорошо написанный класс строки, с удовольствием выкину свою поделку sm.gif

Вы как понимающий знаете что и где колхозить. а что делать начинающему?
Go to the top of the page
 
+Quote Post
Slash
сообщение May 23 2016, 12:21
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Цитата(Jenya7 @ May 23 2016, 15:56) *
Вы как понимающий знаете что и где колхозить. а что делать начинающему?

Учиться.
Нужны материалы?
Просто С++ - любые 3 хорошие книги (читать в фоне).
Со спецификой embedded - мне очень понравилась эта книга https://vk.com/wall-112797241_4

Быстрый старт.
1. Начните использовать ссылки.
2. Начните использовать С++ приведения типов reinterpret_cast, static_cast, const_cast. Запретите себе приведение типов в стиле C.
3. Используйте namespace.
4. Используйте перегрузку функций (если надо конечно).
3. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги.
Спрашивайте здесь, как написать класс под ту или иную задачу.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение May 23 2016, 12:47
Сообщение #12


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Цитата(Slash @ May 23 2016, 18:21) *
Учиться.
Нужны материалы?
Просто С++ - любые 3 хорошие книги (читать в фоне).
Со спецификой embedded - мне очень понравилась эта книга https://vk.com/wall-112797241_4

Быстрый старт.
1. Начните использовать ссылки.
2. Начните использовать С++ приведения типов reinterpret_cast, static_cast, const_cast. Запретите себе приведение типов в стиле C.
3. Используйте namespace.
4. Используйте перегрузку функций (если надо конечно).
3. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги.
Спрашивайте здесь, как написать класс под ту или иную задачу.

спасибо.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Jenya7   Embedded C++.   May 22 2016, 06:49
- - Onkel   Цитата(Jenya7 @ May 22 2016, 09:49) Я хоч...   May 22 2016, 09:11
|- - Jenya7   Цитата(Onkel @ May 22 2016, 15:11) easyel...   May 22 2016, 09:58
- - Slash   Цитата(Jenya7 @ May 22 2016, 10:49) Я хоч...   May 23 2016, 00:01
|- - AlexandrY   Цитата(Slash @ May 23 2016, 03:01) С++ в ...   May 23 2016, 04:26
|- - Сергей Борщ   QUOTE (Jenya7 @ May 23 2016, 09:44) нет н...   May 23 2016, 07:12
- - Jenya7   Я давно пишу на С. Я также пишу на С# так что знак...   May 23 2016, 08:29
|- - AlexandrY   Цитата(Jenya7 @ May 23 2016, 11:29) Я дав...   May 23 2016, 08:56
|- - Jenya7   Цитата(AlexandrY @ May 23 2016, 14:56) Ст...   May 23 2016, 09:01
|- - AlexandrY   Цитата(Jenya7 @ May 23 2016, 12:01) я с в...   May 23 2016, 10:20
||- - CrimsonPig   Цитата(AlexandrY @ May 23 2016, 11:20) Ну...   May 23 2016, 10:39
|- - jorikdima   Цитата(Jenya7 @ May 23 2016, 02:01) котор...   May 23 2016, 17:53
|- - Jenya7   Цитата(jorikdima @ May 23 2016, 23:53) Же...   May 24 2016, 06:13
|- - Эдди   Цитата(Jenya7 @ May 24 2016, 09:13) что т...   May 24 2016, 06:18
|- - AlexandrY   Цитата(Jenya7 @ May 24 2016, 09:13) что т...   May 24 2016, 08:19
|- - Jenya7   Цитата(AlexandrY @ May 24 2016, 14:19) В ...   May 24 2016, 09:23
|- - AlexandrY   Цитата(Jenya7 @ May 24 2016, 12:23) именн...   May 24 2016, 09:43
||- - Jenya7   Цитата(AlexandrY @ May 24 2016, 15:43) Ну...   May 24 2016, 09:53
||- - Сергей Борщ   QUOTE (AlexandrY @ May 24 2016, 12:43) FP...   May 24 2016, 11:28
|- - CrimsonPig   Цитата(Jenya7 @ May 24 2016, 10:23) именн...   May 24 2016, 11:24
|- - Jenya7   Цитата(CrimsonPig @ May 24 2016, 17:24) Э...   May 24 2016, 12:23
- - Эдди   А чего не жабку или пхытон? Не, даже жабоскрипт...   May 24 2016, 05:35
- - Сергей Борщ   Да-да, еще каких-то 20 лет назад продвинутые ассем...   May 24 2016, 07:25
- - arhiv6   Если не для себя, а для заказчика, то да, проще вс...   May 24 2016, 07:34
|- - Сергей Борщ   QUOTE (arhiv6 @ May 24 2016, 10:34) Если ...   May 24 2016, 07:48
- - ViKo   "С с классами" - так сначала назывался С...   May 24 2016, 07:39
- - brag   ЦитатаОх уж этот загадочный C++. Настоящие програм...   Sep 7 2016, 10:51
- - sigmaN   Нормально С++ в эмбеддед идет! Сам применяю и ...   Sep 7 2016, 17:17
- - brag   ЦитатаИ это только первый, самый очевидный аргумен...   Sep 7 2016, 17:50
- - sigmaN   Но согласитесь, по сложности переноса этого добра ...   Sep 7 2016, 18:51
- - Леонид Иванович   Очевидный плюс перейти на С++ состоит в том, что н...   Sep 7 2016, 18:54
- - brag   Цитата(Леонид Иванович @ Sep 7 2016, 21:5...   Sep 7 2016, 21:37


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 18:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016