|
Embedded C++. |
|
|
|
 |
Ответов
|
May 23 2016, 07:38
|
Профессионал
    
Группа: Свой
Сообщений: 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++
|
|
|
|
|
May 23 2016, 08:17
|

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++. Ничего не даст абсолютно кроме тормозов.
|
|
|
|
|
May 23 2016, 09:09
|

Местный
  
Группа: Участник
Сообщений: 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) ? Да, С++ в ядре и драйверах был искуственно ограничен, в юзере более-менее нормален... Решение спорное, но тем не менее так было. Насчет симбиановского гуя: как правило, каждая компания, лицензировавшая ОС писала свой гуй с сопутствующими глюками и тормозами..
|
|
|
|
|
May 23 2016, 10:26
|
Профессионал
    
Группа: Участник
Сообщений: 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 так наверняка было сделано. а если проверят? а там ни класов ни строковых типов.
|
|
|
|
|
May 23 2016, 11:44
|
Местный
  
Группа: Участник
Сообщений: 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. Если встречу хорошо написанный класс строки, с удовольствием выкину свою поделку
|
|
|
|
|
May 23 2016, 12:21
|
Местный
  
Группа: Участник
Сообщений: 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. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги. Спрашивайте здесь, как написать класс под ту или иную задачу.
|
|
|
|
|
May 23 2016, 12:47
|
Профессионал
    
Группа: Участник
Сообщений: 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. Пробуйте проектировать простые классы. Напишите класс светодиода, пусть плохенький (для начала). Это уже объектно-ориентированный анализ и проектирование, есть отдельные книги. Спрашивайте здесь, как написать класс под ту или иную задачу. спасибо.
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|