понедельник, 22 июня 2009 г.

PCAP в ванильном ядре

Спешите видеть: linux/kernel/git/torvalds/linux-2.6.git/drivers/mfd/ezx-pcap.c.

Чтобы это еще кто-то юзал...

А я все не могу победить слип в этом самом bp.

upd: pcap - это контроллер специального назначения, на котором висит почти вся периферия в ezx-телефонах: тач, звук, adc, часы, регуляторы питания, кнопка включения и еще всякие лампочки и вибраторы. более новая инкарнация этой мерзенькой железки (atlas) - заведует тем же самым, но в мотобагиксах, при чем имеет тот же интерфейс (прерываения и регистры почти совпадают).

воскресенье, 14 июня 2009 г.

Как пользоваться boot-usb и gen-blob

Кратко о упоминаемых в заметке терминах:

Flash mode - режим работы телефона, в котором невозможна связь с сетью, так как линейный процессор ждет обновления прошивки.
MBM - загрузчик с красным экраном, через который работают мотороловские утилиты прошивки.
Gen-blob - загрузчик openezx, обладающий большим набором возможностей, чем MBM. Шьется вместо ядра linux, умеет грузить ядро с карты памяти и с usb без перевода в flash mode, умеет шить произвольные адреса флеша.
Boot-usb - утилита для работы с загрузчиками MBM и gen-blob с большой машины.

Последние версии ядра openezx можно запустить только через gen-blob. Сам gen-blob может работать в двух вариантах: прошитым по адресу 0xa0800 вместо ядра или запущенным по usb через mbm. Во втором случае линейный процессор уже переведен в flash mode и работа с сетью будет невозможна после загрузки ядра, но для прошивки этого достаточно.

Gen-blob обрабатывает нажатия на кнопки vol+ и vol- (левая сторона устройства). Если во время его запуска зажата vol+, он переходит в режим USB (как MBM) и ждет управляющих комманд от boot-usb. Если зажата vol-, он показывает boot menu с возможностью выбора разных ядер с карты.

Чтобы прошить файл в память телефона по определенному адресу, нужно сделать три вещи:


  • Каким-то образом запустить gen-blob

  • Во время запуска зажать vol+

  • Послать адрес и данные через boot-usb



Рассматриваем подробнее:

Самый простой способ запустить gen-blob - запусть через MBM. Для этого нужно выполнить такие действия:


  • Полностью выключить телефон

  • Включить с переводом в flash mode - зажатой кнопкой голосового меню (нижняя на правой стороне)

  • Дать от пользователя root команду boot_usb gen-blob на большой машине. При этом boot_usb должен находиться в PATH (или вызваться по полному пути), а файл gen-blob должен быть в текущем каталоге



После того, как на экране появилось сообщение о готовности принимать команды по USB, можно работать из boot_usb с gen-blob.

Простой пример: прошивка файла по адресу 655360. boot_usb flash 655360 mtd.

Небольшое уточнение по поводу прошивки ядра: чтобы прошить ядро или gen-blob по адресу 0xa0800, нужно создать временный файл размером 0x800, заполненный нулями: dd if=/dev/zero of=/tmp/mtd bs=2048 count=1, после чего дописать в его конец нужные данные: cat gen-blob >> /tmp/mtd и после этого, прошить файл по адресу 0xa0000, а не 0xa0800.

ps. пребуются добровольцы для описания этого в вики

upd: не 0xa800 а 0xa0800

Тестируем 2.6.30

Начинаем тестирование сборки на ядре 2.6.30.

Необходимые для запуска ингридиенты:


  • Загрузчик gen-blob зашитый по адресу 0x000A08000 [1]

  • Утилита boot-usb на большой машине [2]

  • Раздел с ext2 на карте памяти с рутфс

  • Рутфс дистрибутива Angstrom со всеми зависимостями для кутопии [3]

  • Сама кутопия [4]

  • Ядро 2.6.30-ezxdev [5] и модули [6]

  • Инициализатор mux TS07.10 [7]

  • Скрипт [8] и конфиг Qtopia [9] в /etc/

  • Калибровки тачскрина [10]



upd: правильный адрес ядра - 0x000A08000

суббота, 13 июня 2009 г.

Консоль на EMU

Что-то получилось:



Патчем ядра переключил ноги 39 и 53 из режима usb в режим uart (ffuart). Регистры EOC (чип EMU порта) не трогал. В будущем хочется переключать режимы uart/usb автоматически, по показаниям eoc и pcap. Мусор на скриншоте - скорее всего недостатки схемы.

Ссылки: схема и описание, патч.

пятница, 12 июня 2009 г.

Пингвин жирный...

Киборгизированный:


total used free shared buffers cached
Mem: 44352 42844 1508 0 228 12160
-/+ buffers/cache: 30456 13896
Swap: 32760 16048 16712


Утопический:


total used free shared buffers cached
Mem: 46552 45652 900 0 144 26844
-/+ buffers/cache: 18664 27888
Swap: 0 0 0


Такие дела

ps. образы ведроида тут
pps. нихера там не пашет, можете даже не качать

понедельник, 8 июня 2009 г.

Сериал консоль на EMU

Оказывается, вот этот фокус не работает на втором поколении. Пины нормального порта туда не подведены - только ноги 53 и 39 (usb).

Попробовал переключить EOC во второй режим UART (ноги 53 и 39 выводятся на usb порт) и "подрыгать" ногами - ничего со стороны хоста не увидел. Со стороны аппарата rx тоже все время 0. Драйвер сериал порта на gpio - тоже писать придется.

Попросил припаять к конвертеру диоды для индикации RX и TX - завтра попробую еще.

upd: все-таки туда можно сконфигурировать FFUART. утром попробую

воскресенье, 7 июня 2009 г.

В порядке эксперимента

Пока не знаю, нужен ли нам все-таки форум, но в прорядке экперимента, можно пользоваться этим: /ezx/ .
Модерация в том виде, в каком она есть не мф, отсутствует, движок аскетичный, но удобный и многим привычный.

Мотофан.jpg

Помним, любим, скорбим.




копирайты:
оригинальная картинка стянута с какой-то имижборды, локализовано паном Hartois

Openezx 2.6.30-rc8

Как всегда, работает "почти все, почти хорошо". По пунктам

* gsm (ts0710) переписан и работает стабильно
* звук поломали в апстриме, но лечится патчами (а может в гите уже починеный)
* сеть по usb работает только если бутать по нему же
* карта
* внутренний флеш, при чем с нормальной скоростью записи
* тач, подсветка, все кнопки
* вибра
* блютуз, включение выключение питание на него
* получения параметров батареи (% заряда) через /sys и /proc/apm
* обрабатывается подключение/отключение кабелей ac и usb, состояние доступно через /sys
* старт/стоп процесса заряда при подключении кабеля (с патчем на pda_power)
* слип и глубокий сли (idle и mem). для deep-sleep (mem) нужно патчить lbl (мотороловский бут)

не работает:

* gprs
* камера

глюкает:

* adc (тач и батарея)
* слип - то одно отвалится, то другое упадет. bp очень любит этим заниматься

упд: звук в гите совсем поломан. сглазил наверное

пятница, 5 июня 2009 г.

Написание мультиплексоров прерываний - заразно

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

Почему понял - сам захотел написать демультиплексор прерываний на EOC (чип usb порта на gen2).