Разработка ядра Android с использованием Linux

Я заинтересован в разработке ядра для телефонов Android. Я искал в интернете информацию о разработке ядра Android, и я понял, что собрать ядро ​​на Linux-машине означает только то, как использовать инструменты для создания собственного ядра, но я хочу знать, как написать код для создания ядра Android. Как начать с программирования c и ALP. Пожалуйста, ведите меня.

1 ответ

Решение

В Android используется ядро ​​Linux, поэтому вам стоит сначала ознакомиться с Linux.

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

Чтобы начать изучать Си, везде есть десятки ресурсов, я бы порекомендовал книгу Брайана В. Кернигана "Язык программирования Си". и Денис М. Ричи (изобретатель C).

Приложение работает в так называемом "режиме пользователя" и имеет доступ только к той виртуальной памяти, которая предоставляется ему ядром. Если приложение пытается получить доступ к памяти, которой нет в виртуальном пространстве, ядро ​​отправляет сигнал прерывания. Это предотвращает сбой системы. В ядре дело обстоит иначе, потому что ядро ​​работает в "режиме ядра" и, таким образом, имеет доступ ко всему адресному пространству, когда вы делаете что-то не так, последствия могут варьироваться от остановки системы до стирания постоянной памяти и многого другого.

Итак, сначала научитесь писать приложения, возможно, нативные, попробуйте использовать функциональность, предоставляемую ядром, изучив "Системные вызовы". Для этой цели я бы порекомендовал книги Марка Митчела "Расширенное программирование в Linux", они свободно размещаются на его сайте http://advancedlinuxprogramming.com/. Вы можете найти некоторые ссылки здесь https://en.wikibooks.org/wiki/The_Linux_Kernel.

Если вас устраивает и C, и Сервисы, которые предоставляет ядро ​​Linux. Чем вы можете начать думать о погружении в ядро. Очень популярная книга Роберта Лава "Разработка ядра Linux". Хотя я не думаю, что это очень актуально. Оно должно охватывать основные темы, связанные с этой темой, но, вероятно, существуют ресурсы, которые более актуальны.

Это долгий путь, и вы должны действительно подумать об этом в первую очередь, в зависимости от того, что вы хотите сделать, вы действительно сможете сделать это в "пространстве пользователя".

Другие вопросы по тегам