Pull to refresh
0
0
Александр Михалицын @mihalicyn

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

STM32 USB Mass Storage Bootloader

Reading time 12 min
Views 73K
Известно, что софт можно дописывать вечно, а всякого рода недочёты на плате полностью исправляются ревизии так к третьей. И если с железом уже ничего не поделаешь, то для обновления микропрограмм придумали неплохой способ обхода ограничений пространства и времени — Bootloader.

Загрузчик — это удобно и полезно, не правда ли? А если загрузчик собственной реализации, то это еще более удобно, полезно и гибко и не стабильно. Ну и конечно же, очень круто!

Так же, это прекрасная возможность углубиться и изучить особенности используемой вычислительной машины — в нашем случае микроконтроллера STM32 с ядром ARM Cortex-M3.

На самом деле, загрузчик — это проще, чем кажется на первый взгляд. В доказательство, под cut'ом соберём свой собственный USB Mass Storage Bootloader!

image
Читать дальше →
Total votes 37: ↑36 and ↓1 +35
Comments 34

Елочка, зажгись! Часть 1: гирлянда и сборка ПО для OpenWRT

Reading time 7 min
Views 35K
Привет, Хабр!

28 декабря, за четыре дня до Нового года, у меня возникла проблема: я осознал, что имеющие в продаже новогодние гирлянды — редкостная китайская дрянь. Дело в том, что у меня дома маленькая искусственная ёлка, а также маленький ребёнок — поэтому я не хотел, чтобы на ёлке в каком-либо виде присутствовали 220 В, а также не нуждался в гирляндах на несколько сотен лампочек. И быстро обнаружил, что после вычёркивания всего, подпадающего под эти пункты, в окрестных магазинах остаются исключительно товары категории «обнять и плакать».

Поэтому мне пришлось сделать гирлянду самому. И у этой гирлянды есть IP-адрес.



Впрочем, если говорить серьёзно, я преследовал две цели: не только сделать гирлянду себе, но и показать вам, как на нашем нанокомпьютере Black Swift можно делать различные проекты, от наколенных до вполне себе профессиональных — чтобы показать вам, что это довольно просто и быстро. С попутным обсуждением разных интересных моментов.

Текст рассчитан на людей, которые более-менее понимают, как пишут программы, умеют держать в руке паяльник, но не более того — с какой стороны подойти к нанокомпьютеру с OpenWRT, остаётся загадкой. Попробуем её отгадать, тем более, что весь процесс не требует каких-то особенных (выходящих за вышеуказанные рамки) знаний или специального оборудования — программаторов, адаптеров и т.п.

Так как это — первая статья по теме, я разобью её на три части, чтобы не получалась огромная простыня:
  1. Гирлянда, подключение Black Swift и среда сборки под OpenWRT на C/C++
  2. Софт на C, работа с GPIO и программная ШИМ
  3. Веб-интерфейс и приложение для Android



В реальном времени все три части легко укладываются в рамки «проекта выходного дня».
Читать дальше →
Total votes 39: ↑39 and ↓0 +39
Comments 44

Пишем бота для MMORPG с ассемблером и дренейками. Часть 0

Reading time 4 min
Views 101K
Привет, %username%! Покопавшись в статьях хабра, я нашел несколько оных про написание ботов для MMORPG. Несомненно это очень интересные и познавательные статьи, но возможности в них весьма скудны. Что если, например нужно пофармить мобов или руду по заданному маршруту убивая агрессивных мобов, игроков и всех кто будет на Вас нападать по пути, выкрикивая им вслед непристойности, да что б еще и определить не смогли. В общем полная эмуляция среднестатистического MMORPG игрока. Написание макросов для AutoIt, симуляция кликов в окне, анализ пикселей под курсором — это совсем не наш вариант. Заинтриговал? Добро пожаловать под кат!
Грязные подробности
Total votes 92: ↑80 and ↓12 +68
Comments 61

Как запустить программу без операционной системы

Reading time 13 min
Views 180K

Так вышло, что в нашей статье, описывающей механизм опроса PCI шины, не было достаточно подробно описано самого главного: как же запустить этот код на реальном железе? Как создать собственный загрузочный диск? В этой статье мы подробно ответим на все эти вопросы (частично данные вопросы разбирались в предыдущей статье, но для удобства чтения позволим себе небольшое дублирование материала).

