AlexandrY 3 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба Классы на периферию приведут к усложнению менеджмента ресурсов. Классы обезличены и легко станет возможным попытаться сделать лишний порт или скопировать класс порта и размножить объекты работающие с одним и тем же портом. Профайлинг также станет труднее. В mbed все классы периферии вынуждены наследовать специального предка предотвращающего копирование периферии, настолько это распространенная ошибка. Периферия должна оставаться глобальной, А лучше ее вовсе не трогать. Наступают времена HAL-ов. Да и кольцевые буферы устарели. Современные UART-ы работают на 5 и больше мегабит. Делать прерывание на каждый символ - это очень не гибко и не рационально. Например в Renesas S7G2 есть модуль DOC, он сравнивает идентификаторы пакетов, потом дает событие в модуль DTC, тот читает длину пакета, и дает событие в модуль DMA, тот читает весь оставшийся пакет в память задачи и в модуль CRC. Все без участия процессора. Прерывание возникает только когда весь пакет в нужном месте. Обмен хоть на 10 мегабит возможен. Задействовано как минимум 4-е ( или 5-ть если с таймаутом) модулей периферии. Эт ювелирная работа. Никакой C++ здесь не поможет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 7 минут назад, AlexandrY сказал: Периферия должна оставаться глобальной, А лучше ее вовсе не трогать. Наступают времена HAL-ов. Да и кольцевые буферы устарели. Современные UART-ы работают на 5 и больше мегабит. Делать прерывание на каждый символ - это очень не гибко и не рационально. У ТС, я так полагаю, разовые команды. Потому вполне рационально. Если скорости большие, то рационально принимать поток по DMA, а потом разгребать его. И все равно даже в этом случае придется этот шлак разгребать каким-нибудь синхронизирующим протоколом-фреймером (байт-стаффинг, COBS). Но зато не влетать в прерывание побайтно - это уже существенный плюс. Другое дело, если бы в МК периферия DMA была достаточно умной для того, чтобы на лету анализировать данные и выдавать прерывание по встрече символа-ограничителя. Либо вовсе аппаратный байт-стаффинг - отправили шифрованную посылку, приняли и аппаратно декодировали в поток готовых байт - было бы очень здорово. Планирую как раз в одном ZYNQ-шном проекте так сделать, раз уж лапки UART на ПЛИС заведены. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 11 minutes ago, Arlleex said: Планирую как раз в одном ZYNQ-шном проекте так сделать, раз уж лапки UART на ПЛИС заведены. А вот это то, что называют велосипедом. Т.е. ни смысла, ни славы. Все нужные интерфейсы в микроконтроллерах уже есть, надо только правильно их применять. На ПЛИС-ах теперь только G5 делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 5 минут назад, AlexandrY сказал: А вот это то, что называют велосипедом. Т.е. ни смысла, ни славы. Все нужные интерфейсы в микроконтроллерах уже есть, надо только правильно их применять. На ПЛИС-ах теперь только G5 делать. Да при чем тут велосипеды? У меня 4 оптики, полтора десятка ARINC429 плюс нексолько десятков МКИО, полсотни дискретных сигналов, Ethernet, SPI, I2C, UART, и нужно было еще UART подцепить один отдельный, но лапки на SoC закончились. Ни смысла, ни славы, да? Поэтому и завели на ПЛИС, она мне сразу аппаратно байт-стаффинг делать будет, и для процессора это будет выглядеть как UART с аппаратным фрейм-разделителем. Ну разве не красота? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 3 hours ago, Arlleex said: У меня 4 оптики, полтора десятка ARINC429 плюс нексолько десятков МКИО, полсотни дискретных сигналов, Ethernet, SPI, I2C, UART, и нужно было еще UART подцепить один отдельный, но лапки на SoC закончились. Ни смысла, ни славы, да? Поэтому и завели на ПЛИС, она мне сразу аппаратно байт-стаффинг делать будет, и для процессора это будет выглядеть как UART с аппаратным фрейм-разделителем. Ну разве не красота? К чему эта вся лабуда? ARINC429 - примитивнейший протокол с физикой подобной UART-у. Че там у вас за оптика непонятно, тож скорее всего примитивная физика. Ethernet идет в любом самом мелком микроконтроллере, про остальную мелочевку молчу, постыдились бы упоминать. Все это сделать - работа уровня дипломника. Вот если б у вас был реализован 802.11ac да с драйверами хотя бы до уровня сокетов вот это было бы сильно. А так просто много велосипедов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 8 февраля, 2019 Опубликовано 8 февраля, 2019 · Жалоба 51 минуту назад, AlexandrY сказал: К чему эта вся лабуда? К тому же, к чему и ваша - для решения поставленных задач. 51 минуту назад, AlexandrY сказал: ARINC429 - примитивнейший протокол с физикой подобной UART-у. Че там у вас за оптика непонятно, тож скорее всего примитивная физика. Я, конечно, понимаю, что примитивный протокол. Но их количество и логика взаимодействия между собой свихнет голову даже посвященным. Оптика конечно примитивная - 1Gb/s нитки с ARINC818. Я, так смотрю, для вас это пару дней работы. 51 минуту назад, AlexandrY сказал: Ethernet идет в любом самом мелком микроконтроллере. Гигабитный, да? 51 минуту назад, AlexandrY сказал: Все это сделать - работа уровня дипломника. А где таких дипломников найти, не знаете? А то институты выпускают специалистов, а там, как оказывается, пни одни... P.S. Разговор-то, в общем, не об этом. А о том, что в силу определенных обстоятельств, аппаратная корректировка интерфейса в виде прослойки ПЛИС иногда очень даже кстати. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 12 hours ago, Arlleex said: К тому же, к чему и ваша - для решения поставленных задач. Я, конечно, понимаю, что примитивный протокол. Но их количество и логика взаимодействия между собой свихнет голову даже посвященным. Так вот я жду когда вы к логике перейдете. Что это за сложную логику вы на 1 Gbit потоке умудряетесь делать на процессоре? Железо - это ни о чем. Нахватали готовых корок и слепили. Или вообще получили с KIT-ом нахаляву. Где собственное интеллектуальное вложение? Демонстрируете типичную ошибку джуниоров хвастаться железом, хотя самое сложное - софт. Обсуждаем здесь, если вы заметили, программные архитектуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 43 минуты назад, AlexandrY сказал: Железо - это ни о чем. Нахватали готовых корок и слепили. Или вообще получили с KIT-ом нахаляву. Где собственное интеллектуальное вложение? Вы это щас серьезно? Походу это вы готовые корки везде где только можно распихиваете, других к этому делу только не привлекайте. Все корки у нас свои, все реализации протоколов, в том числе видео по ARINC818 - свои, FC-AE-ASM - свои, МКИО, и прочие более медленные интерфейсы естественно свои. Или вы думаете, что реализации военных авиационных протоколов валяются где только можно и их использует подавляющее большинство аудитории на нашем Форуме, чтобы можно было почерпнуть опыт или "готовые корки"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pengozoid 0 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 11 минут назад, Arlleex сказал: Или вы думаете, что реализации военных авиационных протоколов валяются где только можно и их использует подавляющее большинство аудитории на нашем Форуме Наши соисполнители для MIL-1553-B использовали готовую корку Gaisler. Но вот во всем остальном вы правы. И при том даже, что было всего 2 мила, 1 RS-232 и немного внутренней дискретной рассыпухи, это работа уж явно не для дипломника на 2 дня. Учитывая еще и специфику остальную. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
k155la3 27 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба . . . вторая страница, а непонятных слов и даже букфф становится все больше ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 19 minutes ago, k155la3 said: . . . вторая страница, а непонятных слов и даже букфф становится все больше ! Когда взрослые дядьки меряются пиписьками, то остальным смотреть на это вовсе необязательно Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
V_G 11 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба Применение ООП в задачах топикстартера - это любовь к искусству, троллинг или обучение? Лично я как прежде всего железячник не считаю, что мне это ужасно необходимо (хотя немного владею). Профессиональному программисту - возможно, нужно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 243 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 13 минут назад, V_G сказал: Лично я как прежде всего железячник не считаю, что мне это ужасно необходимо (хотя немного владею). Профессиональному программисту - возможно, нужно. Профессиональному программисту нужно в первую очередь решать прикладную задачу. А всякие страдания "ООП / не ООП", это уже - кододрочерство и не имеет отношения к профессионализму. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 2 часа назад, V_G сказал: Применение ООП в задачах топикстартера - это любовь к искусству, троллинг или обучение? Первое и третье. Отказываюсь от классов. Думаю, может, использовать namespace? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 9 февраля, 2019 Опубликовано 9 февраля, 2019 · Жалоба 13 minutes ago, ViKo said: Отказываюсь от классов. Думаю, может, использовать namespace? Классы - это лишь инструмент, namespace - тоже инструмент. Каждый хорош для своей задачи: отверстия удобнее сверлить дрелью, а гвозди забивать - молотком, но не наоборот ;) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться