Hello ARM-world!

Достал из ящика стола STM32 VL Discovery. На борту ARM 32-bit Cortex-M3, 24MHz, 128Kib flash, 8Kib ram, бла-бла-бла и все такое, что нужно для dev-платки. «Hello, world!» для таких плат является мигалка светодиодом. Стандартный демо-пример на Си, использующий библиотеку CMSIS занимает около трех килобайт (с выравниванием четыре килобайта), правда там еще предусмотрено изменение частоты моргания посредством нажатия кнопки USER, ну и фиг с ним. Наваял свою «дрыгалку» (естесственно в самом простейшем виде, без всяких оптимизаций и использования преимуществ arm, так как бы я написал для x86 на скорую руку):

/*
 * file: stm32.ld
 */
SECTIONS
{
        /* interrupt vectors start at zero */
        . = 0x0;  /* start of flash */

        .text :  {  *(.text)   }

        /* constant data follows code but still in flash */
        .data :
        {
          *(.data)
          *(.rom)
        }

        /* internal RAM starts at 0x20000000 */
        . = 0x20000000;
        .ram : { *(.ram) }

        .bss :
        {
          *(.bss)
          *(.ram)
        }
}
    @
    @ file: led2.s
    @
    .syntax unified
    .cpu cortex-m3
    .thumb

    .equ STACKINIT,             0x20001FFF

    .equ PERIPH_BASE,           0x40000000
    .equ APB1PERIPH_BASE,       (PERIPH_BASE + 0x00000)
    .equ APB2PERIPH_BASE,       (PERIPH_BASE + 0x10000)
    .equ AHBPERIPH_BASE,        (PERIPH_BASE + 0x20000)

    .equ RCC_BASE,              (AHBPERIPH_BASE + 0x1000)
    .equ RCC_APB2ENR,           (RCC_BASE + 0x18)

    .equ GPIOC_BASE,            (APB2PERIPH_BASE + 0x1000)
    .equ GPIOC_CRH,             (GPIOC_BASE + 0x04)
    .equ GPIOC_BSRR,            (GPIOC_BASE + 0x10)

    .equ LED_DELAY,             0x30000

.section .text
    .org 0x0

vectors:
    .word   STACKINIT
    .word   _start + 1

_start:
    @ разрешаем тактирование порта C
    ldr r6, = RCC_APB2ENR
    mov r0, 0x10
    str r0, [r6]

    @ устанавливаем режимы тактирования ног 8 и 9 порта C
    @ (синий и зеленый светодиоды, соответственно)
    ldr r6, = GPIOC_CRH
    ldr r0, = 0x44444433
    str r0, [r6]

    @ глушим синий, зажигаем зеленый
    ldr r2, = 0x01000200
    @ глушим зеленый зажигаем синий
    ldr r3, = 0x02000100
    @ порт сброса/установки сигнала на ноги
    ldr r6, = GPIOC_BSRR

    @ бесконечный цикл
loop:
    @ blue - off, green - on
    str r2, [r6]
    bl delay
    @ blue - on, green - off
    str r3, [r6]
    bl delay
    b loop

    @ простенькая задержка
delay:
    ldr r1, = LED_DELAY
delay3:
    subs r1, 1
    bne delay3
    bx lr

компилируем и прошиваем:

arm-none-eabi-as -mcpu=cortex-m3 -mthumb -ahls=led2.lst -o led2.o ./led2.s
arm-none-eabi-ld -v -Tstm32.ld -nostartfiles -o led2.elf ./led2.o
arm-none-eabi-objcopy -O binary ./led2.elf ./led2.bin
st-flash write v1 ./led2.bin 0x08000000

— набор компиляторов GCC под ARM брал тут
— утилиту для прошивки брал тут (git clone https://github.com/texane/stlink && cd ./stlink && ./autogen.sh && ./configure && make)

— под Mac OS не забываем поставить драйвер (cd stlinkv1_macosx_driver/osx && sudo ./install.sh), если не ставится из-за неподходящей версии системы, то просто правим скрипт, я под yosemite добавил вот такие строчки:

10.10.3)
    KEXT="stlink_shield10_10.kext"
    ;;

