promo eddy_em september 3, 12:13 8
Buy for 10 tokens
Уже больше полугода занимаюсь разработкой, вот, наконец-то в мастерских взялись за меня и начали выдавать первые детали. Сегодня сделал тестовую сборку (как обычно, местами пришлось "доработать напильником"): Пока прибор без названия (да и как-то не лезет в голову ничего, у меня нет…
Костерок

А как народ книжки покупает?

Вот хочу почитать относительно свеженького Гонсалеса-Вудса. Читалки формата А4 у меня, к сожалению, нет. Смотрю на бумажную версию: 113 баксов(!!!) в мягкой обложке на амазоне. Они там все совсем что ли охренели?
Да ей в твердой-то обложке красная цена — максимум баксов тридцать!
В принципе, я готов и 40 долларов потратить на эту книжку (с пересылкой). Пусть даже в мягкой обложке. Уж очень не хочется целый день сидеть у принтера и печатать, потом сшивать тетради, обрезать, формировать книжку, делать твердую обложку… С другой стороны, в таком случае книжка обойдется в пару сотен рублей (сколько сейчас газетная бумага в пачках стоит?).
Но таки хочется нормальную книжку. Предыдущее издание на русском языке я купил. Отдал тогда тысячи полторы. Тоже понегодовал, какие у нас охрененно дорогие книги стали!

Так где можно купить литературу на английском языке по вменяемой цене? Reposted from dreamwidth: https://eddy-em.dreamwidth.org/304508.html.
Костерок

Как пользоваться переменными в ld-cкрипте?

Очень неудобно задавать размер блока флеш-памяти в заголовочных файлах, т.к. он все равно должен быть определен в линкере (для выравнивания начала "эмуляции EEPROM во флеш"). Сейчас наткнулся на косяк: и в линкере, и в дефайнах у меня размер блока руками написан как 1024 байт, хотя в STM32F072CBT6 размер - 2кБ!
Попробовал явно в линкер-скрипте для данного МК указать. В файле stm32f072B.ld задаю:
MEMORY
{
    rom   (rx) : ORIGIN = 0x08000000, LENGTH = 128K
    ram  (rwx) : ORIGIN = 0x20000000, LENGTH = 16K
}
PROVIDE(_BLOCKSIZE = 2048);
INCLUDE stm32f01234.ld


А в stm32f01234.ld пишу:
...
  .myvars :
  {
    . = ALIGN(_BLOCKSIZE);
    __varsstart = ABSOLUTE(.);
    KEEP(*(.myvars));
  } > rom


Однако, если я пытаюсь у себя в исходниках обратиться к этой переменной:
extern const uint32_t _BLOCKSIZE;

то вместо ожидаемого 2048 получаю какое-то непонятное 2953142315.

Вопрос: как мне получить значение переменной _BLOCKSIZE в своем сишном файле?

Пытаюсь вот так сделать:
static const uint32_t *blocksize = (uint32_t*)&_BLOCKSIZE;

И все равно получаю 2953142315!

UPD. Разобрался. Надо было вот так:
static const uint32_t blocksize = (uint32_t)&_BLOCKSIZE;

Сложная штука — эти линкер-скрипты. Я до сих пор внутрь них как в магию какую-то смотрю! Reposted from dreamwidth: https://eddy-em.dreamwidth.org/304330.html.
Костерок

Youtube streaming

Сегодня опять "тимс" отвалился, так что я попробовал сделать стрим на youtube.
OBS нормально отработал, разве что в "живом" режиме картинка и звук неплохо запаздывали.
И да, оказалось, что OBS надо запускать после того, как активировал все экраны. А то у меня что получилось: запустил его, "расшарил" правый монитор, а потом решил, что нужно иметь возможность еще и в презентацию поглядывать + параллельно видеть, что в трансляции происходит (вдруг вопросы будут). Активировал телевизор, и у меня OBS перехватил вместо правого монитора ящик! Пришлось быстренько перетаскивать туда терминал, а презенташку на основном мониторе крутить...
Лекцию попросили пораньше закончить, так что все рассказать не успел. А еще руководитель удивлялась, зачем студентам Linux! Хм, даже не знаю, что сказать. Reposted from dreamwidth: https://eddy-em.dreamwidth.org/303912.html.
Костерок

Qt-creator на нескольких мониторах

Сижу, значит, пишу код. И внезапно ощущаю нехватку одновременно открытых как минимум четырех кусков кода!
А на одном основном мониторе (хоть и 2560 пикселей шириной) даже два куска не очень-то смотрятся (я привык к ширине кода в 110-130 символов, а влезает не больше 80).
Погуглил. О проблеме уже давным-давно говорят, а воз и ныне там! Не хотят разработчики сделать нативную поддержку расположения одного окна на двух-трех мониторах!
I3 не умеет растянуть окно на указанные мониторы — только на все сразу! А у меня дома их три: сверху ящик болтается.
Вот бы была возможность не запускать вторую копию qt-creator, а запустить "подсеанс"…

А пока выход из положения такой: запускаю на втором мониторе второй сеанс. Убираю левую и правую колонки projects/outline, и остается вот так:

В обоих окнах глаз режет совершенно ненужный левый столбец, который можно было бы и скрывать нафиг… Reposted from dreamwidth: https://eddy-em.dreamwidth.org/303631.html.
Костерок

Хеши строковых команд для МК

Долго я к этому шел, но, похоже, пора уже: однобуквенные команды сложно запоминать (особенно если команд толпа, и большая часть с этими буквами вообще никак не ассоциируются), а тупой разбор "в лоб" функциями вроде strncmp для больших списков может занять прилично времени. Вот и решил я простой хеш попробовать.
Collapse ) Reposted from dreamwidth: https://eddy-em.dreamwidth.org/303272.html.
Костерок

