четверг, 13 февраля 2014 г.

CubieBook - зарядка

Пришла схема контроля аккумулятора на S-8254A, пристроил ее на старую батарею (лет 5 ей, но почти не использовалась)

сразу вылезла проблема - схема не ограничивает ток заряда (она его вообще не контролирует).

Пришлось модернизировать (добавил компаратор)


схема

Сейчас при начале зарядки (когда ток большой) схема работает в импульсном режиме (частота примерно 0.5Гц) открывая и закрывая зарядной ключ

В итоге мой CubieBook держится на этой старой батареи гдето часа 3 в режиме просмотра фильма

среда, 12 февраля 2014 г.

CubieBook - Программы

оконный менеджер Mate - в репозитории от малины (для ностальгирующих по гному2)

deb http://archive.raspbian.org/mate wheezy main

apt-get update
apt-get install mate-core mate-desktop-environment

по скорости примерно как xfce, но удобнее (для меня)
-----------------
вот еще программы что я почти год назад скомпилировал для моего mk808 , идут и на кубике

там нужно устанавливать библиотеки из папки libs только не нужно ставить libmali  (не совместимая версия)

исходники тут

CubieBook - Разгон

попробовал я немного разогнать А20 на втором кубике

пристроил алюминиевую пластину на процессор и память (на термопасту), по периметру термоклеем закрепил чтоб не елозила
конечно лучше полноценный радиатор , но что было под рукой

изменил конфиг

[dvfs_table]
max_freq = 1200000000
min_freq = 400000000
LV_count =9
LV1_freq = 1200000000
LV1_volt = 1550
LV2_freq = 1100000000
LV2_volt = 1500
LV3_freq = 1008000000
LV3_volt = 1450
LV4_freq = 912000000
LV4_volt = 1400
LV5_freq = 864000000
LV5_volt = 1300
LV6_freq = 720000000
LV6_volt = 1200
LV7_freq = 528000000
LV7_volt = 1100
LV8_freq = 312000000
LV8_volt = 1050
LV9_freq = 144000000
LV9_volt = 1050

ну и задал гувернер и параметры

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

вроде все работает и не глючит

запускал расчет Пи(pi_css5) на милион знаков, до и после разгона
39.15 sec. (real time) и 34.43 sec. (real time)

CubieBook - Подсветка ЖК экрана

Как я делал подсветку подключенного по LVDS экрана

В моем экране от ноутбука стоит подсветка на газоразрядных лампах с инвертором. Она имеет отдельные выводы (питание, разрешение, яркость)

питание у нее 12 вольт, разрешение вместе с управлением яркостью к PB2 (выход PWM) через RC цепочку [img]http://upload.wikimedia.org/wikipedia/commons/e/e7/Low_pass_filter.png[/img]

разрешение подцепил к порту PH7, а управление яркостью к PB2 (выход PWM) напрямую

но толи инвертор глючит, толи так задумано - нужно дергать разрешение после установки уровня яркости иначе иногда просто потухает подсветка


конфиг такой

[lcd0_para]
...
lcd_pwm_not_used = 0
lcd_pwm_ch = 0
lcd_pwm_freq = 10000
lcd_pwm_pol = 1
lcd_max_bright = 100
lcd_min_bright = 50
...
lcd_bl_en_used = 1
lcd_bl_en = port:PH07<1><0><default><1>
...
lcd_pwm_used = 1
lcd_pwm = port:PB02<2><0><default><default>


потом начал искать драйвер этого дела, и ... не нашел

пришлось писать самому

теперь яркость можно регулировать так

echo 70 > /sys/class/backlight/sunxipwm-bl/brightness

ну и всякими гуишными ползунками

CubieBook - Подключение внешней RTC (часов реального времени)

решил написать тут инструкцию на примере ds1307 (i2c интерфейс) и linux

1. Физическое подключение

к кубику 4 провода
выводы
кубик - ds1307
общий = 4
+5вольт = 8
PB19 = 5 (data)
PB18 = 6 (clk)

2. Конфигурация

   [twi1_para]
    twi1_used = 1
    twi1_scl = port:PB18<2><default><default><default>
    twi1_sda = port:PB19<2><default><default><default>