В интернете существует огромное количество описаний и туториалов о для того как написать собственную мини-ОС, даже существуют сотни готовых маленьких хобби-ОС. Один из наиболее достойных ресурсов по этой тематике, который хотелось бы особо выделить, это портал osdev.org. Для дополнения предыдущей статьи про PCI (и возможности писать последующие статьи о различных функциях, которые присутствуют в любой современной ОС), мы опишем пошаговые инструкции по созданию загрузочного диска с привычной программой на языке С. Мы старались писать максимально подробно, чтобы во всем можно было разобраться самостоятельно.

Итак, цель: затратив как можно меньше усилий, создать собственную загрузочную флешку, которая всего-навсего печатает на экране компьютера классический “Hello World”.

Читать дальше →
Total votes 196: ↑188 and ↓8 +180
Comments 69

Как восстановить неправильно выставленные фьюзы в ATtiny

Reading time 5 min
Views 133K
image

Привет всем хабраюзерам. Думаю многие, кто занимается микроконтроллерами, имеют небольшой опыт в «блокировке» микроконтроллера неправильно выставленными фьюз-битами, например, неправильные настройки тактирования, в частности — очень низкая частота, например 16 КГц.

Так же данный метод должен подойти для случаев, когда были случайно изменённые фьюз-биты RSTDISBL, а конкретнее — порт RESET используется как порт ввода/вывода или же небрежное отношение к фьюз-биту SPIEN(разрешение на последовательное программирование), всё это исключает прошивку классическим способом по протоколу SPI(In-System Programming).



В этом видео я расскажу, и покажу, как можно разблокировать микроконтроллеры из серии ATtiny у которых не правильно выставленные фьюз-биты.

Данный метод годиться не для всех ATtiny, но подходит для большинства популярных, вот их список:

  • ATtiny13;
  • ATtiny24;
  • ATtiny25;
  • ATtiny44;
  • ATtiny45;
  • ATtiny84;
  • ATtiny85.

На видео я показал как можно восстановить заводские фьюз-биты при помощи Arduino, по сути информация представлена ниже дублируется в видеоформате.
Читать дальше...
Total votes 33: ↑28 and ↓5 +23
Comments 24

Ethernet поверх USB на STM32F4

Reading time 9 min
Views 57K


Недавно возникла идея заставить плату на базе МК STM32F4 работать по сети. Поскольку на борту отсутствовал Ethernet PHY контроллер, то единственным вариантом было использовать USB FullSpeed интерфейс для эмуляции Ethernet устройства. Распространённый стандарт USB-класса, реализующий данную функцию, называется RNDIS.
К своему огорчению, поиск RNDIS драйвера для STM32 не увенчался успехом. Впрочем, это не удивило, т.к. открытые примеры использования USB порта у STM32 ограничиваются только теми, что предоставил нам производитель.
Захотелось исправить сию несправедливость. А заодно и поиметь нужные исходники, благо в будущем они пригодятся.
Сейчас, когда демонстрационная версия библиотеки готова, выкладываю её в свет на правах MIT-лицензии. Поэтому, все кому библиотека интересна — пользуйтесь «на здоровье». Библиотека имеет название LRNDIS, первая буква которого означает использование сетевого стека для встраиваемых систем «LwIP».
Для демонстрации возможностей библиотеки был создан пример на плате stm32f4discovery. Его работа заключается в поддержке основных сервисов (DHCP и DNS сервера) и передаче usb-хосту запрашиваемых WEB-страниц. Таким образом, наш discovery превратился в почти полноценный WEB-сервер, работающий по порту USB!
Пару слов о том, где это применимо.
В быту RNDIS устройства обычно являются USB-модемами для доступа в Интернет. Возможно, такое применение, действительно, окажется полезным, если разработчик выберет STM32 в роли связующей цепочки между ПК и радиочастотным (или другим) трансивером. Или, может быть, захочет расширить собственную сеть на Ethernet-сегмент?
Другое применение, в котором нахожу основную пользу для себя, — это интерфейс управления сложными устройствами. Типовое решение в этой области — создание терминального ПО. При этом приходится заниматься его поддержкой вместе с поддержкой устройства, что бывает неудобным. Собственно, в отказе от такой схемы в пользу управляющего Web-интерфейса и заключается смысл возможного применения библиотеки. Вспомните Web-интерфейсы настройки роутеров. Удобно. Красиво. Без лишнего ПО.

Итак, если Вы заинтересовались, читайте далее…
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Comments 17

PIC16F1503. Тачка на прокачку — 1. Звук

