Разработка прошивок для медиаплееров на SoC Allwinner A10 | Именно разработка.



Реп: (137)
Тема создана для разработки прошивок для отдельного класса устройств:
медиаплееров (также известных как медиабоксы, miniPC, set-top-box), созданных на платформе

SoC Allwinner A10

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

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


Известные устройства:
Mele A100
Mele A200
Mele A1000
Mele A2000
Mele A3600
Mele A3700
Iconbit Tucan Smart
Digma HDMP 600
3Q AB290HW
MiniX
MK 802
Measy A5A
Measu U1A


Основные задачи:
1. Создание ядер (kernels), оптимизированных под данный класс устройств.
2. Решение проблем со специфичными устройствами (ИК-пульты, сетевые карты, SATA/USB диски, устройства ввода/вывода аудио и видео - HDMI/SPDIF/USB, видео(веб)камеры, клавиатуры, джойстики и прочие).
3. Адаптация/модификация Андроид различных версий.
4. Создание законченых решений для использования данного класса устройств помимо Андроид'а (пользовательских/серверных версий Linux, "чистого" медиацентра и иных вариантов использования).



Реп: (47)
надо бы вводную накидать для начинающих. потом размещу в этом посте.

SoC Allwinner A10

Утилиты разработчика, работа с образами прошивок
Утилиты
Работа с образами прошивок

Linux

Android


(*) рекомендуется

Сообщение отредактировал Subchaser - 15.07.13, 09:55



Реп: (861)
https://wiki.linaro.org/ , http://releases.linaro.org/ - Линаро

http://linux-sunxi.org/Main_Page , http://dl.linux-sunxi.org/nightly/latest/ Родное ВиКи + последние ночные ядра и хв-паки.

http://guillaumeplayground.net/mele-armhf-...-kernel-update/ - тут человек компилит линукс-ядро+все возможные модули к нему.

Потом еще интересностей добавлю. Можете этот пост в шапку закрепить.

Сообщение отредактировал kostyamat - 15.02.13, 00:22



Реп: (861)
Ребята, объясните идиоту как скомпилить драйвер. Не Мейкается и все тут.

Короче, купил я USB-Ethernet Conceptronic GIGU (Gigabit)

Скачал драйвер отсюда http://www.drivers-download.com/Drv/SMSC/LAN7500/
Отсюда забрал сурцы ядра http://guillaumeplayground.net/3-0-42-tuned-sources/ у меня текущее от этого товарища. Кстати в сурцах тоже есть исходник модуля smsc75xx
Сурцы распаковал правильно, make menuconfig работает, симлинк на /lib/module/kernel/3.0.42/build сделал, но в сурцах нету дефолтного конфиг-файла от работающего ядра. Я чего-то включал\выключал и т.п. (ну нубствую по тихому), модуль не мейкается. Ни с сурцов ни со скачаного архива с драйвером. :hysterics:
Короче никак не могу настроить для сборки этого модуля.

Очень прошу, сделайте модуль и по возможности объясните как конфигурить правильно make menuconfig на будущее. А может есть способ по-проще?

Сообщение отредактировал kostyamat - 16.02.13, 02:22



Реп: (137)
kostyamat @ 16.02.2013, 03:20 *
в сурцах тоже есть исходник модуля smsc75xx
Для начала надо попробовать с ним.
Снесите все, что уже натворили и распакуйте заново.
kostyamat @ 16.02.2013, 03:20 *
в сурцах нету дефолтного конфиг-файла от работающего ядра
В папке /arch/arm/configs есть дефолтные конфиги. С названием sun4i_defconfig - тот, что нужно. Команда make ARCH=arm sun4i_defconfig в корне дерева сорцов сделает его рабочим. Затем make ARCH=arm menuconfig. Теперь в меню последовательно выбираем пункты "Device Drivers" -> "Network device support" -> "USB Network Adapters" -> и теперь на пункте "SMSC LAN75XX based USB 2.0 gigabit ethernet devices" жмем пробел (или латинскую "M"). И знак слева от названия пункта сменится с "< >" на "<M>" (то есть будет сборка модуля).
Теперь "Exit"... пока не предложит сохранить конфигурацию. Сохраняем. Можно приступать к сборке. Запускаем, ждем. В папке /output должно появиться ядро и модуль smsc75xx.ko

NB! Конфигурить и собирать надо именно для арм! То есть make ARCH=arm...
И компилятор желательно соответствующий.

ЗЫ: Достать конфиг из собранного ядра можно скриптом /scripts/extract-ikconfig.
sh extract-ikconfig /path/to/kernel/uImage > /path/to/new/config/.config
И скопировать получившийся .config в корень дерева исходников.
ЗЗЫ: соберу, но через день-другой.

