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

    

AlexandrY

Модераторы
  • Публикаций

    6 453
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о AlexandrY

  • Звание
    Ally

Контакты

  • Сайт
    http://geektimes.com/users/indemsys/posts/
  • ICQ
    0

Посетители профиля

43 253 просмотра профиля
  1. Это типичный код в стиле C В стиле C++ будет так: // LED1 = P1.18 LED2 = P1.20 LED3 = P1.21 LED4 = P1.23 #define LED_MASK 0x00B40000 PortOut ledport(Port1, LED_MASK); int main(void) { while (1) { ledport = LED_MASK; wait(1); ledport = 0; wait(1); } } class PortOut { public: PortOut(PortName port, int mask = 0xFFFFFFFF) { core_util_critical_section_enter(); port_init(&_port, port, mask, PIN_OUTPUT); core_util_critical_section_exit(); } void write(int value) { port_write(&_port, value); } int read(void) { return port_read(&_port); } PortOut&operator=(int value) { write(value); return *this; } PortOut&operator=(PortOut& rhs) { write(rhs.read()); return *this; } operator int(void) { return read(); } private: port_t _port; }; И не забываем про критические секции. Не все в стиле суперлуп программируют.
  2. Размышления на тему TCP/IP.

    Логично подумайте. Как можно делать сеть не подразумевая протоколов, и как можно делать протоколы не подразумевая интерфейсы. Просто лениво перечислять. Тогда называем самый важный.
  3. Home assistant

    А что-то должны значить ваши восторги по поводу неизвестно чего? Могли бы и внятней свои мысли излагать. Приложение работающее в броузере не плюс, а минус. Такое приложение никто не проверяет на взлом, на спам, на рекламу, на кликинг и проч. нечисть. Да еще надо ждать пока сам броузер откроется, да еще следить за совместимостью с броузером. При этом на рынке куча нативных приложений из googleplay. Скажем Samsung SmartThings. Гораздо круче чем Home Assistant. Дает управлять не только со смартфонов, но и с часов. Имеет свои облака. И никаких малин не надо. Управляется голосом. Поддерживает море известных устройств, естественно все телики Samsung на нативном уровне. Home Assistant такой ассортимент и не снился. Имеет развитое API. Отличная документация. И ваш Ecobee, первое что сделал - это прилепился к SmartThings.
  4. Home assistant

    Мда, проект весь на Pythone , поддерживает тучу никому неизвестных дивайсов и имеет очень примитивный UI? От чего должно дух захватывать? Единственное что оттуда можно почерпнуть - это ссылку на репозитарий огромного числа иконок - https://materialdesignicons.com/ За это спасибо.
  5. Компилятор не размещает. Размещает линкер. Где будут, а где не будут работать атомарные операции даже в даташитах на микроконтроллеры не найдете. На самом деле я не собирался тут воевать со стандартом. Я его не читал и не планирую читать. И не стоит нагнетать вроде назовите "общие случаи когда нужно нарушать стандарт". Мысль была о нарушении неких правил безопасности. Тут даже доля метафоричности есть. Вы легко можете посмотреть в свой код и все это увидеть если вы пишете не под MISRA
  6. В стандарте много чего можно понаписать. А посмотрев поглубже обнаружишь необходимость ретаргетинга. Т.е. вы сами и должны реализовывать фишки этого стандарта. В курсе что атомарность в ARM-ах не на всех областях памяти работает? Впрочем это тут тоже обсуждалось.
  7. На марсоходе с VxWorks часто происходили зависоны. Оказалось не ставили мьютексы предполагая что запись в простую переменную атомарная. Я тож люблю полагаться на знание об атомарности или изолированности доступа к переменным. Поскольку синхронизация дорогой процесс. Первый раз слышу. В IAR не наблюдается зависимости времени компиляции от опции оптимизации.
  8. Размышления на тему TCP/IP.

    Только покажите здесь следы потока. Эт че, теперь любую функцию потоком называют?
  9. Размышления на тему TCP/IP.

    Не надо так старательно передергивать. TCP стек в Wiznet для вас закрыт и ничего отладить там не можете. W5500 не поддерживает 80 mbit. Повеселило их традиционное "Not support IP Fragmentation" Эт вам еще предстоит куда нибудь тыркнутся со свом Wiznet, а он там не будет работать ни в какую. Не думайте что вы здесь такой Колумб. Wiznet тут обсасывался еще 10 лет назад. Сам на нем обжегся.
  10. Размышления на тему TCP/IP.

    80 там поддерживает только 100 ногий жрущий монстр W5300. Но набор протоколов у него никакой. IPv6 даже нет. Идет с голым Socket API для bareboard. Делайте выводы. И еще. Единственная заявленная совместимость с известными проектами у Wiznet есть только с mbed. Но там mbed целиком располагается в их чипах W7500 с Cortex-M0. Т.е. по честному разгрузить сторонний TCP стек с помощью Wiznet так просто не выйдет. Это не считая невозможности отладки всего что ниже TCP. Короче как был этот Wiznet довольно нишевым продуктом таким и остался.
  11. Размышления на тему TCP/IP.

    Вот в том месте где Wiznet подключается к контроллеру и будет слабое звено.
  12. На чем писать

    Думаю Python к GUI тут за уши притянут. Опыт применения чего либо в больших конторах, где десятки скрытых мотивов выбора того или иного инструмента ничем не может помочь индивидуальным разработчикам. Вот реальный простой инструмент создания GUI - https://www.embedded-wizard.de/demo.html Никаких питонов, скриптов и других сторонних языков. Даже С++ не нужен. За бесплатно можно получить пакет для Raspberry Pi
  13. Да не стоит волноваться. uGFX достаточно монструозная система чтобы глаза на лоб вылезли у любого ассемблерного "оптимизатора". Насколько вижу uGFX умеет использовать для рисования Chrom-Art Accelerator, который есть у некоторых STM-ов Вот его использование действительно что-то ускорит. Кстати у i.MX RT есть такая же штука и даже более функциональная, называется Pixel Pipeline (PXP)
  14. Много ума не надо чтобы вставить код не по теме. А вот соптимизируйте ка это /* inverse of a 3x3 matrix */ void gl_M3_Inv(M3 *a,M3 *m) { float det; det = m->m[0][0]*m->m[1][1]*m->m[2][2]-m->m[0][0]*m->m[1][2]*m->m[2][1]- m->m[1][0]*m->m[0][1]*m->m[2][2]+m->m[1][0]*m->m[0][2]*m->m[2][1]+ m->m[2][0]*m->m[0][1]*m->m[1][2]-m->m[2][0]*m->m[0][2]*m->m[1][1]; a->m[0][0] = (m->m[1][1]*m->m[2][2]-m->m[1][2]*m->m[2][1])/det; a->m[0][1] = -(m->m[0][1]*m->m[2][2]-m->m[0][2]*m->m[2][1])/det; a->m[0][2] = -(-m->m[0][1]*m->m[1][2]+m->m[0][2]*m->m[1][1])/det; a->m[1][0] = -(m->m[1][0]*m->m[2][2]-m->m[1][2]*m->m[2][0])/det; a->m[1][1] = (m->m[0][0]*m->m[2][2]-m->m[0][2]*m->m[2][0])/det; a->m[1][2] = -(m->m[0][0]*m->m[1][2]-m->m[0][2]*m->m[1][0])/det; a->m[2][0] = (m->m[1][0]*m->m[2][1]-m->m[1][1]*m->m[2][0])/det; a->m[2][1] = -(m->m[0][0]*m->m[2][1]-m->m[0][1]*m->m[2][0])/det; a->m[2][2] = (m->m[0][0]*m->m[1][1]-m->m[0][1]*m->m[1][0])/det; } Это функция из библиотеки tinygl для рисования 3D сцен которая подключается к ugfx.