Apr. 13th, 2020

eddy_em: (Default)
В некоторых случаях количество команд, принимаемых микроконтроллером, начинает просто зашкаливать! И тут рождается уродство вроде этого:
else if(CMP(cmd, CMD_PRINTTIME) == 0) ...
else if(CMP(cmd, CMD_DISTMIN) == 0) ...

— огромная цепочка самопальных strcmp, которая даже при сотне команд уже прилично тормозит!
Понятно, что не существует универсальной функции, которая позволила бы из любого набора строковых команд получить однозначный хэш в uint32_t, чтобы свести это к красивому switch().
Следовательно, в кодогенераторе необходимо предусмотреть какой-то параметр, который будет перебираться до тех пор, пока данному набору строк не найдется однозначно соответствующего набора хэшей!
Вопрос: какую несложную хэш-функцию в данном случае можно использовать?

Ну и второй вопрос: а нет ли в природе эдакого "упрощенного bash" для микроконтроллеров? Чтобы имел память на ~128 команд длиной до ~64 байта, навигацию по истории стрелочками управления курсором, поиск стандартным ctrl+r, автодополнение по TAB?
eddy_em: (Default)
Если генту не обновлять хотя бы раз в две недели, могут быть проблемы с зависимостями и замучишься их решать. Да и обычно не так много за две недели накапывает...
Но последнее время что ни обновление, так полторы сотни пакетов! И среди них всякие жиробасы вроде gcc, llvm, clang и культяпко-библиотек!
Поставил сдуру утром обновление. Погулял. Запускаю firefox — падает, собака! Сел поработать — qtcreator тоже не работает, т.к. часть библиотек обновилась, а сам creator — еще нет!
Честно говоря, столь частые обновления уже бесить начинают! Хочется, чтобы можно было раз в год запускать обновления, и никаких проблем с кривыми зависимостями не возникало бы... Но при этом чтобы система была для человека, а не для роботов (т.е. чтобы там не было pulseaudio, systemd, networkmanager и прочего дерьма).
eddy_em: (Default)
Можно сказать, дописал CAN-сниффер.
Подробности )
Было бы неплохо проверить эту штуку на реальной CAN'овской железяке, но сейчас на работе, к сожалению, ничего подходящего нет. Буду ждать, пока придут драйвера ШД на CanOpen. Для них нужно будет либо под STM32 какую-нибудь canopen-прослойку написать, либо же использовать сниффер и весь cannopen'овский тупняк делать на компьютере.
Как я ненавижу CanOpen!!!

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 01:12 pm
Powered by Dreamwidth Studios