Author | Message |
---|
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 09.11.2010 16:07 | |
| В этот топик буду скидывать данные по компиляции собственного ядра. Самый важный вопрос - для чего это вообще нужно. В исходниках ядра, которые выложили B&N, видно, что поддержка нашего процессора (Samsung S3C6430) и контроллера e-ink (Epson S1D13521) взята из старших версий ядра и портирована под 2.6.27. Насколько это верно - не мне судить, но такой подход вполне может быть ошибочным. Непонятно высокое потребление батареи в режиме ожидания тому подтверждение.
B&N выложили исходники ядра тут: http://www.barnesandnoble.com/nook/legal/index.asp?PID=35684&cds2Pid=3 5611
В файле nook-source-code.zip есть патченый линукс 2.6.27 для устройства.
Для сборки удобнее всего использовать Sourcery G++ Lite: http://www.codesourcery.com/sgpp/lite/arm/portal/release1293 Неплохая инструкция по сборке ядра этим компилятором лежит тут: http://tjworld.net/wiki/Android/Linux/ARMCrossCompileOnIntel#Installat ion
Я использую такую переменную для коммандной строки:
Code: | export MAKE_NOOK '-j2 O=../kernel-2.6.27 CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm EXTRA_AFLAGS=-mpfu=neon' |
на уровень ниже исходников создана папка kernel-2.6.27, в которую и попадает откомпилированное. Для сборки надо выполнить такую команду:
Code: | make $MAKE_NOOK bravo_custom_defconfig
|
где bravo_custom_defconfig - имя конфиг файла из папки arch/arm/configs/. Именно такого файла там нет, но можно выбрать один из имеющихся bravo_*_defconfig.
Если надо внести изменения в конфиг, то выполняется команда
Code: | make $MAKE_NOOK menuconfig |
Затем выполняется команда на сборку ядра и модулей:
Code: | make $MAKE_NOOK zImage modules |
ядро будет лежать в файле arch/arm/boot/zImage (размер около 1.9мб), а модули раскиданы по всей папке и их надо искать по расширению .ko.
Для очистки используется команда
Code: | make $MAKE_NOOK mrproper |
Я не стал разбираться, как записать ядро в готовую систему, потому добавляю его в прошивку и перепрошиваюсь. Если кто-то знает другой безопасный метод - буду рад его услышать.
Внимание По состоянию на 09.11.2010 известно точно, что предоставленые B&N исходники не содержат конфиг для сборки 100% рабочего ядра - не работает e-ink экран.
Update 15.12.2010 Версия рабочих исходников с моими правками, дописанным драйвером e-ink экрана, поддержкой multitouch в драйвере тачскрина: http://runserver.net/nook/nook_source_nomad.tbz
Last edited by Nomad1 on 15.12.2010 15:23; edited 1 time in total |
|
| |
frei Бывалый участник форума
Joined: 27 May 2010 Posts: 130
| Posted: 09.11.2010 16:46 | |
| Если внимательно поглядеть на покетбук, то увидим, что они юзают 2.6.18 и 2.4.18.
В покетбуке АРМ, и в нуке АРМ. В покетбуке 2.6 (а то и 2.4), и в нуке 2.6... е-инки одинаковые... В нуке в довесок только а) цветной экранчик и б) собственно, андроид. При одинаковых веткая ядра, в целом одинаковом оборудовании мы должны иметь приблизительно одинаковое время работы. Но нет, нук живет сильно меньше. Мое ИМХО - во всем повинна софтварная надстройка в виде БН-овского андройда.
В общем, для начала предлагаю внимательно поглядеть на исходники ядра покетбука, сравнить с нуковскими... Ну и дальше уже думать... |
|
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 09.11.2010 17:02 | |
| теоретически, в слипе не работает андроид вообще. исследования в другом топике показали, что устройство полноценно отключается (по крайней мере, счетчики аптайма об этом говорят), но потребления от этого меньше не становится. хз, что именно дает такой эффект, может даже и процессор. в любом случае, это надо изучать. как минимум, с помощью отладочной версии ядра и поддержкой других видов энергопотребления. но пока полноценно ядро собрать не получается.. _________________ Twitter: @NomadRunserver |
|
| |
supremacy Искушенный участник форума
Joined: 02 Nov 2010 Posts: 60
| Posted: 09.11.2010 17:16 | |
| frei wrote: | В покетбуке АРМ, и в нуке АРМ. |
в покетбуке FreeScale i.MX 357 а у нас Samsung S3C643 |
|
| |
frei Бывалый участник форума
Joined: 27 May 2010 Posts: 130
| |
| |
supremacy Искушенный участник форума
Joined: 02 Nov 2010 Posts: 60
| Posted: 09.11.2010 17:47 | |
| Ну так 301 и не сравнить с Nook, я говорю про новые модели 602, 603 |
|
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 09.11.2010 17:55 | |
| думаю, в покетбуке 602 такой же процессор, как и у нас. суть не в том - портировать чистую С/С++ программу и удалить Андроид можно, но как-то очень не интересно и полностью не кастомизабельно.. _________________ Twitter: @NomadRunserver |
|
| |
frei Бывалый участник форума
Joined: 27 May 2010 Posts: 130
| Posted: 09.11.2010 18:54 | |
| Я говорил лишь о том, чтобы посмотреть на ядро покетбука - что именно в нем отвечает за работу с еинком и прочими флэшками-динамиками, раз уж оборудование похожее... |
|
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 09.11.2010 19:10 | |
| вот что отвечает за e-ink: libroom.net/viewtopic.php?t=13564 к сожалению, нам эти знания бесполезны.
Добавлено спустя 4 часа 35 минут 6 секунд:
Итого, пробелы в выложеных сорцах: - какие-то драйвера идентификации устройства:
Code: | <6>bravo_hw_version: Initializing Bravo Hardware Version <6>bravo_hw_version: Configuring Bravo Hardware Version <6>bravo_hw_version: Bravo Hardware Version configuration complete
|
- драйвера TPS65181 (http://focus.ti.com/docs/prod/folders/print/tps65181.html) - поддержка устройства /sys/power/idle; - гипотетический патч или комбинация параметров для активации e-ink;
что характерно, не получается определить, какой из этих пунктов не дает собственному ядру работать |
|
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 10.11.2010 13:50 | |
| зато на собственном ядре разряд за ночь сна cоставил 50милливольт, т.е. 0%.. e-ink условно работал - отображал картинки скринсейвера.
Last edited by Nomad1 on 10.11.2010 14:48; edited 2 times in total |
|
| |
x86demon Продвинутый участник форума
Joined: 25 Aug 2010 Posts: 79
| Posted: 10.11.2010 14:13 | |
| Nomad1 wrote: | зато на собственном ядре разряд за ночь сна оставил 50милливольт, т.е. 0%..
|
оставил или составил? На каком ядре проводятся эксперименты? 2.6.27 или что поновее? В >2.6.35 ввели управление питанием USB устройств (из-за этого у меня дома отрубалась радио клавиатура) |
|
| |
supremacy Искушенный участник форума
Joined: 02 Nov 2010 Posts: 60
| |
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 10.11.2010 14:42 | |
| может и можно. в одной из веток я там раньше находил альтернативный драйвер для нашего Epson S1D13521, от iRiver story. Но он завязан и у нас, и у них, на какие-то собственные навороты, потому напрямую перенести его не удалось. мне бы пообщаться с специалистом по линуксовым фреймбуферам.. такое впечатление, что у нас банально не выполняется команда "обновить e-ink"..
Добавлено спустя 6 минут 8 секунд:
x86demon wrote: | Nomad1 wrote: | зато на собственном ядре разряд за ночь сна оставил 50милливольт, т.е. 0%..
|
оставил или составил? На каком ядре проводятся эксперименты? 2.6.27 или что поновее? В >2.6.35 ввели управление питанием USB устройств (из-за этого у меня дома отрубалась радио клавиатура) |
опечатался - именно составил. на ядре 2.6.27, потому что у нас собственные драйверы для всего-подряд используются.
Добавлено спустя 38 минут 38 секунд:
это может пригодится в будущем, там есть библиотека copybit для наших устройств, которая за ускорение 2д графики отвечает. http://code.google.com/p/gles6410/ _________________ Twitter: @NomadRunserver |
|
| |
supremacy Искушенный участник форума
Joined: 02 Nov 2010 Posts: 60
| Posted: 10.11.2010 15:34 | |
| Nomad1 wrote: | такое впечатление, что у нас банально не выполняется команда "обновить e-ink".. |
ты же написал, что драйверов для TPS65181 нет, а я так понимаю именно он управляет питанием экрана |
|
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 10.11.2010 15:56 | |
| supremacy но у меня работает скринсейвер, а при старте работает анимация загрузки. значит, физически устройство есть и доступно, но вот доступ к нему через /dev/graphics/fb0 не происходит (или что-то в этом роде). _________________ Twitter: @NomadRunserver |
|
| |
frei Бывалый участник форума
Joined: 27 May 2010 Posts: 130
| Posted: 10.11.2010 17:12 | |
| А ты уверен, что оно пишет именно в ??? Может, в какой-нибудь другой буфер (фищически устройства разные) или воообще в другой-какой девайс среди кучи в дев?
Добавлено спустя 5 минут 9 секунд:
Мдя, видать только ФБ...
Quote: | Android лишен X-сервера, графическая оболочка использует FrameBuffer Device (/dev/graphics/fb0) для прямого доступа к видеопамяти. |
|
|
| |
x86demon Продвинутый участник форума
Joined: 25 Aug 2010 Posts: 79
| |
| |
Nomad1 Developer
Joined: 13 Sep 2010 Posts: 1721
| Posted: 10.11.2010 17:49 | |
| x86demon у нас используется не FB_BROADSHEET, а B&N реализация этого драйвера (видимо, портированая с старших версий)
Итого, у нас создано три фреймбуфера: fb0 - bravo_vfb, виртуальный буффер, который делит картинку на две части и отправляет двум остальным устройствам fb1 - s3c_fb, буфер нижнего экрана fb2 - s1d13521, буфер e-ink
буферы создаются так же, как и на обычном ядре (дебаг сообщения такие же), права такие же. androidvncserver напрямую считывает изменения из fb0 и там все отлично - андроид пихает туда именно то, что надо и по VNC видно нормальную картинку.
а вот теперь странный момент: почитав код обработчика bravo_vfb я не заметил вообще нигде операций записи чего-либо в fb2 или его память. вот этот файл: https://github.com/JesusFreke/nook-linux-kernel/blob/nook_linux-2.6.27 /drivers/video/bravo_virtualfb.c
Включив дебаг сообщения в драйвере fb2, я ничего из них не увидел в логе - видимо, к нему нет вообще обращений.. Сейчас попробую еще добавить дебаг строк вызовов, но пока есть теория, что нам дали bravo_virtualfb.c, в котором нет записи в e-ink.
Добавлено спустя 3 часа 1 минуту 52 секунды:
я уже очень близко. драйвер epson s1d15321 запускает в отдельном потоке обновление экрана. поток должен работать все время и отвечает за перерисовку, но у нас вход в него заканчивается зависанием экрана - не выполняются операции unlock, refresh и пр.
осталось "всего лишь" понять, чего не хватает этому потоку для нормальной работы
Добавлено спустя 1 час 59 минут 42 секунды:
итого, в сорцах обновление e-ink экрана привязано к G2D, которая компилируется и инициализируется, но не работает вообще. на реальном же устройстве G2D не инициализируется и вылетает с ошибкой, а для обновления экрана используется что-то другое.
небольшим хаком картинку на e-ink я получил, теперь осталось придумать, как дергать рефреш вовремя, ибо тормозит все из-за этого. но мы уже совсем близко - собственное ядро работает, а значит, мы в начале длинного пути написания собственных прошивок то, что было раньше - только иллюзия, мы меняли некоторые программы в песочнице, без серьезного доступа к самой системе. _________________ Twitter: @NomadRunserver |
|
| |
mseJak Постоянный участник форума
Joined: 24 Sep 2010 Posts: 151
Location: Edo, Japan
| Posted: 10.11.2010 23:56 | |
| Nomad1, я удивлен, как тебе охота этим заниматься?))) _________________ все мы живем в зО_опарке... |
|
| |
mds0000 Кандидат в члены клуба The eBook
Joined: 01 Sep 2010 Posts: 328
Location: Минск
| Posted: 11.11.2010 00:13 | |
| мне тоже интересно, тока я не умею _________________ NOOK Touch (CR3), NOOK 1st |
|
| |