Модуль миграции с Linux на Android - PullRequest
0 голосов
/ 29 марта 2012

Я собираюсь реализовать протокол aodv в качестве модуля linux для исследовательского проекта, и мне нужно реализовать его на Android позже. Интересно, смогу ли я скомпилировать свои коды в ядро ​​Android и заставить мой модуль работать так же, как в Linux(ядро 2.6 и выше).

Буду очень признателен за любые предложения.

(PS В Android уже есть некоторые реализации aodv, такие как aodv-on-android и UoB JAdhoc, однако они реализованы на Java, не включаяядра)

1 Ответ

0 голосов
/ 29 марта 2012

Слоган гласит: Android - это Linux, поэтому все, что вы делаете (переносное) в Linux, должно быть простым в Android.

Это в основном верно, однако есть несколько вещей, которые вы должны иметь в виду:

  • Переносимость: если вы пишете свою реализацию на x86, а затем перемещаете модуль в ARM для Android, будьте осторожны, чтобы не использовать какие-либо возможности, которые не существуют на обоих. Однако, для чего-то вроде сетевого протокола, вы, вероятно, не будете сталкиваться с большинством из них. Единственное, что приходит на ум, это NIC.

  • Dalvik: Общие дистрибутивы Linux, как правило, работают довольно близко к ОС, то есть они регулярно делают системные вызовы или вызовы libc, а семантика взаимодействия с ядром в основном переносится в приложение. Android, однако, по сути, имеет Java-среду, построенную на этом, и большинство приложений взаимодействуют только с этой платформой. Для вас это означает, что вы захотите знать о возможной необходимости изменить платформу Android, чтобы сделать изменения видимыми для приложений.

  • Вышеуказанный пункт зависит, однако, от вашего варианта использования. Если вы планируете увеличить маршрутизацию для существующих приложений, чтобы использовать aodv, то вам захочется поработать с Dalvik. Если вы будете писать одно доказательство концепции приложения, то вы можете написать части, которые взаимодействуют с aodv в C, используя NDK, и избегать необходимости изменять структуру приложения.

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

Надеюсь, это поможет.

...