Перейти к содержанию
    

Архитектура программ во встраиваемой электронике

43 minutes ago, Forger said:

в свою очередь для хранения настроек и журнала событий использую эту файловую систему

Изучу. Тут ведь ещё вопрос со сборкой под GCC.

От USB отказался, на борту есть LAN, поэтому смотрю в сторону FTP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

8 minutes ago, tonyk_av said:

на борту есть LAN, поэтому смотрю в сторону FTP.

в таком случае я бы воткнул wifi чип, любой, наверняка скорости там мизерные и файлы небольшие

но с точки зрения юзера вместо ftp куда удобнее по моему поднять простенький web-сервер для доступа к внутренним файлам и даже простой веб морде, если память камня позволяет

хотя мне кажется юзеру удобнее все это делать через usb флэшку или проводное подключение к компу - никакого гемороя с настройками соединения ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

24 минуты назад, Forger сказал:

вот уж прям ресурсоемкая вещь )))

Всё относительно, конечно же. Где-то и работа со строками - роскошь)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

42 minutes ago, tonyk_av said:

смотрю в сторону FTP

FTP сейчас активно "отменяют" (и поделом, корявый протокол). Файлы можно и через HTTP гонять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 hours ago, Forger said:

в таком случае я бы воткнул wifi чип

Кабель для питания всё равно прокладывать, так что нафиг ВиФи. Выставлять контроллер, управляющий даже светом в туалете, на всеобщее обозрение, это создавать самому себе ещё проблему с безопасностью, что при наличии кабельного подключения выглядит нелогичным.

9 hours ago, Forger said:

куда удобнее по моему поднять простенький web-сервер

 

9 hours ago, aaarrr said:

FTP сейчас активно "отменяют"

ИМХО, FTP как-то уместней смотрится на МК, чем HTTP. Да и браузеры с FTP умеют работать штатными средствами.

Изменено пользователем tonyk_av

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, tonyk_av said:

Да и браузеры с FTP умеют работать штатными средствами.

Не останется  скоро браузеров с штатными средствами то :

https://en.wikipedia.org/wiki/File_Transfer_Protocol :

Support for the FTP protocol was first disabled in Google Chrome 88 in January 2021,[4] followed by Firefox 88.0 in April 2021.[5] In July 2021, Firefox 90 dropped FTP entirely,[6] and Google followed suit in October 2021, removing FTP entirely in Google Chrome 95.[7]

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, Sergu said:

Не останется  скоро браузеров с штатными средствами

Может, оно и к лучшему. Хотя плагины в браузерах никто не отенял. И в Total Commander это, вроде, не собираются отменять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

On 12/4/2022 at 10:35 AM, std said:

Вообще, стоит вплотную подойти к TDD (Test Driven Development). Следование этой парадигме само по себе сильно поменяет подход и таких вопросов как в этой сообщении не возникнет.

Я писал в ТДД на JS и пробовал писать на СИ. Вот по моему мнению, TDD это то, что лезет в СИ из яваскрипта, не взирая на специфику. 
ТДД по замыслу его авторов и евангелистов подразумевает работу циклами редактирование-отладка по 2-3 минуты. (некоторые в десятках секунд вообще меряют). 

Т.е. вы вносите изменения в код и тут же видите результаты теста, тут же их правите, тут же видите обновленные результаты. Это позволяет писать вообще не особо подключая мозги. Это все очень круто, особенно в высокоуровневых языках, а если с динамической типизацией, так вообще шик.
Каждый тест можно в 3 строки упаковывать: данные, процедура, проверка.

Проблему уже видите?

У меня проект на С собирается от 30-40 секунд до нескольких минут. (И нет не по причине того, что он все объектники пересобирает, а по причине линковки). Я видал проект, где тесты пересобирались около 7 минут.
Сами тесты на СИ выглядят просто ужасно и с легкостью по сложности превосходят сам тестируемый код, они против всех заветов, сами вскоре начинают требовать тесты.
И если в том же JS, можно вполне обойтись общими возможностями тестового фреймворка, то для сишного приложения вам скорее всего придется писать свой тестовый фреймворк поверх общего. (и покрывать его тестами). Иначе ну совсем жопа =\.

Я сам много раз бился и залетал по причине отсутствия тестов и как бы всеми руками ЗА. Но создание и поддержка тестов на СИ это гораздо, гораздо и гораздо более ресурсоемкая задача, нежели в других языках. И если в JS считается, что написание тестов занимает примерное или чуть большее время, чем написание кода, то по моему опыту, время написание тестов на СИ может многократно превосходить по времени написание самого кода. 

On 12/4/2022 at 10:35 AM, std said:

Inversion of Control, Dependency Injection, SOLID

Это все хорошо, но вот только частенько кому-нибудь HAL или библиотекам популярным, вообще наплевать на это и вам что бы их затолкать в код написанный по этим принципам, надо еще тонну и тележку связующего кода написать. В лучшем случае надо делать свой BSP и над ними городить портянки еще, т.к. иначе, со сменой МК даже внутри серии может поменяться интерфейс BSP и все по....Я не к тому, что это все ненужно, скорее про то, что блин с таким скрипом это приходиться заталкивать, что очень часто легче забить.

On 12/4/2022 at 10:35 AM, std said:

Отображение данных, серечь GUI нормально ложится и на кресты и на си.   Возможно, будет полезно изучить принцип сообщений (message). Не OS примитивы. Пойдет вместо системы event'ов. 
Кроме того, messages (с очередями сообщений) - архитектурное решение для асинхронщины вообще, советую присмотреться, авось избавит от головняков events. Самопальную очередь и свои сообщения в виде структур. И обработку сообщений из очереди. Но без конкретики, исходя из общих слов можно говорить ни о чем бесконечно.

