Компиляция ядра для Nook
Goto page 1, 2, 3, 4, 5  Next
 
Libroom Forum IndexBarnes&Noble
AuthorMessage

Nomad1
Developer

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
 
View user's profile ^

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... е-инки одинаковые... В нуке в довесок только а) цветной экранчик и б) собственно, андроид. При одинаковых веткая ядра, в целом одинаковом оборудовании мы должны иметь приблизительно одинаковое время работы. Но нет, нук живет сильно меньше. Мое ИМХО - во всем повинна софтварная надстройка в виде БН-овского андройда.

В общем, для начала предлагаю внимательно поглядеть на исходники ядра покетбука, сравнить с нуковскими... Ну и дальше уже думать...
 
View user's profile ^

Nomad1
Developer

Developer



Joined: 13 Sep 2010
Posts: 1721



Posted: 09.11.2010 17:02    

теоретически, в слипе не работает андроид вообще. исследования в другом топике показали, что устройство полноценно отключается (по крайней мере, счетчики аптайма об этом говорят), но потребления от этого меньше не становится.
хз, что именно дает такой эффект, может даже и процессор. в любом случае, это надо изучать. как минимум, с помощью отладочной версии ядра и поддержкой других видов энергопотребления.
но пока полноценно ядро собрать не получается..
_________________
Twitter: @NomadRunserver
 
View user's profile ^

supremacy
Искушенный участник форума

Искушенный участник форума



Joined: 02 Nov 2010
Posts: 60



Posted: 09.11.2010 17:16    

frei wrote:
В покетбуке АРМ, и в нуке АРМ.

в покетбуке FreeScale i.MX 357 а у нас Samsung S3C643
 
View user's profile ^

frei
Бывалый участник форума

Бывалый участник форума



Joined: 27 May 2010
Posts: 130



Posted: 09.11.2010 17:33    

Да лааааадно!!!!

Samsung S3C2440 400MHz там
 
View user's profile ^

supremacy
Искушенный участник форума

Искушенный участник форума



Joined: 02 Nov 2010
Posts: 60



Posted: 09.11.2010 17:47    

Ну так 301 и не сравнить с Nook, я говорю про новые модели 602, 603
 
View user's profile ^

Nomad1
Developer

Developer



Joined: 13 Sep 2010
Posts: 1721



Posted: 09.11.2010 17:55    

думаю, в покетбуке 602 такой же процессор, как и у нас. суть не в том - портировать чистую С/С++ программу и удалить Андроид можно, но как-то очень не интересно и полностью не кастомизабельно..
_________________
Twitter: @NomadRunserver
 
View user's profile ^

frei
Бывалый участник форума

Бывалый участник форума



Joined: 27 May 2010
Posts: 130



Posted: 09.11.2010 18:54    

Я говорил лишь о том, чтобы посмотреть на ядро покетбука - что именно в нем отвечает за работу с еинком и прочими флэшками-динамиками, раз уж оборудование похожее...
 
View user's profile ^

Nomad1
Developer

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;

что характерно, не получается определить, какой из этих пунктов не дает собственному ядру работать Sad
 
View user's profile ^

Nomad1
Developer

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
 
View user's profile ^

x86demon
Продвинутый участник форума

Продвинутый участник форума



Joined: 25 Aug 2010
Posts: 79



Posted: 10.11.2010 14:13    

Nomad1 wrote:
зато на собственном ядре разряд за ночь сна оставил 50милливольт, т.е. 0%..


оставил или составил?
На каком ядре проводятся эксперименты? 2.6.27 или что поновее? В >2.6.35 ввели управление питанием USB устройств (из-за этого у меня дома отрубалась радио клавиатура)
 
View user's profile ^

supremacy
Искушенный участник форума

Искушенный участник форума



Joined: 02 Nov 2010
Posts: 60



Posted: 10.11.2010 14:18    

а из этого проекта ничего нельзя для нас взять?
http://git.openinkpot.org/
 
View user's profile ^

Nomad1
Developer

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
 
View user's profile ^

supremacy
Искушенный участник форума

Искушенный участник форума



Joined: 02 Nov 2010
Posts: 60



Posted: 10.11.2010 15:34    

Nomad1 wrote:
такое впечатление, что у нас банально не выполняется команда "обновить e-ink"..

ты же написал, что драйверов для TPS65181 нет, а я так понимаю именно он управляет питанием экрана
 
View user's profile ^

Nomad1
Developer

Developer



Joined: 13 Sep 2010
Posts: 1721



Posted: 10.11.2010 15:56    

supremacy
но у меня работает скринсейвер, а при старте работает анимация загрузки. значит, физически устройство есть и доступно, но вот доступ к нему через /dev/graphics/fb0 не происходит (или что-то в этом роде).
_________________
Twitter: @NomadRunserver
 
View user's profile ^

frei
Бывалый участник форума

Бывалый участник форума



Joined: 27 May 2010
Posts: 130



Posted: 10.11.2010 17:12    

А ты уверен, что оно пишет именно в
Quote:
/dev/graphics/fb0
??? Может, в какой-нибудь другой буфер (фищически устройства разные) или воообще в другой-какой девайс среди кучи в дев?

Добавлено спустя 5 минут 9 секунд:

Мдя, видать только ФБ...

Quote:
Android лишен X-сервера, графическая оболочка использует FrameBuffer Device (/dev/graphics/fb0) для прямого доступа к видеопамяти.
 
View user's profile ^

x86demon
Продвинутый участник форума

Продвинутый участник форума



Joined: 25 Aug 2010
Posts: 79



Posted: 10.11.2010 17:26    

FB_BROADSHEET активирован? http://www.kernel.org/doc/menuconfig/drivers-video-Kconfig.html
Если устройство есть - может что не так с правами?
 
View user's profile ^

Nomad1
Developer

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 и пр.

осталось "всего лишь" понять, чего не хватает этому потоку для нормальной работы Smile

Добавлено спустя 1 час 59 минут 42 секунды:

итого, в сорцах обновление e-ink экрана привязано к G2D, которая компилируется и инициализируется, но не работает вообще. на реальном же устройстве G2D не инициализируется и вылетает с ошибкой, а для обновления экрана используется что-то другое.

небольшим хаком картинку на e-ink я получил, теперь осталось придумать, как дергать рефреш вовремя, ибо тормозит все из-за этого. но мы уже совсем близко - собственное ядро работает, а значит, мы в начале длинного пути написания собственных прошивок Smile
то, что было раньше - только иллюзия, мы меняли некоторые программы в песочнице, без серьезного доступа к самой системе.
_________________
Twitter: @NomadRunserver
 
View user's profile ^

mseJak
Постоянный участник форума

Постоянный участник форума



Joined: 24 Sep 2010
Posts: 151


Location: Edo, Japan

Posted: 10.11.2010 23:56    

Nomad1, я удивлен, как тебе охота этим заниматься?)))
_________________
все мы живем в зО_опарке...
 
View user's profile ^

mds0000
Кандидат в члены клуба The eBook

Кандидат в члены клуба The eBook



Joined: 01 Sep 2010
Posts: 328


Location: Минск

Posted: 11.11.2010 00:13    

мне тоже интересно, тока я не умею
_________________
NOOK Touch (CR3), NOOK 1st
 
View user's profile ^
Libroom Forum IndexBarnes&NobleAll times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5  Next
Page 1 of 5

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Libroom, 2021