Reading time 6 min
Views 85K
Думаю, у каждого родителя бывает такой момент, когда он в магазине на кассе обнаруживает ребенка с нечто, и ребенок утверждает что именно это нечто очень важно для всего мира на земле и для него в частности. Вот и у меня такое случилось в очередной раз. С ходу оценив стоимость этого нечта, родительская жаба махнула рукой и решила, что один раз живем и все равно всех денег не заработать. Разум же оценил скорость умирания этого нечта и тоже дал добро.

В результате детский автопарк пополнился вот таким вот чудом китайской инженерии. Джип, с «люстрой» и лебедкой!



Чудо умело мигать «люстрой» и «фарами» и громко производить три записанных звука. Согласно всем канонам, машинка довольно быстро «умерла» и была принесена в ремонт. Я же машину в ремонт брать отказывался, мотивируя отказ невымытыми руками и недоеденным ужином. Плюс китайцы как-то смогли выжать из этой машинки пару лишних децибел на частоте, резонирующей с моим черепом (аж зубы заныли), поэтому мне совсем не улыбалось повторно испытать те же самые ощущения.

В результате долгих переговоров было решено, что простая смена батареек — это уже не модно. Ведь все настоящие водители тюнят свои машины в специальных студиях, после чего ездят на машинах, которых ни у кого нет. Вот и я взял машину в студию «Всё Моё» для тюнинга…
Читать дальше →
Total votes 60: ↑58 and ↓2 +56
Comments 18

Еще немного реверс-инжиниринга UEFI PEI-модулей на другом полезном примере

Reading time 5 min
Views 32K
И снова здравствуйте, уважаемые хабрачитатели.

В рамках борьбы за возможность модификации UEFI на ноутбуках HP пришлось отломать еще одну защиту, на этот раз более современную. Видимо, отдел разработки прошивок в HP догадался, что предыдущая защита была не ахти, и потому они решили радикально её улучшить, поэтому метод обхода защиты DXE-тома из предыдущей статьи перестал работать, и мне опять понадобилось вооружаться дизассемблером, разрабатывать конвертер из TE в PE и отвечать на те же вопросы: где находится цифровая подпись, кто именно ее проверяет и как сделать так, чтобы проверка всегда заканчивалась успехом.

Если вас интересуют ответы и описание процесса их поиска — прошу под кат.
Читать дальше →
Total votes 43: ↑42 and ↓1 +41
Comments 34

ППА: почти полная автономность. Строим автономное энергоснабжение для маленькой деревеньки

Reading time 4 min
Views 66K
Итак, в постах ранее мы говорили об энергоснабжении отдельных объектов и частных потребителях. За последние два года удалось построить больше двадцати станций hi-end уровня, что означает использование дорогих и качественных комплектующих и удовлетворения почти всех запросов по электроснабжению дома, за исключением отопления (отапливаться солнечной энергией придется ещё очень нескоро). И такая тенденция растёт, поскольку цены на рынке становятся ниже, а средний доход у населения — выше.

Понятно, что не от жизни хорошей люди ставят солнечные электростанции, но когда снабжающая электросетевая организация выкатывает ценник в районе 1,5 млн рублей за километр линии электропередач, плюс немалые деньги за проект, то выбор становится очевидным. Но не об этом сегодня речь. Сегодня будем говорить об опыте электроснабжения небольшой деревни, которая не имеет подъездных дорог кроме зимника, а в летнее время к ней можно доплыть по реке на лодке, или на коне, забравшись в горы и перейдя реку по перекату.
Деревня эта называется Суранаш, находится в республике Алтай, в Турочакском районе. Население 40-50 человек, 10-12 дворов. Основной вид деятельности — животноводство, рыбалка, охота, собирательство. Словом, обычные для деревни виды занятости. Энергоснабжение обеспечивается двумя дизель-генераторами, главным и резервным, общей мощностью 34 кВт. Поскольку отопление в деревне у всех печное, то основные потребители это телевизоры, чайники, утюги, стиральные машинки и прочее.

Поскольку мы являемся снабжающей организацией, наша задача заключается в бесперебойном энергоснабжении ввереных нам населенных пунктов.
В Суранаш топливо мы завозим в зимнее время, до того как спадет зимник, и до следующей зимы доступа к топливным бакам нет. Чтобы исключить возможные перебои, а также сэкономить средства на закупку постоянно дорожающего топлива, было решено установить гибридную автономную солнечную электростанцию, в рамках энергосервисного контракта. (Осторожно ТРАФИК: много фото)Далее про всё это читайте под катом:
Читать дальше →
Total votes 71: ↑71 and ↓0 +71
Comments 52

Создание мультизагрузочного USB HDD или флешки

Reading time 5 min
Views 735K