результат: файл прошивки уменьшился с 3-4 кбайт до 84 байт (если развернуть цикл delay, то 80)

Рубрика: Новости | Оставить комментарий

КИТы

Получил парочку телефонов Jiayu JY-F1:

— OS Android 4.2.2
— GPU Mali-400 MP
— 4″, TFT, resolution 480×800, емкостной тач-скрин
— dual core ARM Cortex-A7 MT6572 1300 MHz
— rear camera заявлено 8.0 Mpx (по даташиту процессор поддерживает 5.0 Mpx)
— front-face camera заявлено 1.9 Mpx (по даташиту процессор поддерживает 1.3 Mpx)
— system storage 1.27 Gb
— internal storage 1.23 Gb
— ram 468 Mb
— 2 слота под SIM-карты
— 1 слот под microSD
— батарея 2400 mAh (думаю хватит на полторы недели в режиме ожидания на двух симках)
— Antutu Benchmark 5.0 alpha — 10 000
— NenaMark2 — 40.5 FPS

Перепрошил прошивкой от наших испанских друзей, стоковая прошивка не устроила непонятным набором приложений на китайском языке. Разлочил рута. Единственный косяк, который я заметил — почему-то не перегружается при подключенной зарядке. В остальном все отлично.

Для бюджетной версии очень-очень неплохо. Цена данного девайса при заказе напрямую, с ожиданием по почте в районе 2 недель — около 2150 деревянных (плюс-минус 20 рублей).

Есть еще одна модель, которая меня заинтересовала, но есть такое животное — жаба называется, так как стоимость модельки составляет около 16000 деревянных. :)..

Характеристики One+ one такие:

— OS Android 4.4
— GPU Adreno 330, 578MHz
— 5.5″, IPS with TOL, resolution 1080×1920, Gorilla Glass, емкостной тач-скрин
— Qualcomm MSM8974AC Snapdragon 801 Quad Core 2.5GHz
— rear camera 13 Megapixel — Sony Exmor IMX 214
— front-face camera 5 Megapixel
— storage 16/64 Gb
— ram 3 GB LP-DDR3 @1866MHz
— 1 слот под microSIM-карту
— 1 слот под microSD
— батарея 3100 mAh
— толщина 8.9 мм (ultra slim)

Рубрика: Новости | Оставить комментарий

No data received… :-/

Зашел на сайт aliexpress, чтобы отправить отзыв о полученном товаре (наконец пришел зеленый чай Улун по почте). Столкнулся с тем, что просто тупо не смог зайти на страницу отправки фидбэков, а также на страницу оплаты.

Писал в службу поддержки, мучил интернет-провайдера… Сегодня стукнуло… поставил старый роутер… и все открылось и отправилось так как и должно было быть. Начал грешить на то, что возможно я за последнюю неделю, что-то изменил в настройках роутера D-Link DIR-320 rev.D1. Сбросил настройки — не помогло, откатился на предыдущую прошивку — не помогло. Есть конечно вероятность, что просто что-то тупо сдохло, ибо он у меня включен 24/7, вполне могут «опухнуть» конденсаторы. Но самое интересное, конечно же, то, что все остальное он открывает хорошо и только на некоторых страницах aliexpress глючит.

Роутер стабильно заставляет браузер показывать мне «No data received», проверено Mac OS X 10.9.4 / Fedora 20, браузеры Chrome / Firefox / Safari.

Придется покупать новый :-/

Что-то июль выдался богатый на такого рода события.

P.S. (19:25) Поставил новый роутер UPVEL UP-325BN, пока все хорошо (тьфу-тьфу-тьфу)

Рубрика: Новости | Оставить комментарий

AceStream на Mac OS X … запросто!

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

Первое, что я нашел — это был оригинальный AcePlayer (VLC с поддержкой AceStream). Под МакОсью оно запускалось обернутое в Wine, причем плеер был не самой последней версии. Самая последняя версия работает некорректно под Wine. Да и глючно все это получилось.

Сегодня случайно набрел на плагин к XBMC. Хорошая штука, я хочу сказать.
Сама парсит несколько популярных сайтов, доступно множество каналов, от ОРТ до НТВ+.

Рубрика: Новости | Оставить комментарий

ipgeobase for nginx

Попользовался базой от maxmind, но там, что-то много неопределенных IP попадается, нашел решение для подключения ipgeobase, добавляю как черновик, чтобы не забыть, а потом подумаю уже как это заточить под меня:


wget http://ipgeobase.ru/files/db/Main/geo_files.zip
unzip -qq ./geo_files.zip
vim ./cities.txt
:w ++enc=utf-8
:q
cat cidr_optim.txt | awk '{if ($7 != "-") print $3$4$5" "$7";"}' > region.conf;
cat cities.txt | grep 'Москва' | awk '{print $1" ""MSK"";"}' > MSK.conf;
cat cities.txt | grep 'Московская область' | awk '{print $1" ""MSK"";"}' >> MSK.conf;

http {
...
geo $regnum {
ranges;
default 0;
include region.conf;
}

map $regnum $geo_region {
default UNK;
include MSK.conf;
}

Рубрика: Новости | Оставить комментарий

Поделки из бумаги :)

За последние три дня, пока образы разворачивались на флэшку и устанавливалась система, наконец сшил расбросанные страницы мануала по Symfony 2.5.

Осталось проклеить и сделать обложку.

sym

Рубрика: Новости | Оставить комментарий

Mind stick…

Чтобы не забыть:

#!/bin/bash

ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
brew install mc vim nginx mysql subversion git mercurial ant redis mongodb
brew tap homebrew/php
brew tap homebrew/dupes
brew install --without-apache --with-fpm --with-mysql php55 php55-mongo php55-redis

curl -sS https://getcomposer.org/installer | php
mv ./composer.phar /usr/local/bin/composer