OBS studio

В общем, надоумили меня попробовать трансляцию в youtube. Напрямую скринкасты он писать не умеет, но может забирать поток с промежуточного приложения. Я поначалу думал упростить: эмулировать средствами ffmpeg веб-камеру, но есть и более удобное средство — OBS studio. Там по мере необходимости можно и включать еще трансляцию своей морды с веб-камеры (правда, у меня такие веб-камеры, что сущий ужас получается — все жаба душила больше 400р за кусок пластика отдавать, вот и получил 640×480 с низкой чувствительностью).
Поковыряться, правда, пришлось с битый час, чтобы "методом тыка" воткнуть трансляцию с OBS в youtube. Зато все настройки сохранились, так что можно будет довольно-таки быстро запускать очередную трансляцию. Ну и бонусом является автоматическая запись трансляции — позже ее смогут просмотреть. И чатик есть, чтобы вопросы задавать.

В общем, намного приятней штука получается, чем этот голимый свистопердящий M$ teams. Reposted from dreamwidth: https://eddy-em.dreamwidth.org/303016.html.
Костерок

M$ teams…

Начал с сегодняшнего дня студентам ЮФУ удаленно лекции читать. У них все завязано на различные корпорации зла. И базовая работа - через teams. ОК, подключился - все в порядке, вроде работает. Только начинаю демонстрировать экран, как эта зараза падает! И каждые секунд 500 сегфолтится:
[ 5014.776016] teams[17405]: segfault at 7f492d4d1910 ip 00007f493a66e16e sp 00007ffeee3794e0 error 4 in libpthread-2.33.so[7f493a66b000+f000]
[ 5014.776024] Code: 54 24 f8 c3 0f 1f 84 00 00 00 00 00 41 57 41 56 41 55 41 54 55 53 48 83 ec 48 64 48 8b 04 25 28 00 00 00 48 89 44 24 38 31 c0 <8b> 87 d0 02 00 00 85 c0 0f 88 44 01 00 00 49 89 ff 48 39 bf 28 06
[ 5203.093286] traps: teams[17285] general protection fault ip:7f6a6b31c904 sp:7f6aa069a2d8 error:0 in slimcore.node[7f6a68d27000+2ff1000]
[ 5216.987076] traps: teams[17747] general protection fault ip:7f2ca331c904 sp:7f2cd05ad2d8 error:0 in slimcore.node[7f2ca0d27000+2ff1000]
[ 5266.335913] traps: teams[18072] general protection fault ip:7f3ac731c904 sp:7f3afc54d2d8 error:0 in slimcore.node[7f3ac4d27000+2ff1000]
[ 5291.203246] traps: teams[18415] general protection fault ip:7f20d731c904 sp:7f21083f52d8 error:0 in slimcore.node[7f20d4d27000+2ff1000]
[ 5304.416904] traps: teams[18641] general protection fault ip:7f5d4eb1b904 sp:7f5d7c29e2d8 error:0 in slimcore.node[7f5d4c526000+2ff1000]
[ 5357.888780] traps: teams[18974] general protection fault ip:7f3bff31c904 sp:7f3c2c7ae2d8 error:0 in slimcore.node[7f3bfcd27000+2ff1000]
[ 5388.179412] traps: teams[19343] general protection fault ip:7f36a331c904 sp:7f36d83372d8 error:0 in slimcore.node[7f36a0d27000+2ff1000]
[ 5409.548870] traps: teams[19610] general protection fault ip:7f750731c904 sp:7f75244732d8 error:0 in slimcore.node[7f7504d27000+2ff1000]
[ 5454.230633] traps: teams[19966] general protection fault ip:7f7ab331c904 sp:7f7ae40f72d8 error:0 in slimcore.node[7f7ab0d27000+2ff1000]
[ 5516.117113] teams[20401]: segfault at 7f3acbfff910 ip 00007f3af988916e sp 00007fffbb7b4350 error 4 in libpthread-2.33.so[7f3af9886000+f000]

