Pull to refresh
1
0
Владимир @Vooon

Пользователь

Send message

У большинства чипов есть возможность выбрать напряжение IO. Обычно это специальная ножка питания. Некоторые чипы поддерживают 1.8, что необходимо например одроиду.

Да, http update не очень стабильно работал пока я не заменил nginx (просто сервил файлы) на свой сервер, который выдает контрольную сумму md5 в заголовках.

Мне понравилось использовать PlatformIO вместо ардуины.
А для OTA имхо удобнее использовать стандартный HTTP update, запускать процесс командой через MQTT.
Правда для этого метода лучше использовать специальный сервер (или скрипт).
Я быстро набросал на го: https://github.com/vooon/esp-ota-server

Спекулятивное исполнение на уровне микрокода тоже уже давно есть. Достаточно сравнить сколько микрокоманд ISSUED и RETIRED.

Добавьте про такие удобные варианты как, _NAMED, _COND, _THROTTLE.

После 0 — вам это не надо.
А так, построено на базе log4cxx, плюс обвязка, чтобы выдавать через топик /rosout.

Эх, уже почти два года как разрабатывают.
Одно DSP ядро там занято стеком PX4 (под QuRT RTOS).

Я не знаю, этот код работает только на линуксе, и вроде кто-то собирал под макось (но я не знаю результат).
http://ru.cppreference.com/w/cpp/io/c/fprintf — но на платформе, где printf() не по стандарту нет надежды, что stdc++ будет соответствовать стандарту.


Еще нужно бы добавить assert на sz >= 0, но если sz = -1, то все равно должно будет упасть на resize().

Я пользуюсь такой оберткой:


template<typename ... Args>
std::string format(const std::string &fmt, Args ... args)
{
    // C++11 specify that string store elements continously
    std::string ret;

    auto sz = std::snprintf(nullptr, 0, fmt.c_str(), args...);
    ret.reserve(sz + 1); ret.resize(sz);    // to be sure there have room for \0
    std::snprintf(&ret.front(), ret.capacity() + 1, fmt.c_str(), args...);
    return ret;
}

Она конечно хуже буста (нет проверки типов, хотя это делает компилятор), и не умеет работать со строками, но все же удобна.

Посмотрите как делает OpenWRT: системный образ в squashfs, настройки поверх через overlayfs.
Его можно собрать для малины, хотя я не пробовал. Не уверен, что squash нужен на SD, места то полно, но будет точно RO.

Я такой заводил с помощью u8glib.

Не уверен, что APM 2.6 (что на atmega) уже поддерживает, проверь свежайшую прошивку.


https://github.com/mavlink/mavlink/tree/mavlink2-cxx11 но его нужно теперь переносить в pymavlink и слить в 3-4 коммита.

Сейчас уже лучше писать про версию 2.0, т.к. она совместима с 1.0 (выбирается через флаги).
2.0 уже поддерживается APM'ом и PX4. QGC пока в процессе перехода.


И еще, генератор поддерживает куда больше языков: Java, JavaScript, C#, Python, Object C, Swift.


А для C++ мне надоели неудобства C-lib и я написал C++11 генератор (вот только не знаю когда замержат).

Справедливости ради, debugWire есть в AVR Dragon, который одно время можно было купить за $50.
Правда за все время я им так и не воспользовался (только ISP), тогда как ST-Link порой использую.

Я не так давно написал бут для STM32F373, когда оказалось, что вызвать встроенный DFU-бут на F3 невозможно (баг в буте).
На F4 семействе кстати работает без проблем.

У меня бут прошивает с SD-карты, но на будущее — это не удобно.
Бут занял 27 КиБ, это Nil + HAL + FatFS + tinf (zlib inflate) + RIOT CBOR + SHA1.

Сложно поймать гетеродин, если его нет. Эти рации построены на чипе RDA1846 — SDR триемо-передатчике.

Вот пример использования STEP-модели через FreeCAD. Скриншоты: http://imgur.com/a/ViWIs


  1. Открыть модель (здесь скачанная с сайта Molex) и выделил саму модель. Второй элемент (473460001001) это чертеж посадочного места. А за тем экспорт в VRML 2.0.
    image


  2. Подготовить модуль по чертежам производителя (PDF от Molex)
    image


  3. Настроить "3D settings"
    image


  4. Результат:
    image

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


Если я правильно помню, то нужно выделить части делали в фрикаде, затем пункт меню экспорт выбрать формат VRML V2.0.
Еще есть сложность с подгонкой размера (дюймы или мм), kicad игнорирует теги VRML задающие размерность. Поэтому лучше все делать в миллиметрах. А потом задать scale:


 (scale (xyz 0.393701 0.393701 0.393701))

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity