STLink в виде терминала

Как обычно, ушат помоев выливаем на ST за то, что не всегда пользуются головой при создании дев. борд*. Я честно, не знаю ни одного эмбеддерщика, который бы при работе не юзал терминал последовательном порту для отладки. (Или может мало их знаю?). А общем, gdb хорошь, да старый добрый ‘dmesg’-образный лог бывает иногда даже полезнее.
Так или иначе, пока суровые мужики реверсинженерят фирмварю StLinkV2 пытаясь найти следы вменяемости у разработчиков из ST, но находят только дыры в безопасности эпических размеров, я решил использовать STLinkV1 и STLinkV2 как есть.
Первой мыслью было взять и запихнуть VCP из примеров в стлинковский МК (А это у нас STM32F103C8T6) кинуть пару проводочков, но в конце концов — не хотелось выпиливать STLink окончательно (он меня выручал пару раз). Мысли? Их есть у меня!

IMG_20130506_100917

Шаг первый. Что у нас делает STLink? Правильно, помимо шаманства с брейкпойнтами, степами он пишет и читает память. Звучит хорошо? Хорошо! Этого нам и хватит чтобы реализовать что угодно.
(далее…)

solidoodle: выжимаем заветные 50 микрон на слой

Я уже давненько ничего не писал об этой моей веселой игрушке. Но это не значит, что я про нее забыл. на самом деле, я к ней прилаживаю почти каждые выходные по новому хаку. К сожалению, это не тот случай, когда можно просто купить и спокойно печатать, как и любой 3д принтер, который стоит меньше 5k$. ( Не стоит вестись на маркетинговый буллщит!)

Итак, за это время я успел добавить направляющую для подачи пластика, крепление для вебкамеры внутри и саму вебкамеру, охлаждение на экструдер, частично починить люфты и неравномерность по Z оси

Последний раз, когда я разбирался с этой проблемой, я поствилвысокую гайку. Осталась в итоге совсем небольшая неравномерность по Z. Причина тому, что сумрачные гении колхозной инженерии тупо взяли 5/16 (Как наш М8, только нихрена резьбой не совместимый) и засверлили с торца, после чего на горячую насадили на вал движка. Разумеется, соосность таким макаром получить нельзя. И она очень здорово мешаласть при печати на малых высотах слоев (0.1mm). lawsy недавно запилил аж целую калибровку, которая вводит поправочный коэффицент в прошивку, который надо экспериментально подбирать.
Это мне делать категорически не хотелось. Все равно не откалибруешь идеально, да и костыли это все. Да и 5/16 винт меня раздражал. Потому я и решил, что настало время выпилить этот винт куда подальше.
(далее…)

Немного черной магии: bash, cgi и загрузка файлов через POST

Прежде, чем меня объявят съехавшим с катушек фриком, оговорюсь, что это делалось для борды, где наличествует всего 64MiBs оперативной памяти (из которой больше половины сжирал запущенный софт). И (из-за специфичности задачи), я решил юзать bash подцепленный к lighttpd через cgi (гусары — молчать!) Тащить туда тяжелую артиллерию (php или python), усложняло код серверсайд части, да и вообще пахло садомазохизмом.
Ладно, в общем потихонечку я дошел до ручки необходимости загружать на борду файлы через POST. Разумеется, начал я с гуглежа решения, и даже нашел одно. Но к сожалению, у него был недостаток.
(далее…)

android & dnsmasq: делаем обертку

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

Но после недели использования этого решения вскрылась проблема. Когда подключаю телефон к компьютеру через провод, dns до телефона ресолвится неверно. Почему?

Начнем с теории. Когда я врубаю wifi точку доступа, на телефоне поднимается интерфейс ap0 со статическим IP 192.168.43.1.
Когда я врубаю раздачу по USB, подымается usb0 с IP 192.168.42.129.
(на других телефонах все это может различаться)
Чего мы хотим получить? Чтобы на dns запрос пришедший с usb0 нам ответили, что у телефона IP 192.168.42.129, а по ap0, соответственно, 192.168.43.1
Начал я, разумеется с того, что в /etc/hosts внес две строки такого вида:

192.168.43.1 anomalia anomalia.portable git.anomalia p.anomalia
192.168.42.129 anomalia anomalia.portable git.anomalia p.anomalia

Заработало? Нет! Почему?
(далее…)

Заставляем 2g/3g/4g модемы работать на debian’е