Сообщение отредактировал tuscanman - 16.02.13, 03:53



Реп: (861)
Итак, сделал все выше сказанное командой
make modules (или надо было make ARCH=arm modules ? Так вроде же уже делал настройку на arm). Скомпилилось 72 модуля. :suicide:

Ладно, фигня! Еле нашел куда оно его выплюнуло (чет они все в /usr/src/linux-allwinner/drivers/net/usb оказались или в других директориях соответственно) - тоже ерунда. Но проблема в том, что modprobe матерится FATAL: Error inserting smsc75xx (/lib/modules/3.0.42/kernel/drivers/net/usb/smsc75xx.ko): Invalid module format

root@Mele:/usr/src/linux-allwinner# modinfo smsc75xx
filename: /lib/modules/3.0.42/kernel/drivers/net/usb/smsc75xx.ko
license: GPL
description: SMSC75XX USB 2.0 Gigabit Ethernet Devices
author: Steve Glendinning <steve.glendinning@smsc.com>
author: Nancy Lin
srcversion: 9FA4E2AF045D4902A98249D
alias: usb:v0424p7505d*dc*dsc*dp*ic*isc*ip*
alias: usb:v0424p7500d*dc*dsc*dp*ic*isc*ip*
depends: usbnet
vermagic: 3.0.42 preempt mod_unload modversions ARMv7
parm: turbo_mode:Enable multiple frames per Rx transaction (bool)

а любой родной модуль, ну скажем zaurus
root@Mele:/usr/src/linux-allwinner# modinfo zaurus
filename: /lib/modules/3.0.42/kernel/drivers/net/usb/zaurus.ko
license: GPL
description: Sharp Zaurus PDA, and compatible products
author: Pavel Machek, David Brownell
srcversion: 63C50C9F09DEC7762B4FD9F
alias: usb:v046DpC11Fd*dc*dsc*dp*ic02isc0Aip00*
alias: usb:v07B4p0F02d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v22B8p6425d*dc*dsc*dp*ic02isc0Aip00*
alias: usb:v22B8p6027d*dc*dsc*dp*ic02isc0Aip00*
alias: usb:v04DDp9050d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp9032d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp9031d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp8007d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp8006d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp8005d*dc*dsc*dp*ic02isc06ip00*
alias: usb:v04DDp8004d*dc*dsc*dp*ic02isc06ip00*
depends: usbnet,cdc_ether
vermagic: 3.0.42 preempt mod_unload modversions ARMv7

И в чем прикол? :sveta:
Кстати, можно компилить отдельную категорию типа так make modules SUBDIRS=drivers/net/usb


Сообщение отредактировал kostyamat - 16.02.13, 06:22



Реп: (47)
kostyamat, что то выдает что ты это делаешь с мыслью собрать и подложить только нужный драйвер.
Оставь надежду, если это так, специально сделано что бы нельзя было так делать...

tuscanman, я тут удивляся проблемам с USB, на Mele похоже USB разведен через встроенный хаб и никакого тебе OTG?



Реп: (861)
Subchaser @ 16.02.2013, 08:32 *
что то выдает что ты это делаешь с мыслью собрать и подложить только нужный драйвер.

Так и есть, хочу только модуль. Статья хороша, но я это и так знал, поэтому и скачал сурцы текущего ядра. Vermagic одинаков. Правда, что то мне подсказывает, что на аппарате крутится кросскомпилированое ядрецо, а я собираю модуль на самой Меле. Неужели версии компиляторов могут вносить нюансы? Грустно. Или таки надо было доставать конфигурации из работающего ядра, я поленился, использовал дефолтный, как tuscanman подсказал.

Что делать? На компе под Убунту среду разворачивать и все с ноля компилить? Боюсь, я не справлюсь.


ОТГ разведен до разъема на плате, но пользователю, внешне, не доступен.

Сообщение отредактировал kostyamat - 16.02.13, 13:39



Реп: (47)
kostyamat @ 16.02.2013, 14:25 *
поэтому и скачал сурцы текущего ядра

уверен ? :) исходников ядра с почининеными всеми болячками как в стоковом я не встречал ни одного, ближе всего от i-onik TP8-1200 да и то они УГ.

kostyamat @ 16.02.2013, 14:25 *
Vermagic одинаков.

то то и оно что одни и те же сырцы можно с одним разным флагом собрать и они будут кардинально несовместимы...
а ты пытаешь из заведомо других исходников собрать...

kostyamat @ 16.02.2013, 14:25 *
среду разворачивать и все с ноля компилить? Боюсь, я не справлюсь.

какую среду, о чем ты ? там надо только скачать готовый кросс.



