Jump to content
    

psL

Свой
  • Posts

    520
  • Joined

  • Last visited

Posts posted by psL


  1. Итак, я скачала buildroot и сконфигурировала искомпилировала его.

    В результате у меня появилась директория output и все, что в ней полагается))

    в этой директории полагается быть toolchain у, загрузчику, ядру и корневой фс

    В принципе это все, что вам нужно и именно в указанной последовательности оно портируется и запускается(кроме toolchain) на плате .

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

     

     

     

     

  2. Прошу предлагать какие ввести дополнения. невидимые мной недостатки системы.

    Основной недостаток - отсутствие информации. В связи с этим - высокий "порог вхождения" и возможно отсутствие интереса к вашей разработке.

    Как построена документация, а также на предмет необходимой функциональности можно смотреть, например, аналогичные проекты OpenHab, ioBroker, тот же Windows IoT :laughing: , форумы по домашней автоматизации типа ab-log.ru/forum/ и тп

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

    Если коммерческий, то видимо тоже нет. Взять Windows IoT. Даже MS предлагают решение для _уже_ существующего железа (RPi) т.е. пытаются подстроиться под уже существующую инфраструктуру. Что же говорить о небольших группах разработчиков?

     

  3. Так понимаю, прога написана под винду, вот и главный недостаток. Такую систему вполне реально поднять на какой-нить стмке с граф. дисплеем - не греется, не глючит :biggrin:

    как на счет тимвьюер "на какой-нить стмке с граф. дисплеем";)

  4. а зачем обнулять поля структуры?

    Нельзя ли при объявлении структуры сразу ее инициализировать вне ф-ий, а уже непосредственно из некой ф-ии заменить только два поля?

     

    PWMConfig pwmcfg = {...
      .channels = {
         [0]{ .mode = PWM_OUTPUT_ACTIVE_HIGH, .callback = NULL},
         [1]{ .mode = PWM_OUTPUT_ACTIVE_HIGH, .callback = NULL},
         ...
      },
    };

  5. Что discovery, что Pi - все предполагает уже работу с аппартурой через HAL/BSP. Просто в одном случае это будет stm32cube, а в другом - u-boot/linux

    Непонятно, зачем учить ARM. Имхо, нужно разбираться с инфраструктурой уже имеющихся пакетов применительно к конкретной задаче и по возможности самостоятельно устранять ошибки в них.

    За ранее хочу извиниться, что веду разговор о плате Orange в разделе Raspberry, так как раздела для своего вопроса я не нашел.

    вот предлагали же модеру: назовите раздел Single Board Computers и засуньте в нее подразделами все RPi, Banana и тп вместе с ардуинами. нет же ж...

     

     

     

     

  6. Задача: без разработчики нового binding под openhab заливать данные с датчиков в Openhab 1.8.3, по возможности в Online режиме.

    Можно принимать данные через ExecBinding https://github.com/openhab/openhab/wiki/Exec-Binding

    типо так:

    Number Sensor           "Temperature [%2.1f °C]"  (Blablabla)   { exec="<[sh ./configurations/scripts/getvalue.sh:1000:REGEX((.*?))]"}

    скрипт или что там у вас будет тупо печатает значение в stdout

     

  7. синхронный стиль подразумевает наличие потоков, иначе многозадачности не будет. Но наличие потоков не подразумевает наличие синхронности. Тут я ничего не путаю.

    т.е. если процесс блокируется вплоть до события на каком-то одном или нескольких дескрипторах сокетов, а потом последовательно обрабатывает эти события, то такой процесс по вашему уже работает не синхронно?

     

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

     

    В том же JS тоже есть несколько реализаций потоков Web Workers API, например. Они используются для создания фоновых процессов в браузере. Дело в том, что долго работающие тяжелые скрипты могут блокировать страницу браузера (выглядит как зависание страницы). Особенно это заметно при работе с DOM браузера напрямую. Отсюда всякие проекты по отрисовке типа ReactJs. Так что не все так радужно.

     

  8. Кста посмотрел, стека у меня выделяeтся 2мб (ничего не менял). Итого получается, что 1000 потоков сожрали всю память и линукс сдох, помог только reset.

    с точки зрения приведенного вами кода у вас странное представление о синхронности.

    Синхронность - это не обязательно отдельный поток. Синхронность - это когда процесс останавливается в ожидание какого-либо события, завершения действия и тп вплоть до наступления оных.

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

     

    Т.е. для имитации синхронности по идее нужно было обрабатывать события на сокетах при помощи select, а не каждое соединение в своем отдельном потоке. В случае асинхронности использовать epoll

     

    Кстати, современных "синхронных" серверов уже совсем не осталось. И "тормознутый апач" уже давно может epoll : http://httpd.apache.org/docs/2.4/mod/event.html

    Вот в FAQ у апачей интерсное есть: Benchmarks tend to be a measure of configuration competance, rather than of server quality

     

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

  9. 1000 потоков так и не смог создать - линукс падает намертво, приходится ресет жать. Кое как создает 400 потоков и сжирает всю память, комп жутко тормозит и выдает еле 600 коннектов в секунду

    Каждый поток в линукс создается со стеком ~8Мб по умолчанию, вот память и кончается. Можно изменить pthread_attr_setstacksize

    Но лучше все же для тестирования использовать стандартные инструменты, например http://httpd.apache.org/docs/2.2/programs/ab.html

    Тут даже сравнивать нечего. Сервак на NodeJS убивает любой другой многопоточный, а тормознутого Апача десять раз убивает. Он может только конкурировать с серваком на Go, при одних задачах лучше NodeJS, при других - Go. Я работал и на том и на другом.

    Видимо гуру не знает, что "Сервак на NodeJS" написан на основе libuv, например. А nodejs "в продакшене" прячут за тем же nginx...

     

    А так, в принципе, можно договориться до того, чтобы запретить размещение обьектов в стеке средствами C++. Или использовать только реентерабельные функции и статические данные в С. Тогда никакого стека вообще не будет, и никакой кучи тоже.

     

  10. Устаревший стандарт применял две пары сигналов для управления потоком: RTS-CTS в одну сторону и DTR-DSR в другую.

    Не знаю что пишет силабс, никогда DTR-DSR не использовались для управления потоком.

    DTR - это сигнал готовности терминального оборудования и обычно используется для перевода терминалом (DTE) оконечного оборудования (DCE) в известное состояние, при этом DSR - готовность DCE, т.е. что DCE в это состояние перешел. В большинстве современных модемов вход DTR соединяется напрямую с выходом DSR непосредственно на разъеме RS232, например для того, чтобы определить, что модем подключен.

    RTS-CTS в сути отражают наличие свободного места в буферах данных DTE и DCE соответственно. И вот они используются для аппаратного управления потоком данных. Направление (вход/выход) этих сигналов зависят от типа оборудования. В случае RTS - для DTE это д.б. выход, а для DCE - вход. Для CTS - наоборот. Кстати, на некоторых модемах аппаратное управление не работает в режиме команд, видимо считается, что размер буферов в этом режиме всегда достаточный и они не могут быть переполнены)

  11. Инженеру, математику и физику дали красный резиновый мяч, и попросили высчитать его объём.

    Физик опустил мяч в сосуд с жидкостью, и подсчитал объём вытесненной жидкости.

    Математик замерил диаметр, и высчитал объём через интеграл.

    А инженер достал из стола "Справочник объёмов красных резиновых мячей. Том III" и нашел нужное значение

  12. Собственно Linux - это только ядро, а Ubuntu, Mint, генту - дистрибутивы линукса. Дистрибутивы в основном решают задачу сборки, распространения и взаимодействия пакетов.

    Вся emebedded linux система условно делится на загрузчик (u-boot), ядро (linux), корневую фс (rootfs) ну и ваше приложение (optware). Все это собирается вместе системами сборки типа buildroot, OpenEmbedded и т.п. в прошивку. Т.е. чисто работы с железом здесь вообще немного и скорее всего ее уже кто-то сделал за вас, если конечно вы не портируете линукс на оригинальную архитектуру.

     

     

  13. те, что в Линукс проекте компилируются и необходимо теперь их добавить в IDE. В Эклипсе разобрался как, там есть закладка добавить библиотеки. А тут что-то не найти.

    ПКМ на проекте -> Build options->{Debug, Release}->Linker settings->Add, далее имя без lib

  14. FlowControl = NOFLOW не помогло

    Нужно убедиться, что используется ожидаемый конфиг /etc/wvdial.conf или $HOME/.wvdialrc. Или задать свой конфиг принудительно через --config=/path/to

     

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

  15. не совсем понятно, что вы хотели сказать своей ссылкой. Вот это в .metadata/.plugins занимает 1.5Gb:

    org.apache.ivyde.eclipse
    org.eclipse.cdt.core
    org.eclipse.cdt.make.core
    org.eclipse.cdt.make.ui
    org.eclipse.cdt.managedbuilder.core
    org.eclipse.cdt.ui
    org.eclipse.core.resources
    org.eclipse.core.runtime
    org.eclipse.debug.core
    org.eclipse.debug.ui
    org.eclipse.e4.workbench
    org.eclipse.emf.common.ui
    org.eclipse.jdt.core
    org.eclipse.jdt.junit.core
    org.eclipse.jdt.launching
    org.eclipse.jdt.ui
    org.eclipse.ltk.core.refactoring
    org.eclipse.ltk.ui.refactoring
    org.eclipse.m2e.core
    org.eclipse.m2e.logback.configuration
    org.eclipse.mylyn.bugzilla.core
    org.eclipse.mylyn.context.core
    org.eclipse.mylyn.tasks.ui
    org.eclipse.pde.api.tools
    org.eclipse.pde.api.tools.ui
    org.eclipse.pde.core
    org.eclipse.pde.ui
    org.eclipse.ptp.services.core
    org.eclipse.rse.core
    org.eclipse.rse.ui
    org.eclipse.search
    org.eclipse.tcf
    org.eclipse.tcf.debug
    org.eclipse.tcf.te.tcf.locator
    org.eclipse.tcf.te.ui
    org.eclipse.team.cvs.core
    org.eclipse.ui
    org.eclipse.ui.editors
    org.eclipse.ui.ide
    org.eclipse.ui.intro
    org.eclipse.ui.views.log
    org.eclipse.ui.workbench
    org.eclipse.ui.workbench.texteditor
    org.eclipse.wst.common.modulecore
    org.eclipse.wst.jsdt.core
    org.eclipse.wst.jsdt.ui
    org.eclipse.wst.server.core
    org.eclipse.wst.sse.core

    Что нужно сделать, чтобы при работе в перспективе cdt эти непонятные плагины не создавались и workspace занимал приемлемый обьем?

×
×
  • Create New...