ln -sfv /usr/local/opt/php55/*.plist ~/Library/LaunchAgents
ln -sfv /usr/local/opt/nginx/*.plist ~/Library/LaunchAgents
ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents

echo 'export PATH=/usr/local/bin:/usr/local/sbin:$PATH' >> ~/.bash_profile
echo 'export LC_ALL=ru_RU.UTF-8' >> ~/.bash_profile
echo 'export LANG=ru_RU.UTF-8' >> ~/.bash_profile
echo 'source ~/.bash_aliases' >> ~/.bash_profile

echo 'alias ll='\''ls -la\' >> ~/.bash_aliases

echo 'alias mysql.start='\''launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'\' >> ~/.bash_aliases
echo 'alias mysql.stop='\''launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'\' >> ~/.bash_aliases
echo 'alias mysql.restart='\''mysql.stop && mysql.start'\' >> ~/.bash_aliases

echo 'alias nginx.start='\''launchctl load ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'\' >> ~/.bash_aliases
echo 'alias nginx.stop='\''launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist'\' >> ~/.bash_aliases
echo 'alias nginx.restart='\''nginx.stop && nginx.start'\' >> ~/.bash_aliases

echo 'alias php-fpm.start='\''launchctl load ~/Library/LaunchAgents/homebrew.mxcl.php55.plist'\' >> ~/.bash_aliases
echo 'alias php-fpm.stop='\''launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.php55.plist'\' >> ~/.bash_aliases
echo 'alias php-fpm.restart='\''php-fpm.stop && php-fpm.start'\' >> ~/.bash_aliases

echo 'alias mongo.start='\''launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongo.plist'\' >> ~/.bash_aliases
echo 'alias mongo.stop='\''launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongo.plist'\' >> ~/.bash_aliases
echo 'alias mongo.restart='\''mongo.stop && mongo.start'\' >> ~/.bash_aliases

echo 'alias redis.start='\''launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist'\' >> ~/.bash_aliases
echo 'alias redis.stop='\''launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist'\' >> ~/.bash_aliases
echo 'alias redis.restart='\''redis.stop && redis.start'\' >> ~/.bash_aliases
Рубрика: Новости | Оставить комментарий

Что это? … яблочки?!

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

Ладно.. Попробовал снова поставить хамелеона, в надежде, что он восстановит MBR и все необходимые ему файлы. Ничего подобного, руки видимо превратились в клешни и из этой затеи ничего не вышло.

Хрен с ним… ставим заново 10.9.0.. в общем это неинтересно описывать, мне пришлось раза четыре ставить ее из-за потери загрузочных данных в системе, с чем это связано понятия не имею…

Поставив систему в очередной раз, сразу накатил Clover. Оказалась хорошая штука, даже DSDT-файл не надо ему, оно все патчит на лету.

Поперегружался, заметил, что тупит и виснет перед сбросом… оказалось, что так и надо… Выскакивала ошибка с таймаутом — причина оказалась в кексте, который подхватывает USB3.0, у меня в на материнской плате их нет, выключил нафиг..

Побаловался с флагами и параметрами загрузки в Clover, нашел более-менее подходящие. Обновился до 10.9.4 через ComboUpdate — это заняло минут 10 скачивания и минут 5 установки, в отличие от Windows. Тупняк с тормозами при перезагрузке и выключении как-то сам собой исчез..

Снова поставил все, что мне нужно, настроил сервисы для веб-разработки. Жду-сс….

Рубрика: Новости | Оставить комментарий

 Жесть от хамелеона….

Прошли сутки с тех пор как у меня упали все системы на десктопе и на ноутбуке.

Все началоcь с того, что мне принесли ноутбук Fujitsu-Siemens Amilo Pro V2060.

Это довольно старая железка с процессором Intel Pentium M 735A 1700МГц, 512Мб, 60Гб, LCD 15″. Жалобы обычные — из-за вирусов тупит винда. Используется для работы в MS Office и показа презентаций через проектор. Сеть была не нужна.

И тем же вечером я не особо долго думая, конечно же начал ставить на нее Mac OS X. :) … Он очень упорно не хотел принимать новую для него систему… Но время шло, перебор дистрибутивов продолжался… Горного льва, просто Льва и Снежного барса, все это в разных вариациях и с разными параметрами, принимать отказалось (конечно можно было и дальше похимичить с правками в DSDT, но было поздно и мне хотелось спать). Остановились на дистрибутиве Leopard 10.5.8 (к тому же MS Office требует минимум эту версию оси), использовалась сборка от iDeneb, ставился на MBR-разбивку, с флэшки установка заняла около 30 минут. Попутно решились грабли с интегрированной видеокартой Intel 915 GMA, для нее потребовалось пара измененных кекстов от 950GMA. В некоторых случаях кекст пришлось ставить на установочный образ, иначе инсталлер не заводится. Ставил еще кекст на WiFi карту, но система не знает что такое WPA/PSK, так что я так и не проверил ее функциональность. Кекст на встроенную сетевую вроде как завелся, но у ноута похоже был раздолбан разъем и сеть также осталась не проверена. Поставился офис 2011 от самих мелкомягких. При использовании Word обнаружился небольшой глюк: если к ноуту подключено еще одно устройство в разъем VGA, то мышь начинает оставлять за собой следы. Это наблюдается только в ворде и нигде больше.

Все это было бы замечательно, но мне не понравился старый хамелеоновский загрузчик (надо было его и оставить). Скачал Chameleon 2.1-r2069 (не из репозитория, там версия 2.2 уже). В 10.5.8, как оказалось, отсутствуют некоторые Perl-библиотеки из-за чего скрипт установщика тупил, дай думаю установлю загрузчик на другом компе. Вытащил винчестер, и черт меня дернул подключить его через SATA-USB кейс, а не просто напрямую к материнской плате….. Запуск хамелеоновского инсталлера… Некоторое ожидание… а он все не заканчивает и не заканчивает свои действия… в итоге повисли…. После перезагрузки мне была показана большая фига, которая оказалось еще и жопой. Похерились обе системы на винте, и Mac OS и Win7. Макос тупо перегружалась раз за разом, Винда тоже не отставала и восстанавливаться не хотела. :(

Подумалось мне, что это был просто какой-то косяк, который рано или поздно должен был случиться (как я ошибся!)… И у меня же есть ноутбук Samsung NP300E7A… сменил его родной винт на другой (там тоже стояла макось, настроенная на ноутбук).. Установка хамелеона с ноутбука на винт-жертву (все также через USB-кейс, а по-другому-то тут никак уже) привело к такому же результату!!

Выжила только Fedora… перегрузились в нее, с надеждой на лучшее. Развернул установочный образ макоси на флэшку, долго искал параметры, с которыми оно все-таки загрузилось, переустановка системы поверх старой, чтобы не похерить хранящиеся там данные почему-то никак не повлияло на загрузку, стало только хуже, ибо grub2 от Fedora тоже слетел.

И оказался я с двумя совершенно нерабочими компами, флэшкой с системой и еще одной мультизагрузочной флэшкой, на которой, по счастливому стечению обстоятельств, сохранился Live-образ Fedora 20.

УРА! Загрузились с Live-образа, восстановил grub, скачал Mac OS X Mavericks 10.9.0, нашел более-менее подходящий DSDT-файл (тот, что я использовал был недоделан), развернул на флэшку. Загружаемся… Поначалу меня ввело в заблуждение довольно долгое ожидание появления первоначального окна с выбором языка в инсталлере, я думал, что мы просто повисли. Инсталлер почему-то жестко тормозит, профайлер железок вообще повис, так что я его больше не запускал. Поставил систему, залил DSDT.aml, перегрузился… и наблюдаем сообщение монитора «out of range»… загрузчик выставил неверное разрешение экрана… Потыкав кнопки и, как следствие моих действий, увидел (в первый раз обрадовавшись) надпись о том, что отсутствует загрузчик винды на разделе… перегружаемся и тыкаем Enter (по умолчанию хамелеон выбирает маковский раздел для загрузки)… и слава яйцам, система заработала. Первое, что я сделал — это обновил загрузчик (пока что это тот же хамелеон, но из-за такой вот ситуации думаю перейти на Clover).

Сейчас занимаюсь вытаскиванием рабочих данных и установкой нужного мне софта. Не так много-то и надо: brew, vim, mc, nginx, mysql, php, chrome, ff, keepass, flex sdk… ну и по мелочи, всякие развлечения vlc, playonmac, battle.net, steam.

Я так и не понял правда чья это бага получилась — софта, железки или кривых рук?

Ах да… ноутбук-жертва выжила и даже работает, теперь вирусов на нем не будет. Отдал его на тестирование и привыкание к новой обстановке, если не понравится, придется ставить хрюшку. Пока минус только один (исключая глюк с двумя мониторами в ворде) — нет звука. Копаться в даташите от AD1986A — лень, хотя было бы время я бы попробовал настроить звук через DSDT (если конечно это возможно). Чем меньше сторонних и патченных кекстов в системе — тем лучше, ибо больше вероятность, что с последующим обновлением все будет в порядке.

На все про все было потрачено кофе, сигареты, 6 часов сна, 4 часа гостей и больше 12 часов возни с железками.

P.S. Я рано порадовался :) … Система снова слетела, пришлось переставлять и заново все настраивать. Поставил Clover. Заканчиваю настройку. Уже 10 утра… :)

Рубрика: Новости | Оставить комментарий

Banana Pi

banana-pi

Сегодня пришла по почте плата, ориентированная на разработчиков, под названием Banana Pi. Это китайский аналог Raspberry Pi, но немного усовершенствованный по характеристикам. В частности, в Raspberry Pi использован Broadcom BCM2835 ARM11 процессор с частотой 700Мгц, 256 или 512Мб RAM, а Banana Pi использует процессор AllWinner A20 Cortex-A7 Dual Core с частотой 1Ггц , 1Гб RAM + есть возможность подключения SATA-устройства, на борту присутствует инфракрасный порт.

banana-pi-2

Поставил туда Raspbian (специальная редакция Debian с менеджером LXDE). Все работает, загружается быстро, бегает по сайтам с помощью Midori довольно шустро (ставил Firefox — тормозит конечно, особенно Youtube). Воспроизведение видео с помощью VLC отжирает 40-50% ресурсов процессора. Система грузится с SD-карты.

Также присутствует 26 GPIO выводов для общения с внешними устройствами, есть разъем под LCD-экранчик и камеру.

В целом впечатления положительные, свои 3000 рублей (включая 1200 руб. за пересылку службой EMS) эта платка оправдывает. За каких-то 50 условных единиц, получаем вполне удобную машинку, которая может подключаться к монитору или телевизору посредством HDMI/RCA. На ней даже можно что-то делать. Благо консольный vim везде одинаков, будь то Windows, Mac OS или Linux-based система.

Пробовал поставить Android, что-то не получилось.. Под платку существует несколько образов систем: Raspbian, Lubuntu, OpenSuse и Android.

Рубрика: Новости | Оставить комментарий

Back to roots (Mac OS)…

Ура! Подарили мне реально хороший 22″ широкоформатный монитор. LG IPS LED 22EA53. Картинку отлично видно со всех сторон с любого угла обзора! Родное разрешение 1920×1080. Доволен как слон. Теперь на десктопе могу работать в Mac OSи. Ранее у меня стоял не менее хороший, но уже сильно устаревший Samsung 710N 2007 года выпуска, ни разу не подводил и до сих пор в рабочем состоянии! В силу того, что его родное разрешение 1280×1024, было очень неудобно работать, тупо не хватало ширины экрана, чтобы редактировать длинные строки не напрягая глаза. По весу очень легкий, навскидку не более полутора килограмм, питается от блока питания на 19 вольт. Поверхность экрана матовая. Присутствуют входы DVI, VGA, HDMI. Описывать не буду, в интернете есть множество (видео-)обзоров. От себя лишь хочу сказать, что монитор замечательный.

Рубрика: Новости | Оставить комментарий

Разработка и отладка FLASH приложения под линуксом

С этим пунктом сопряжены некоторые сложности и возможные неудобства. Подходящей бесплатной среды разработки лично я не нашел. Есть FDT (Free и Premium Edition от $29 в месяц), но возможно я с ним не до конца разобрался (позже посмотрю подробнее), но мне частенько выдавал сообщение, что та или иная фича недоступна. Поэтому я скачал Flex SDK и настроил Ant-конфиг для проекта — это дало мне возможность собирать проекты любой сложности. Однако компания Adobe прекратила дальнейший выпуск новых версии Flash-плеера, официально поддерживается лишь PepperFlashPlugin для Google Chrome и, соответственно, Debug-версии нет. Последняя обновляемая фиксами версия плеера является 11.2. Делать нечего, будем ставить 11.2.

yum localinstall http://linuxdownload.adobe.com/adobe-release/adobe-release-i386-1.0-1.noarch.rpm http://linuxdownload.adobe.com/adobe-release/adobe-release-x86_64-1.0-1.noarch.rpm

yum install flash-plugin nspluginwrapper nspluginwrapper.i686 alsa-plugins-pulseaudio libcurl

wget http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz -q -O — | tar xzf — libflashplayer.so

mv libflashplayer.so /usr/lib/flash-plugin/libflashplayer.so

restorecon -v /usr/lib/flash-plugin/libflashplayer.so

Вроде все поставилось и все работает. Запуск standalone debug версии приходится запускать через bumblebee

primusrun ./flashplayerdebugger
или
optirun ./flashplayerdebugger

Рубрика: Система | Оставить комментарий