Реп: (861)
Subchaser @ 16.02.2013, 11:47 *
уверен ? :) исходников ядра с почининеными всеми болячками как в стоковом я не встречал ни одного, ближе всего от i-onik TP8-1200 да и то они УГ.

http://guillaumeplayground.net/share/linux....0.42-4.tar.bz2 вот ядро на аппарате, а вот исходники, которые я качал http://guillaumeplayground.net/share/linux...-3.0.42.tar.bz2

Среду для кросскомпилирования я имел в виду.



Реп: (47)
kostyamat @ 16.02.2013, 15:16 *
вот ядро на аппарате, а вот исходники

хм, выложенно аккуратно, конфиг есть, а можно рискнуть...
я бы для чистоты только поставил бы виртуалку с дебианом и тем же кроссом, там делов на полчаса.

P.S. Но все таки лучше не париться с этой русской рулеткой и собрать целиком.

Сообщение отредактировал Subchaser - 16.02.13, 14:58



Реп: (3)
Установка среды кроскомпиляции под убунту :
apt-get update
apt-get install gcc-arm-linux-gnueabi

Под дебиан:
echo "deb http://www.emdebian.org/debian/ lenny main" >> /etc/apt/sources.list
apt-get update
apt-get install gcc-4.*-arm-linux-gnueabi
вместо * поставить номер сабверсии.

Я сейчас вообще компилю через coLinux, оказалось мега удобно.
По скорости компиляции на чистой линухе ядро компилится 3-4 минуты, на coLinux минут 5.
Могу дать образ CoLinux с установленым компилятором. Могу дать образ виртуалки с убунту и с установленным компилятором.

Но коллеги предлагаю определится с очень важным момментом: версия ядра! Предлагаю выбрать исходники ядра, которые будем пилить, что бы у всех были одинаковые, а то я уже заколебался ядра качать и видеть:
# insmod joydev.ko
insmod: init_module 'joydev.ko' failed (Exec format error)



Реп: (137)
kostyamat @ 16.02.2013, 07:12 *
сделал все выше сказанное командой
make modules

tuscanman @ 16.02.2013, 04:49 *
make ARCH=arm
Я же указывал...
Subchaser @ 16.02.2013, 11:32 *
никакого тебе OTG?
Есть он там, но не распаян наружу.
kostyamat @ 16.02.2013, 14:25 *
Неужели версии компиляторов могут вносить нюансы?
Еще как!
Поэтому лучше всего собрать полностью ядро и модули и их применять.

Sanoend @ 17.02.2013, 20:18 *
предлагаю определится с очень важным момментом: версия ядра!
Имхо, для начала взять с linux-sunxi.org ветки 3.0.х



Реп: (861)
tuscanman @ 17.02.2013, 20:29 *
make ARCH=armЯ же указывал...


Так ведь я на целевой машине, то есть на Меле компилил. Неужели и там это надо указывать?

Зы. Вытащил конфиг из рабочего ядра. Так компилятор с ним начал задавать кучу вопросов. На первом же вопросе, типа : какой тип архивации использовать и пять вариантов, - я и завалился. Короче, никак мне не получить модуль для моей гигабитной карты. :sveta:

Добавлено 17.02.2013, 22:47:

Sanoend @ 17.02.2013, 17:18 *
Могу дать образ CoLinux с установленым компилятором.

Давай, может так что умное получится.

Зы. Может кто в прямом эфире, по teamviewer например, мне урок преподаст? Говорят, что один раз увидеть...
В скайпе ник такой же.

Сообщение отредактировал kostyamat - 17.02.13, 22:50



Реп: (47)
kostyamat @ 16.02.2013, 15:16 *
а вот исходники, которые я качал

Да, я нашел его пост по твоей наводке, обязательно попробую, мужик вроде грамотный...

tuscanman @ 17.02.2013, 23:29 *
Имхо, для начала взять с linux-sunxi.org ветки 3.0.х

смотрел тот что stage-3.0, грустное зрелище, в смысле под дроид, поломали OpenGL, разве что под линукс попробовать, либы вроде лежат.
И у меня так и не поднялся WiFi, надо чинить....
Это не считая их застарелых проблем с NAND-драйвером на mk805, не работающем OTG...

я счас балуюсь в основном 3.0.42 (matson-hall) и 3.0.36 (shaun2029, branch allwinner-v3.0-android-v2)

tuscanman, ты же вроде собирал обратно в образ феникса уже? брось ссылку или инфу плз на вменяемый способ это сделать.

Сообщение отредактировал Subchaser - 18.02.13, 07:47



Реп: (47)
kostyamat @ 17.02.2013, 23:47 *
Давай, может так что умное получится.

в папке scripts ядер под A10 лежат 3 скрипта которые делают все нужное.
  • build_sun4i-lite.sh - Minimal
  • build_sun4i.sh - Linux
  • build_sun4i_crane.sh - Android