3. Проверка

ставим пакет i2c-tools

запускаем сканирование

i2cdetect -y n
  где n номер шины i2c   (список шин i2cdetect -l)

программа просканирует шину и выведет список устройств в сетке
там будет либо адрес устройства либо UU - если устройство используется

если следовать данной инструкции, то устройство должно появится на шине 1

i2cdetect -y 1

root@cubieez:~# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --                       

можно пообщаться напрямую

секунды
i2cget -y 1 0x68 0
минуты
i2cget -y 1 0x68 1
часы
i2cget -y 1 0x68 2

смещение есть в даташите на ds1307

стоит иметь ввиду что при первом подключении к питанию ds1307 встает на тормоз (т.е не считает), необходимо ее активировать
"бит активации" это старший бит секунд, его нужно сбросить

i2cset -y 0 0x68 0x00 0x00

в принципе это делается драйвером часов при сохранении даты в rtc

4. Конфигурация и загрузка драйвера

Перед этим лучше проверить - может загружены другие драйвера RTC например встроенный в SOC
например так ls /dev/rtc*
или тут ls /sys/class/rtc

просто обычно по умолчанию linux использует /dev/rtc0, а это первый загруженный драйвер


далее активация

   echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
    modprobe rtc-ds1307

модуль rtc-ds1307 поддерживет следующие чипы
"ds1307" "ds1337" "ds1338" "ds1339" "ds1388" "ds1340" "ds3231" "m41t00" "mcp7941x" "pt7c4338" "rx8025"

соответственно нужно менять строку echo ds1307... подставляя нужный идентификатор

далее "человеческие" команды работы с часами

hwclock -r чтение и вывод на экран
hwclock -s чтение и установка системного времени
hwclock -w запись в rtc системного времени

по умолчанию hwclock читает /dev/rtc0
если нужны другие часы то задаем через обцию -f
hwclock -r -f /dev/rtc1

ЗЫ: пробовал я использовать встроенную RTC в А20, но чтото у меня получилась точность хода ужасная, да и питание нужно 1.3в

CubieBook - подключение микрофона

в моем проекте встала такая задачка , причем микрофон стерео

AllWinner SOCs вообще то имеют вход для микрофона, но создатели кубиков не стали заморачиваться на эту тему и просто не развели на плате эти выводы (как и другие не менее полезные)

Вобщем сейчас кубик имеет 2 входа звука (оба стерео), это линейный вход и вход для fm приемника (контакты FMINR FMINL)
но эти входы предназначены для более сильного (с более высокой амплитудой) сигнала чем микрофон и подключенный туда микрофон в лучшем случае будет очень тихо работать

Поэтому если необходим микрофон нужно усилить его сигнал с помощью предусилителя, например я собрал по такой схеме(для электретного микрофона), и подключил к входам FM на разъеме расширения

теперь конфигурация

[audio_para]
audio_used = 1
capture_used = 1
audio_pa_ctrl = port:PH15<1><default><default><1>


проверяем наличие устройства захвата звука
arecord -l

и переключаем запись на вход FM
для этого необходимо прописать одно из следующих значений в контрольный регистр ADC Input Mux
0 - linein
1 - fmin
7 - micin
(возможно 0 и 7 перепутаны местами я не проверял)
выясняем номер регистра ADC Input Mux по команде amixer contents
в появившемся списке находим ADC Input Mux и запоминаем значение из параметра numid=(24 у меня)

далее даем команду выбора устройства захвата звука

amixer -c 0 cset numid=24 1 
где 0 - номер звуковой карты
24 - номер регистра ADC Input Mux
1 - выбран вход FM

ссылка по теме

CubieBook

Вообщем был у меня ноут сломанный (без матери) и появился кубик2, и решил я их скрестить

вот что получается 

ядро с изменениями

зы: предвидя вопрос - зачем это нужно? отвечаю - просто так.


текущие проблемы:
- не будится после suspend
- не знаю как грузить с жесткого (пока ядро на сд карте)
встречал упоминание о lilo но не встречал рецептов приготовления