Жесть просто!.. В зуме у них официального канала нет, а бесплатные ограничены 40 минутами, уныло… Я уж думаю, можно, наверное, заранее записывать скринкаст с лекцией и выкладывать. Пусть смотрят, а в тимсе я могу им на вопросы отвечать. Правда, опять же, если понадобится демонстрировать свой экран - что делать? Сегодня вышли из положения так: я выслал организатору pdf, она его открыла и демонстрировала экран, а я бубнил сопроводительный текст. Но это - не дело.
А еще я знатно охренел от их отношения к латеху: видите ли, "корпоративный стандарт" - word! Жееесть!

Что ж за выпускники у такого ВУЗа получатся, если они привыкнут лишь к проприетарщине, а как верстать статьи даже знать не будут? Убогие кнопкодавы без фантазии… Reposted from dreamwidth: https://eddy-em.dreamwidth.org/302764.html.
Костерок

Задачка для студентов

Я тут интересную (и, главное, актуальную: судя по скудной информации в интернете, если этим кто-то и занимался, то результаты закопаны под NDA) задачку для студентов-технарей придумал.
Тема работы: Сравнение производительности методов частотного анализа на микроконтроллерах STM32: с использованием быстрого преобразования Фурье (БПФ), дискретного косинусного преобразования (ДКП) и периодограммы Ломба-Скаргла (ПЛС).
Да, математика там жестокая, времени может уйти очень много. Зато из нее можно сделать очень приличные дипломные работы как студенту бакалавриата, так и магистранту. Ну или просто в рамках практики хотя бы часть реализовать.
В работе я предлагаю оценить производительность определения первых N базовых гармоник сигнала, поступающего на вход АЦП STM32F103 (не имеет FPU) и STM32F072 (не имеет FPU и аппаратного деления). А) сравнить разные реализации БПФ для микроконтроллеров. Б) портировать реализацию ДКП и сравнить с производительностью БПФ. В) портировать реализацию ПЛС и разработать реализацию одного из альтернативных методов построения периодограмм. Сравнить с предыдущими. По возможности повторить исследования на STM32F303 или STM32F401 (имеют FPU).
В качестве реализации результатов работы может стать измеритель частоты вращения вала асинхронного электродвигателя. Да и вообще, частотный анализ — весьма интересная тема. Можно аналогичное исследование на ПК провести, чтобы по нашим измерениям попытаться восстановить кривые блеска переменных звезд и звезд, затмевающихся планетами.
Collapse ) Reposted from dreamwidth: https://eddy-em.dreamwidth.org/302562.html.