в них может понадобиться поменять CROSS_COMPILE=arm-none-linux-gnueabi-
например для CodeSourcery 2010.09 нужен CROSS_COMPILE=arm-linux-gnueabihf-
$ export PATH="/opt/cross/arm-2010.09/bin:$PATH"
$ scripts/build_sun4i.sh kernel


kostyamat @ 17.02.2013, 23:47 *
Зы. Вытащил конфиг из рабочего ядра. Так компилятор с ним начал задавать кучу вопросов. На первом же вопросе, типа : какой тип архивации использовать и пять вариантов, - я и завалился.

Так и будет часто, нужно включить смекалку и вдумчиво ответить изредка полагаясь на рекомендуемое. или делай make menuconfig :)
Вот только я не мойму, с бинарями в выложен был конфиг, с ним не должно быть ни одного вопроса.

kostyamat @ 17.02.2013, 23:47 *
Короче, никак мне не получить модуль для моей гигабитной карты.

гы. на встроенной в SOC карте вроде народ и 100 получить не может, видел недавно фиксы и замеры. а по USB будет IMHO еще меньше...

tuscanman @ 17.02.2013, 23:29 *
Есть он там, но не распаян наружу.

Ога, придется паять, заодно, в первую очередь нужен serial...

Сообщение отредактировал Subchaser - 18.02.13, 08:10



Реп: (3)
Subchaser ну сериал распаять вообще не проблема, там даже разъём под это дело есть. Я планирую поставить туда преобразователь на PL2103 и вывести наружу мини ЮСБ, так удобнее будет цеплять.
Ещё хотелось бы поинтересоваться зачем тебе OTG ?

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



Реп: (47)
Sanoend @ 18.02.2013, 13:53 *
Ещё хотелось бы поинтересоваться зачем тебе OTG ?

да много для чего, большинство вменяемых прошивок до полной инициализации на нем держат adb, так что можно прицепится и посмотреть шеллом что пошло не так даже без serial.
плюс в CWM Recovery есть возможность по adb заливать апдейты, расшаривать все нужные диски и т.п.

Кстати, Linux'оидам на заметку, накидал готовый набор правил для adb по USB - 51-android.rules, нужно расскоментить нужный, наш:
#Google
#SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"

Путь куда ложить в шапке файла.

Sanoend @ 18.02.2013, 13:53 *
Я портировал наработки со стандартного GIT в ядро 3.5.2

"что сие означает" ? в смысле "стандартный GIT" от чего ? :)

Sanoend @ 18.02.2013, 13:53 *
т.к. девайс активно используется и по своему прямому назначению, а не только для экспериментов.

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



Реп: (861)
Subchaser @ 18.02.2013, 06:09 *
гы. на встроенной в SOC карте вроде народ и 100 получить не может, видел недавно фиксы и замеры. а по USB будет IMHO еще меньше.


Вообще-то с текущим ядром от того дядьки, ссыль на которого выкладывал выше, 3.0.42 и своим перебранным script.bin (он же используется в моей сборке убунту-сервер, правда с выключенным НАНД), я стабильно получаю 100мб\сек в обе стороны, причем практически без нагрузки на проц. Вообще, с его ядром и интефейс двигается поактивнее. Почему по USB должно быть меньше с гигабитным адаптером?

Стандартный сценарий использования:
В фоне трансмишин качает до 1,2мбайта\с (линия у меня 10мб), семья 3Д рипы (тяжелые) по DLNA на Самце смотрит, а я в это время с аппаратом по SSH/SFT работаю. Нагрузка на проц больше 60-70% ни разу не подымалась, да и свап пустой почти. Эх.... Так бы андроид работал, цены б аппарату не было бы. Кстати прикол, Хром на убунту работает быстрее чем штатный под андроидом. :rofl:

И ниче, все тянет. Ядришко у мужика нормательное. :good: Вот только я никак среду собрать не в состоянии, половины пакетов в репах нету или не те версии. Умаялся. И на Кубунту на ноуте пробовал и на CoLinux и на самой Меле. Пошло только на Меле, но собралось криво. :hysterics: Я уже понял почему линуксоидов "красноглазиками" называют, у самого уже глаза красные и хронический недосып. :suicide:

Сообщение отредактировал kostyamat - 18.02.13, 18:39



Реп: (3)
kostyamatкак и обещал образ coLinux с установленным тулчейном Изображение
Subchaser под стандартным имелось в виду вот это https://github.com/linux-sunxi/linux-sunxi/.../arm/mach-sun4i


Полная версия   Текстовая версия

Помощь   Правила

Сейчас: 28.03.24, 18:59