Небольшая заметка. Все новые донглы, вместо того, чтобы доставлять пользователю незабываемый секс с pppd, имеют встроенные ethernet-по-usb, подцепляющийся модулями типа cdc-ncm, sierra_net и т.п. Потому, после втыкания их в ifconfig -a появляется новый интерфейс, у меня — wwan0.
И как бы нам его поднять?
Делается это отправкой

AT^NDISDUP=1,1,"apn"

в виртуальный последовательный порт (соответственно на момент отправки, симка не должна ожидать ввода пина, который лучше отключить нафиг. Или же придется добавлять отправку AT+CPIN ).
Новый network-manager разруливает все эти проблемы, но мелкий одноплатник это не то место, куда надо тащить эту монструозную штуку. В моем случае у меня дебиан на небольшой платке, куда воткнут модем, потому вооруженный вышеописанным я набросал такое в /etc/network/interfaces:

iface wwan0 inet dhcp
        pre-up echo -ne '\r\nAT^NDISDUP=1,1,"internet"\r\n' > /dev/ttyUSB0 && sleep 15
        dns-nameservers 127.0.0.1 8.8.8.8

Это дает модему 15 секунд прочихаться, добавляет 127.0.0.1 и гугловский днс как неймсервер, так как я пользую dnsmasq для локального днса. Заменить только надо /dev/ttyUSB0 путем к порту, на котором висит управляющий интерфейс модема. Ну а после можно юзать:

ifup wwan0

для поднятия интерфеса или

ifdown wwan0

для того, чтобы его опустить.
Так же неплохо пинговать гугль или еще кого каждые 5 или 10 секунд, так как модем у меня опускает интерфейс после нескольких часов без активности, и понять это кроме как по сообщению cdc_ncm в dmesg нельзя.

Сервер в кармане

Я не психопат — я просто мыслю творчески
(c) Гарри Поттер и методы рационального мышления

Участие в соревнованиях типа «евробота», где кодить приходить в самых разнообразных позах, согнувшись хрен знает как, под/на/за столом, да и пара других веселых поездочек натолкнули меня на не совсем адекватную мысль, что надо бы сделать из своего телефона что-то более полезное, чем звонилку. Не все же ему ворочать своими мегагерцами жабу.

Итак, в наличии имеем:

  • Тупой китайский кирпич HD7 Pro с android 2.3.5, умеющим точку доступа, и не развалившийся за полтора года службы. Внутри — MT6573
  • Прямые руки (2 шт., костлявые)
  • Немного свободного времени

Хотим получить

  • Набор штатных инструментов — lighttpd, ssh, git, прочее
  • WiFi точку доступа с локальным dns, выходом в интернеты (если есть)
  • Блэкджек и прочие полезности (с)

2013-03-18-00-19-06

(далее…)

bash + netcat + javascript + html + css = gpiohttpd

magic people, voodoo people

(с) Prodigy

Не так давно, на Hack-a-Day увидел забавную статейку, о том, как (sic!) на Raspberry Pi, мужик мигает светодиодами из вебинтерфейса при помощи… apache2 + php + mysql.
Я так и не осилил понять на кой ляд ему потребовался там mysql, тут моя фантазия внезапно закончилась, да и разбираться в его хаке особенно не стал, так как в голову пришло совершенно неадекватнейшее колдунство, которое можно будет легко набросать на баше за пару часов.

shot

(далее…)

Solidoodle: чиним люфты по Z оси, на этот раз навсегда

5/16 резьба?
Отнести эту ересь в Мордор и утопить в лаве маунт Дума

Итак, дубль два. На этот раз более сложно, в расчете на людей с прямыми руками.  Потому если есть сомнения — лучше использовать фикс от lawsy.
И не забываем про технику безопасности.
Процесс занял около 12 часов экспериментирования + неделя поисков 5/16 метчиков по рынкам.

IMG_20130112_210544
(далее…)

openwrt-sunxi: процесс идет

Наконец-то нашел пару минут немного доработать напильником этот порт.

Что нового:

  • Ребазировал на текущий транк OpenWRT
  • Поддержка чтения имени/модели железки из окружения убута.
  • Теперь собирает ядро 3.4 из ветки sunxi-3.4.  OpenWRT собирает как работающее ядро, так и пакеты с модулями к нему
  • Добавлены специфичные для платформы модули в пакеты такие как ahci, ir, i2c, etc.
  • Инструкции и код, как обычно, в репе на шитхабе

wrt