Вот об эту штуку я сильно сильно обжегся. Я не знаю способа сделать это БЕЗ строк. А строки в большинстве случаев не особо доступны (статическое выделение вся фигня), да и вообще жалко памяти строки гонять.

Без строк - у меня нет понимания внятного способа, как пользоваться типизацией и как безопасно гонять объекты в С++. Т.к. по факту нужно их сериализировть, а потом десериализировать. В каждом принимающем\отправляющем модуле.

Ну и типо это не решает проблему, что очереди накидывают сложности кода с их обработкой и их ошибками. (переполнение\пустота и т.п.).

Короче по моему опыту легче дать модулю просто ссылку на асинхронный интерфейс другого и это будет проще и понятнее. Да я могу представить случаи, где гонять сообщения удобнее, но они скорее вырожденные, чем общие.

 

On 12/4/2022 at 10:35 AM, std said:

Сериализация в целом это тривиальная вещь, ничто не мешает не заниматься синтаксическим сахаром который якобы обеспечит какое-то мифическое удобство и всегда писать serialize() руками. Вообще, действует принцип (один из принципов Python)  явное лучше скрытого. Тут возможны и совсем другие решения. Например БЛ с её потенциальной сериализацией вполе возможно скриптовать.

Оно тривиальное, если как вы сказали писать руками =). Но писать руками, как я выше заметил это боль, в том числе с поддержкой всего этого.
 

Чет я пока писал в этой теме, пришел к тому, что реально наверное лучше кодогенерацию таких дела на каких нибудь JS\Python писать. Реально не вижу проблем, кроме того, что появятся не языковые конструкции и усложнится процесс сборки.

 

 

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, tonyk_av said:

Кабель для питания всё равно прокладывать,

Поэтому и ставлю USB: дрова стандартные, инструкция минимальная, справиться даже неандерталец.

При желании можно по этому же USB поднять сетевое соединение (RNDIS), пример.

Но втыкать FTP - в настоящее время это уже анахронизм, имхо.

 

3 hours ago, tonyk_av said:

FTP как-то уместней смотрится на МК, чем HTTP.

Как раз наоборот ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, Forger said:

Поэтому и ставлю USB

Ага, и ходи по цеху или квартире с ноутбуком, чтобы подключиться к ПЛК для обновления ПО. У USB не та дальнобойность в сравнении с Ethernet.

39 minutes ago, Forger said:

Но втыкать FTP - в настоящее время это уже анахронизм, имхо.

ИМХО, тут как с СОМ-портами, всё зависит от того, где используется компьютер. На производстве широко используется EIA-485, и это никого не смущает. В ряде случаев его можно успешно заменить на CAN, но суть одна: в домашних компах этих интерфейсов нет, а вот в промышленных ноутбуках уже встроены. Многие уже не знают что такое "ISA", многие считают устаревшей шину PCI, тем не менее, выпускаются промышленные "мамки" под i9 с ISA. Просто наделано много оборудования, написано много ПО, которое отлажено и привычно людям, поэтому я бы не стал отбрасывать старые, но проверенные временем вещи.

 

Попробую на досуге прикинуть, во что на стороне МК выльется переход на доступ к памяти с FTP на HTTP.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

30 minutes ago, tonyk_av said:

Ага, и ходи по цеху или квартире с ноутбуком, чтобы подключиться к ПЛК для обновления ПО. У USB не та дальнобойность в сравнении с Ethernet.

Если подразумевается постоянное подключение в сеть с частым доступом к параметрам, то нужно беспроводное соединение. По квартире конечно лучше ездить хотя бы на самокате, пешком слишком долго.

В цеху - возможно лучше проводное. 

Если же требуется только как разовая или очень редкая настройки, или редкий слив журнала событий на период отладки. То можно и побегать с ноутбуком или спец-флэшкой. Можно обучить этой примитивной "процедуре" кого-нить, если самому лень )

30 minutes ago, tonyk_av said:

Многие уже не знают что такое "ISA"

Ясно: вам нужно как-то оправдать появление в новом изделии нечто архаичного ))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

48 minutes ago, Forger said:

оправдать появление в новом изделии нечто архаичного ))

Я сторонник использования проверенных решений, а не новомодных штучек.

49 minutes ago, Forger said:

нужно беспроводное соединение

Ага, фтопку эту фигню. Когда на одном из объектов в разных местах работала или рация, или сотовый телефон, желание применять радиоканал в своих проектах пропало. Особенно после того, когда оказалось, что даже синезубые гарнитуры в ушах не могли нормально держать связь с сотиком, лежащим в кармане в зависимости от того, как ты сориентирован относительно оборудования в цехе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 minutes ago, tonyk_av said:

Я сторонник использования проверенных решений

Так делайте все машинных кодах, это - тоже "проверенное решение" 🙂

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, Forger said:

При желании можно по этому же USB поднять сетевое соединение (RNDIS), пример.

Все что требует от пользователя каких либо действий с компом (настройки сети, установки драйверов) крайне желательно избегать. Это источник проблем. Потому да, голый USB HID самое то.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

36 minutes ago, tonyk_av said:

а не новомодных штучек.

Гм. Когда-то проверенные решения тоже были новомодными штучками. Интересно, кто же брал на себя ответственность за их проверку?))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...