Загрузочный USB Flash или HDD накопитель удобен тем, что можно отказаться от использования CD/DVD для установки ОС и использования диагностических программ типа Memtest, MHDD, Acronis TI.

«Мультизагрузочная» флешка или HDD хороши тем, что можно не форматировать весь диск для каждой программы, а один раз установить туда все необходимые программы и при загрузке с него выбирать нужную через красивое меню. В случае с HDD удобно создать для этого отдельный небольшой раздел.

Существует множество решений для флешек (например, http://eee-pc.ru/wiki/софт:usb_multiboot), но, как правило, они не работают с USB HDD. На хабре я нашел только статью об установке Win7 с USB HDD, но год назад попытки воспроизвести это не увенчались успехом. Для установки Windows 7 с флешки существует MS Win7 DVD Tool, но он опять же не работает с HDD. Поэтому давайте создадим свой мультизагрузочный USB HDD с помощью GRUB4DOS.

Нам понадобится:
  • USB HDD (все описанное должно работать и для флешек).
  • ОС Windows (естественно можно аналогично сделать это и из ОС на базе Linux, но у меня сейчас нет возможности проверить работоспособность и наличие «подводных камней»).
  • Материнская плата (BIOS) с поддержкой загрузки с USB накопителей. Если загрузка с USB не поддерживается, можно использовать Plop, об этом ниже.


Читать дальше →
Total votes 93: ↑81 and ↓12 +69
Comments 61

Какие книги лучше — электронные или бумажные?

Reading time 6 min
Views 63K
Сегодня во всем мире весьма серьезно обсуждается вопрос о переходе образовательного процесса на электронные учебники. Это происходит и у нас в стране, и на Украине, и за океаном, и не совсем за океаном. Обсуждаются совершенно различные плюсы и минусы внедрения электронных учебников. Но, так уж иногда бывает, забывают поинтересоваться у конечных потребителей этих замечательных технологических новшеств — а нужно ли оно им?!
Читать дальше →
Total votes 41: ↑31 and ↓10 +21
Comments 182

Волшебный пузырек для оживления техники

Reading time 2 min
Views 46K
Недавно купил на попробовать вот такой баллончик. Подсмотрел, как на работе им пользуется наш админ и решил, что вещь полезная. Несмотря на 360 рублей за воздух, ничуть не пожалел.

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

Я сначала тоже пропылесосил все, что смог, причем далеко не самым плохим пылесосом Kirby. Получилось чисто, но далеко не идеально.

Потом отнес открытый системник и баллончик в ванную, чтобы не разводить грязь. «Пузырек» изначально довольно тяжелый, наверное, больше полкило. Продавец сказал, что должно хватить на десяток чисток. Но у меня был очень запущенный случай – не чистил 2 года, с самой покупки. Поэтому воздуха я не пожалел и попытался продуть все, до чего дотянулся.

Результат превзошел ожидания. Теперь все выглядит как новенькое и, что важно, вентилятор на процессоре перестал противно гудеть. Я уже собирался его менять, но теперь в этом нет необходимости. Местами осталась сильно прилипшая к лопастям пыль, но совсем не много. Тем, у кого пылевая аллергия, думаю, лучше надеть повязку на время продувки.

Прочистил таким образом два системника, израсходовав 2/3 баллончика. Думаю, если чистить своевременно, то, действительно, должно хватить раз на 10.

Баллончик в процессе распыления сильно охлаждается. Также, если дуть с близкого расстояния, то на обдуваемых поверхностях образуется иней, который, впрочем, тут же пропадает. На распылитель надевается тонкая трубочка, так что можно добраться в самые отдаленные уголки или, скажем, за решетку блока питания.
Читать дальше →
Total votes 187: ↑124 and ↓63 +61
Comments 317

Идея – «Жидкое ядро», меняем подход к вычислениям

Reading time 2 min
Views 2.9K
Идея сабжа пришла на днях, не уверен, что тема не затрагивалась ранее. Поэтому, извиняюсь, если не достаточно погуглил, и топик тянет на бородатый баян.

image

В двух словах: создаем процессор с программируемой логикой, как в ПЛИСах, но с динамической конфигурацией. Программа будет представлять из себя не последовательность команд, а последовательность конфигураций.
Читать дальше →
Total votes 67: ↑56 and ↓11 +45
Comments 52

MyFin — удобный инструмент для ведения домашней бухгалтерии

Reading time 2 min
Views 15K
Всем привет!

Хочу представить вам свою разработку. Это минималистичное и удобное средство для ведения домашней бухгалтерии. Вот скриншот для затравки:




Подробности под катом.
Читать дальше →
Total votes 110: ↑93 and ↓17 +76
Comments 87

Загрузка контента через YQL

Reading time 1 min
Views 5.4K
Возможно для вас, как и для меня, станет новостью то, что используя язык запросов Yahoo! Query Language — можно выдрать контент практически с любой страницы непосредственно в браузере (через javascript). Т.е. отпадает необходимость в использовании сервер-сайд кода и библиотек типа curl.

Выглядит это примерно так:
DELETE FROM HTML WHERE 1=1

Даже больше. YQL позволяет выполнять GET и POST HTML запросы.

Как это использовать — да по разному. Вот, для наглядности/примера — украл яндекс) (view source code вам поможет). Можно подглядеть информацию, закрытую корпоративным фаерволом.
А можно и поиграться с кросс-доменными запросами.
Тут уж у кого какая фантазия.
Total votes 49: ↑46 and ↓3 +43
Comments 23

