Руководство по портированию ядра Android с одного устройства на другое - PullRequest
1 голос
/ 14 сентября 2011

Я владею Samsung Galaxy 3 и хочу портировать ядра, доступные для других устройств Android. У меня все строительные условия готовы. У меня есть знания C также. Что именно я не понимаю, так это то, как и что включает в себя портирование, какие коды должны быть изменены и каким образом?

Если бы кто-нибудь мог мне помочь. Было бы здорово.

Заранее спасибо.


Хорошо, я понял. Но настоящая проблема в том, что я не понимаю одну вещь.

Что нужно изменить в исходном коде, чтобы сделать его совместимым с другим устройством? Может кто-нибудь объяснить мне это?

Ответы [ 3 ]

3 голосов
/ 17 сентября 2011

Идолон дает хорошее предложение.В теории то, что там написано, правда.На практике это немного более привлекательно.Я портирую Android Kernel уже несколько месяцев.Моя цель состояла в том, чтобы на моей плате был пользовательский процессорный модуль S5PV210 с моим пользовательским вводом / выводом.У меня есть исходный код для Samsung Galaxy Tab и несколько Android-смартфонов Samsung, а также несколько версий (Froyo, Gingerbread) для оценочной платы Samsung (SMDKV210 для процессора S5PV210).К вашему сведению, S5PC110 является близкой производной.Вот что я узнал.Несмотря на то, что все драйверы устройств должны быть построены очень модульно и независимо друг от друга, и вы сможете заменить их на аналогичные устройства, как это сделала компания Samsung, это не совсем так.Один из примеров - об управлении питанием.Во многих низкоуровневых драйверах, связанных с аппаратными устройствами, это вызывает некоторую специфическую процедуру для других аппаратных устройств, таких как микросхема управления питанием.Таким образом, когда вы меняете выбор драйверов в «make xconfig» или «make menuconfig», он удаляет исходный код того, что вам не нужно, и добавляет тот, который вам нужен, но все же есть другие модули, которые вызываютфункция низкого уровня, которую вы удалили.При сборке вы получите тонны неразрешенных внешних компонентов, поскольку вы удалили микросхему управления питанием, которой нет у вашего оборудования, но она используется в исходном коде, с которого вы начали.Я просмотрел несколько исходных кодов устройств Samsung, и они разветвились очень рано.Они были адаптированы различными командами, и было бы много работы по переходу с одного устройства на другое из одного комплекта исходного кода.

Вот как мне это удалось: я купил оценочную плату S5PV210 с уже перенесенным ядром Android (Gingerbread).Все вопросы управления питанием и взаимозависимые вопросы уже устранены.Затем, сформировав рабочий комплект, я мог бы поменять нужное мне устройство (то, которое нельзя купить без обязательства в 100 тыс. Единиц в год), не зацикливаясь на взаимозависимости.Тогда я мог бы даже изменить разрешение ЖК-дисплея (с 800x480 до 1024x768), сенсорного экрана, сотового модема и т. Д. И т. Д. Все это занимает около месяца работы только с одним парнем (мной).

Начиная с Galaxytab или другого коммерческого устройства, я потратил месяцы головных болей без каких-либо полезных результатов, кроме того, что я усвоил.

Есть одно требование, чтобы преуспеть в моем подходе.Вы должны знать оборудование, на котором вы работаете.Например, вам нужно знать, какой сенсорный экран у вашего оборудования (набор микросхем) для выбора драйвера и где он подключен, чтобы подключить его к нужному устройству (USB, последовательный порт и т. Д.).То же самое для всех других устройств (микросхема управления питанием, клавиатура, подсветка, ЖК-дисплей и т. Д.)

Надеюсь, что это полезно, чтобы дать вам представление о выполняемой работе и о том, как вы можете ее выполнить.

0 голосов
/ 31 июля 2015

Я также давно занимаюсь портированием Android и предлагаю следующий маршрут:

Читать

Вы должны иметь базовые знания о портировании Android и исходном коде AOSP, иерархии структуры каталогов. Я предлагаю вам начать читать https://books.google.co.in/books/about/Embedded_Android.html?id=plHsngEACAAJ&hl=en а также сослаться на https://source.android.com/devices/index.html, поскольку хорошие парни указали, что вы также можете портировать связанные группы в Google Android и стать там участником, если вы застряли в проблеме, есть вероятность, что с подобной проблемой мог столкнуться кто-то другой ранее.

Обратите внимание

Код AOSP : Параллельно вам нужно погрузиться в источник Android, например, по ссылкам типа https://android.googlesource.com/ наблюдать, какие компоненты находятся в исходном коде, каковы обновления предыдущего выпуска Android (например, ART заменил dalvik в LL), вверху На этом уровне будет общий код, специфичный для вашего оборудования код, называемый HAL в папке hardware / и device /.

Код ядра : В ядре также необходимо наблюдать за структурой каталогов и знать, какие вещи лежат там, где, например, специфичный для SoC код будет в arch / directory, defconfigs (используется для выбора конфигурации ядра) будет arch // configs / directory. Также есть хорошие книги по ядру Linux, вы можете их погуглить и начать читать.

При портировании ядра вам необходимо соблюдать

1.Если в новом ядре уже есть поддержка SoC, который используется в аппаратном обеспечении для портирования, вам нужно добавить только специфичные для устройства изменения, например, предположим, что вы хотите перенести новую версию ядра в samsung galaxy s3, вы можете взять эталонное ядро ​​Android с поддержкой exynos, и тогда вам нужно вносить изменения только для добавления поддержки samsung galaxy s3.

Для этого вам нужно иметь ссылку на какое-то старое ядро ​​с поддержкой s3, оттуда вы можете изучить патчи, которые были добавлены, чтобы добавить поддержку s3 и перенести эти патчи на более новое ядро.

Эксперимент

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

Спасибо, Devarsh

0 голосов
/ 14 сентября 2011

Вам следует взглянуть на кэшированную копию Руководства разработчика по платформе Android и android-porting google group.

Существует также старая, но полезная статья о портировании Android на Nokia N810 , которая даст вам несколько советов о портировании ядра Android Linux.

...