How-to install gitosis (мануал с учётом проблем возникающих при установке) + интеграция в redmine

Reading time 6 min
Views 4.1K

gitosis — программное обеспечение для хостинга Git репозиториев


image

Установка:


Появился скрипт авто установки пока тестируется
sudo apt-get install python-setuptools git-core -y
mkdir ~/src
cd ~/src
git clone git://github.com/sc0rp1us/gitosis-tools.git
cd gitosis-tools/gitautoinstall
sudo bash main

Дальше следуем инструкциям скрипта


Но вернёмся к статье
Для начала установим необходимые компоненты для запуска gitosis:
  • Для debian & ubuntu выполните следующие команды от пользователя root

apt-get update
apt-get upgrade
apt-get install python-setuptools git-core -y
cd ~/src
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install



Далее зайдём в учётную запись через которую будем управлять gitosis'om (назовём её gitadmin), выгрузим дистрибутив и установим его

Настройка:


Теперь нам нужно будет создать пользователя который будет владеть хранилищем(имя может быть любым, но я предпочитаю использовать просто git), к тому же на одном сервере может быть несколько аккаунтов владеющих хранилищами, такому аккаунту не нужен пароль, но необходим действующий shell иначе SSH откажется с ним работать:
P.S. вы конечно можете использовать уже существующую учётную запись, но по соображениям безопасности, крайне не рекомендуется этого делать
Читать дальше →
Total votes 15: ↑9 and ↓6 +3
Comments 7

Настройка Apache2.2+Nginx+eAccelerator+SVN+Trac на медленном VDS — часть первая

Reading time 4 min
Views 2.9K
Вторая часть

Сразу хочу заметить, что статья эта не претендует на авторитетность — делал всё в первый раз на удалённой машине с Линуксом. Соответственно, прошу особо не пинать, а лучше высказывать замечания — как что-то можно было сделать по-другому, или советы по настройке. Всё нижеперечисленное было сделано по мануалам из гугла.


Итак, досталась мне хиленькая VDS от FirstVDS — с Debian и ISPManager.
Попытки оптимизировать ее работу вылились в следующее:

1. Оптимизация Apache и установка Nginx
2. Установка eAccelerator

Ну и для души —

3. Установка SVN
4. Установка Trac.

Читать дальше →
Total votes 15: ↑13 and ↓2 +11
Comments 19

10 способов стать хорошим программистом

Reading time 5 min
Views 99K
Хороший программист — это тот, кто смотрит в обе стороны, переходя дорогу с односторонним движением.
Даг Линдер

Что приводит программиста на его рабочее место каждый день? Страсть к программированию и получение удовольствия от него. Но чтобы действительно получать удовольствие и радость от программирования, нужно знать некоторые базовые вещи, которые позволят вам стать хорошим программистом.

Я не собираюсь писать мантры, следуя которым, вы станете хорошим специалистом. Моя цель — перечислить те вещи, которые помогли мне добиться успехов в этой профессии. Не существует четкого определения, кто такой хороший программист. Под таковым я подразумеваю человека, который разрабатывает отличные IT-решения и вносит вклад в развитие индустрии.

Читать дальше →
Total votes 200: ↑184 and ↓16 +168
Comments 93

Here be dragons: Управление памятью в Windows как оно есть [3/3]

Reading time 5 min
Views 147K

Каталог:
Один
Два
Три

μTorrent


Это, пожалуй, самая забавная часть. При очевидно высоких навыках программирования, авторы либо не читали, либо не поняли вот этот документ. Вот что происходит с дефолтными настройками:
Читать дальше →
Total votes 323: ↑300 and ↓23 +277
Comments 171

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity