eclipse 编译内核模块_如何创建为Android可加载内核模块?

本文记录了在Ubuntu虚拟机中使用Eclipse编译Android内核模块遇到的问题及解决过程。首先,介绍了安装环境、搭建Android编译环境的步骤,包括Java版本、必要的软件包、Android源码获取和初始化。接着,描述了在编译过程中遇到的错误,如读取jar文件错误、找不到类文件等问题。最后,给出了一个简单的内核模块示例代码和Makefile,并指出了可能使用的交叉编译器。虽然遇到了一些警告,但模块编译完成后未找到生成的ko文件。文章末尾分享了成功在Sony Ericsson Xperia Arc S上加载模块的案例作为参考。
摘要由CSDN通过智能技术生成

I know there a number of walkthroughs and tutorials floating around out there which describe this activity, but after having read many of them I still can't get this working. If anyone has the patience to wade through the steps i've taken (posted below) and suggest where I may have gone off track I'd be very appreciative. I've spent about a day and a half staring at make files and reading walk throughs so literally any suggestions would be helpful. Thanks!

Environment:

I'm using an Ubuntu 10.04 32 bit vm.

I'm hosting from a 64 bit windows 7

My Core 2 Duo does not have the hardware support for 64 bit VMs so i'm trying to compile against Android 2.1 kernel

I have installed Java 1.5 from the Dapper repo and removed my 1.6 installation

The rest of the tooling has been acquired according the Android dev documentation...

Java:

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"

$ sudo apt-get update

$ sudo apt-get install sun-java5-jdk

Other required:

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev libncurses5-dev x11proto-core-dev libx11-dev libreadline5-dev libz-dev libgl1-mesa-dev

$ sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386

Repo:

$ mkdir ~/bin

$ PATH=~/bin:$PATH

$ curl http://android.git.kernel.org/repo > ~/bin/repo

$ chmod a+x ~/bin/repo

$ mkdir WORKING_DIRECTORY

$ cd WORKING_DIRECTORY

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair

$ repo sync

$ gpg --import (imported the huge key)

Initialize:

$ source build/envsetup.sh

Choose a Target:

$ lunch generic-user

Build the Code:

$ make -j4

Added!

Output of make -j4:

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=2.1-update1

TARGET_PRODUCT=generic

TARGET_BUILD_VARIANT=eng

TARGET_SIMULATOR=

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=ECLAIR

============================================

build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory

Install: out/host/linux-x86/bin/acp

target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar

target Generated: libclearsilver-jni <= out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar

host SharedLib: libneo_cs (out/host/linux-x86/obj/lib/libneo_cs.so)

host C++: aapt <= frameworks/base/tools/aapt/AaptAssets.cpp

host C++: aapt <= frameworks/base/tools/aapt/Command.cpp

error: error reading out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening zip file

error: error reading out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar; error in opening zip file

error: error reading out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read zip file

error: cannot access org.clearsilver.HDF

class file for org.clearsilver.HDF not found

javadoc: error - Class org.clearsilver.HDF not found.

Error: No classes were specified on the command line. Try -help.

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_HDF.h] Error 15

make: *** Waiting for unfinished jobs....

error: error reading out/host/common/obj/JAVA_LIBRARIES/clearsilver_intermediates/javalib.jar; cannot read zip file

error: cannot access org.clearsilver.CS

class file for org.clearsilver.CS not found

In file included from frameworks/base/tools/aapt/AaptAssets.h:18,

from frameworks/base/tools/aapt/AaptAssets.cpp:5:

frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration

javadoc: error - Class org.clearsilver.CS not found.

Error: No classes were specified on the command line. Try -help.

In file included from frameworks/base/tools/aapt/AaptAssets.h:18,

from frameworks/base/tools/aapt/Main.h:14,

from frameworks/base/tools/aapt/Command.cpp:6:

frameworks/base/tools/aapt/ZipFile.h:65: warning: ‘typedef’ was ignored in this declaration

make: *** [out/host/linux-x86/obj/SHARED_LIBRARIES/libclearsilver-jni_intermediates/org_clearsilver_CS.h] Error 15

Added!

So it turns out i've got some problems here. I assume that once i've overcome these issues, i'll have an environment capable of compiling kernel modules. Please do correct me if I'm wrong.

Next I head into my directory containing my module.c file and it's makefile. Contents of makefile below:

obj-m += mymodule.o

CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-

KERNEL_DIR ?= /home//WORKING_DIRECTORY

VERSION = v1.1

all:

make -C $(KERNEL_DIR) M=$(PWD) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules

rm -rf *.c~

rm -rf *.mod*

rm -rf *.o

clean:

make -C $(KERNEL_DIR) M=$(PWD) clean

I have very little experience with make and makefiles, but this looked reasonable to me. My main concern with this file is the KERNEL-DIR variable. I tried a few different values for that variable, but got all sorts of errors where I do not with it's current value. Of course, it could still be wrong, so any comments here are welcome.

So, as far as I know, I should be able to execute make with no args or anything and will figure out what it needs to do. I have tried make, make -f both with and without sudo. All four permutations yield the same results:

make -C /home//WORKING_DIRECTORY M=/home//Desktop/ ARCH=arm CROSS_COMPILE=~/WORKING_DIRECTORY/prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi- modules

============================================

PLATFORM_VERSION_CODENAME=REL

PLATFORM_VERSION=2.1-update1

TARGET_PRODUCT=generic

TARGET_BUILD_VARIANT=eng

TARGET_SIMULATOR=

TARGET_BUILD_TYPE=release

TARGET_ARCH=arm

HOST_ARCH=x86

HOST_OS=linux

HOST_BUILD_TYPE=release

BUILD_ID=ECLAIR

============================================

make[1]: Entering directory `/home//WORKING_DIRECTORY'

build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory

Available sub-modules:

01-test dumpsys libminui LotsOfApps

20-dns.conf dvz libminzip lowstoragetest

95-configured dx libmp4recognizer_utility lsd

aapt dx-tests libmtdutils LunarLander

acc edify libnativehelper LunarLanderTests

AccountAndSyncSettings Email libneo_cgi MagicSmokeWallpapers

accRuntimeTest EmailTests libneo_cs make_cfst

acp emma libneo_util makedict

adb emmalib libnetutils make_g2g

adbd emulator libocr makekeycodes

add-property-tag emulator-arm libomx_aac_component_lib make_ve_grammar

afar emulator-hw libomx_aacdec_sharedlibrary mediaframeworktest

aidl emulator-tcg libomx_amr_component_lib MediaProvider

AlarmClock EnabledTestApp libomx_amrdec_sharedlibrary mediaserver

AliasActivity etc1tool libomx_amrenc_component_lib memtest

am eventanalyzer libomx_amrenc_sharedlibrary minigzip

android event-log-tags libomx_avc_component_lib mkbootfs

android.core.tests.annotation exc_dump libomx_avcdec_sharedlibrary mkbootimg

android.core.tests.archive ext libomx_baseclass_lib mksdcard

android.core.tests.concurrent Fallback libomx_common_lib mkstubs

android.core.tests.crypto fastboot libomx_m4v_component_lib mkyaffs2image

android.core.tests.dom FixedGridLayout libomx_m4vdec_sharedlibrary Mms

android.core.tests.logging flash_image libomx_mastercore_lib MmsTests

android.core.tests.luni.io FontLab libomx_mp3_component_lib monkey

android.core.tests.luni.lang framework libomx_mp3dec_sharedlibrary monkeyrunner

android.core.tests.luni.net FrameworkPermissionTests libomx_queue_lib mtpd

android.core.tests.luni.util framework-res libomx_sharedlibrary MultiResolution

android.core.tests.math FrameworkTest libop Music

android.core.tests.nio framework-tests libopencore_author MusicTests

android.core.tests.nio_char FrameworkTestTests libopencore_common nc

android.core.tests.prefs fsck_msdos libopencore_download netcfg

android.core.tests.regex fs_config libopencore_downloadreg netperf

android.core.tests.runner fs_get_stats libopencore_mp4local netserver

android.core.tests.security Gallery libopencore_mp4localreg ninepatch

android.core.tests.sql Gallery3D libopencore_net_support NinePatchLab

android.core.tests.text GalleryTests libopencore_player NoShareUidApp

android.core.tests.xml gdbserver libopencore_rtsp NotePad

android.core.tests.xnet genext2fs libopencore_rtspreg NotePadTests

android.cts.dpi GestureBuilder libosclbase opcontrol

android.cts.refapp GL2JNI libosclerror openssl

android.policy GLJNI libosclio OpenWnn

android.policy_mid GlobalSearch liboscllib oprofiled

android.policy_phone GlobalSearchBenchmarks libosclmemory org.eclipse.core.commands_3.4.0.I20080509-2000

androidprefs GlobalSearchPermissionTests libosclproc org.eclipse.equinox.common_3.4.0.v20080421-2006

android.test.runner GlobalSearchTests libosclregcli org.eclipse.jface_3.4.2.M20090107-0800

AndroidTests GlobalTime libosclregserv org-netbeans-api-visual

angeles GoogleContactsProvider libosclutil org-openide-util

ant GoogleContactsProviderTests libpagemap osgi

antlr-2.7.7 google-framework libpassthru_oma1 PackageInstaller

anttasks googlelogin-client libpcap parseStringTest

apicheck GoogleSearch libpixelflinger perm_checker

ApiDemos gpustate libpixelflinger_armv6 perm_checker.conf

ApiDemosReferenceTest gralloc.default libpixelflinger_static Phone

ApiDemosTests groovy-all-1.6.5 libplatform_library_jni PicoTts

apkbuilder grxmlcompile libpng ping

ApplicationsProvider gtest-filepath_test libpopt PinyinIME

applypatch gtest-linked_ptr_test libprotocolenginenode_base PlatformLibraryClient

applypatch_static gtest-message_test libprotocolenginenode_common platform.xml

app_process gtest-options_test libprotocolenginenode_download_common pm

AppWidgetHostTest gtest-port_test libprotocolenginenode_pdl post_trace

AppWidgetProvider gtest_pred_impl_unittest libprotocolenginenode_ps pppd

apriori gtest_prod_test libpv_aac_dec preload

archquery gtest-test-part_test libpvaacffparsernode ProcessTests

asm-3.1 gtest-typed-test2_test libpvaacffrecognizer procmem

atree gtest-typed-test_test libpvaacparser procrank

AudioHardwareRecord gtest_unittest libpvamrffparsernode profile_pid

AudioHardwareRecordLoop gzip libpvamrffrecognizer profile_trace

AudioInRecord HelloActivity libpv_amr_nb_common_lib Provision

backup_helper_test HelloActivityTests libpvamrwbdecoder pvplayer

BackupTest hierarchyviewer libpvauthorengine q2dm

BatteryWaster hist_trace libpv_avc_common_lib q2g

bb2sym Home libpvavcdecoder qemud

bb_dump hosttestlib libpvavifileparser qemu-props

bbprof hprof-conv libpv_config_parser qwerty2.kcm

bison HTMLViewer libpvdecoder_gsmamr qwerty.kcm

Bluetooth icache libpvdownloadinterface racoon

BluetoothChat icudata libpvdownloadmanagernode radiooptions

BluetoothDebug idegen libpvdownloadreginterface read_addr

bmgr ime libpvencoder_gsmamr read_method

bookmarks.xml ImfTest libpvfileoutputnode read_pid

bootanimation ImfTestTests libpvfileparserutils read_trace

Browser imgdiff libpvframemetadatautility recovery

BrowserPowerTests init libpvgendatastruct required_hardware.xml

BrowserTestPlugin input libpvgsmamrparser rgb2565

BrowserTests installd libpv_http_parcom rild

bsdiff invoke_mock_media_player libpvid3parcom rsg-generator

bspatch iptables libpvjitterbuffer RSSReader

btool ip-up-vpn libpvjitterbuffernode run-core-tests

bugreport iself libpvjitterbufferrtp run-core-tests-on-ri

BusinessCard isprelinked libpvlatmpayloadparser safe_iop_test

Calculator jarjar libpvmediadatastruct SampleBrowserPlugin

CalculatorTests jarutils libpvmediainputnode schedtest

Calendar jasmin libpvmedialayernode scp

CalendarProvider jasmin.jar libpvmediaoutputnode screenshot2

CalendarProviderTests javax.obex libpvmf sdklib

CalendarTests jcommon-1.0.12 libpvmfrecognizer sdkmanager

Camera jdiff libpvmimeutils SdkSetup

CameraTests jdwpspy libpvmioaviwavfileinput sdkstats

CertInstaller JETBoy libpvmiofileinput sdkuilib

cfassembler jfreechart-1.0.9 libpvmiofileoutput sdutil

check-lost+found jfreechart-1.0.9-swt libpvmp3 SearchableDictionary

check_prereq junit libpvmp3ff sensors.goldfish

check_stack jython libpvmp3ffparsernode service

check_trace kcm libpvmp3ffrecognizer servicemanager

clearsilver keystore libpvmp4decoder services

cmu2nuance keystore_cli libpvmp4ff Settings

com.android.inputmethod.pinyin.lib KeyStoreTests libpvmp4ffcomposer SettingsProvider

com.example.android.platform_library kxml2-2.3.0 libpvmp4ffcomposernode SettingsTests

commons-compress-1.0 latencytop libpvmp4ffparsernode sh

Compass LatinIME libpvmp4ffrecognizer ShareUidApp

ContactManager Launcher libpvmp4interface showlease

Contacts Launcher2 libpvmp4reginterface showmap

ContactsProvider launchperf libpvomxaudiodecnode showslab

ContactsProviderTests layoutlib libpvomxbasedecnode sig

ContactsTests layoutlib_api libpvomxencnode sig-check

core layoutlib_create libpv_omx_interface sig-create

core-tests layoutlib_utils libpvomx_proxy_lib signapk

CoreTests layoutopt libpvomxvideodecnode SignatureTest

coverage libabi libpvplayer_engine SignatureTestTests

cpueater libacc libpvpvxparser signature-tools

cpufeatures libaes libpvrtsp_cli_eng_node SimpleJNI

crasher libandroidpv libpvrtspinterface SkeletonApp

create_test_dmtrace libandroidpvauthor libpv_rtsp_parcom SkeletonAppTests

cts libandroid_runtime libpvrtspreginterface skia_bench

CtsAccessibilityServiceTestCases libandroid_servers libpvsdpparser skia_gm

CtsAccountManagerTestCases libapplypatch libpvsocketnode SlowSuggestions

CtsAppAccessData libarity libpvstreamingmanagernode SmokeTest

CtsAppSecurityTests libastl libpvthreadmessaging SmokeTestApp

CtsAppTestCases libaudioflinger libpvwav Snake

CtsAppWithData libaudiointerface libpvwavffparsernode SnakeTests

CtsBluetoothTestCases libaudiopolicygeneric libpvwavffrecognizer SoftKeyboard

CtsContentTestCases libbinder librank soslim

cts-dalvik-buildutil libbz libreference-cdma-sms sound

CtsDatabaseTestCases libc libreference-ril SoundRecorder

CtsDelegatingAccessibilityService libcameraservice libril SpammySuggestions

CtsDpiTestCases libcamerastub libRS SpareParts

CtsDpiTestCases2 libc_common librs_jni spec-progress

CtsExampleTestCases libc_debug librtppayloadparser sqlite3

CtsGestureTestCases libclearsilver-jni librtprtcp SRecTest

CtsGraphicsTestCases libc_nomalloc libsafe_iop SRecTestAudio

CtsHardwareTestCases libcolorconvert libsampleplugin ssh

CtsInstrumentationAppDiffCert libcpm libSDL SslLoad

CtsJniTestCases libcrypto libSDLmain stack_dump

CtsLocationTestCases libctest libsimplejni StatusBarTest

CtsMediaTestCases libcts_jni libskia Stk

CtsNetTestCases libctspermission_jni libskiagl strace

CtsOsTestCases libcutils libsonivox stringtemplate

CtsPerformance2TestCases libdb libsoundpool su

CtsPerformance3TestCases libdbus libspeex surfaceflinger

CtsPerformance4TestCases libdbus-tools-common libsqlite svc

CtsPerformance5TestCases libdex libsqlite3_android swing-worker-1.1

CtsPerformanceTestCases libdl libsqlite3_phone_number_utils_test swt

CtsPermission2TestCases libdrm1 libsqlite3_phonetic_string_utils_test system_server

CtsPermissionDeclareApp libdrm1_jni libSR_AcousticModels tcpdump

CtsPermissionTestCases libdrm2 libSR_AcousticState TelephonyProvider

CtsProviderTestCases libdvm libSR_AudioIn telephonytest

CtsSharedUidInstall libebl libSR_Core temp_layoutlib

CtsSharedUidInstallDiffCert libebl_arm libsrec_jni Term

CtsSimpleAppInstall libedify libSR_EventLog test_defs.xml

CtsSimpleAppInstallDiffCert libEGL libSR_G2P TestDeviceSetup

CtsSpeechTestCases libelf libSR_Grammar test-fb-refresh

CtsTargetInstrumentationApp libelfcopy libSR_Nametag test-fb-simple

CtsTelephonyTestCases libembunit libSR_Recognizer test_g2g

CtsTestStubs libemoji libSR_Semproc test-mdp

CtsTextTestCases libESR_Portable libSR_Session test-opengl-codegen

CtsUsePermissionDiffCert libESR_Shared libSR_Vocabulary test-opengl-fillrate

CtsUtilTestCases libETC1 libssl test-opengl-filter

CtsViewTestCases libexif libstagefright test-opengl-finish

CtsWebkitTestCases libexpat libstagefright_omx test-opengl-gl2_basic

CtsWidgetTestCases libext libstdc++ test-opengl-gl_basic

CubeLiveWallpapers libfdlibm libsurfaceflinger test-opengl-gralloc

CustomLocale libFFTEm libsvoxpico test-opengl-linetex

daemonize libfst libsystem_server test-opengl-swapinterval

dalvikvm libft2 libsysutils test-opengl-textures

dasm libgetactualaacconfig libterm test-opengl-tritex

dbus-daemon libgif libtestplugin test-progress

dbus-monitor libgl2jni libthread_db test-progress-new

dbus-send libGLES_android libthreadsafe_callback_ao test_swiarb

ddmlib libGLESv1_CM libtinyxml test_zipfile

ddms libGLESv2 libtomcrypt timeinfo

ddmuilib libgljni libtommath timetest

debuggerd libgoogleclient libttspico toolbox

DensityTest libgtest libttssynthproxy traceview

descGen libgtest_main libui TransformTest

DeskClock libhardware libunz TtsService

Development libhardware_legacy libutil tuttle2.kcm

dexdeps libhost libutils uix

dexdump libicudata-default libvorbisidec updater

dexlist libicudata-eu libwbxml UpgradeExample

dexopt libicudata-jp libwbxml_jni usbtest

dexopt-wrapper libicudata-large libwebcore UserDictionaryProvider

dexpreopt libicudata-us libwnndict VisualizationWallpapers

dex-tools libicui18n libWnnEngDic vm-tests

dhcpcd libicuuc libWnnJpnDic VoiceDialer

dhcpcd-run-hooks libiptc libwpa_client Voiper

dictTest libjavacore libxml2 vold

DisabledTestApp libjni_latinime libxml2wbxml VpnServices

dmtracedump libjni_pinyinime libz wbxmltest

DownloadProvider libjnitest libzipfile wdsclient

draw9patch libjpeg LightingTest webkitmerge

DrmProvider liblog line_endings Wiktionary

droiddoc libm linker WiktionarySimple

dumpeventlog libm4v_config LiveWallpapers xmlwriter

dumpkey libmedia LiveWallpapersPicker yuv420sp2rgb

dump_regions libmedia_jni localize zipalign

DumpRenderTree libmediaplayerservice logcat

dumpstate libmincrypt logwrapper

make[1]: Leaving directory `/home//WORKING_DIRECTORY'

rm -rf *.c~

rm -rf *.mod*

rm -rf *.o

You'll notice a few screwy warnings, but as best as I can tell, they are not real problems. If anyone feels differently about these, please say so.

make[1]: Entering directory `/home//WORKING_DIRECTORY'

build/core/copy_headers.mk:15: warning: overriding commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

build/core/copy_headers.mk:15: warning: ignoring old commands for target `out/target/product/generic/obj/include/libpv/getactualaacconfig.h'

/bin/bash: line 0: cd: sdk/layoutopt/app/src/resources: No such file or directory

I guess that last line sounds pretty suspicious but I have no idea what to do about it. Apart from the few strange things i've mentioned, it would appear that this all went smoothly. However, after the whole thing completes, I can't find the *.ko file anywere. I did a ls -alRg | grep *.ko on my home directory and it turns up nothing. I'm stumped. If I can provide any more information or run any tests or try anything differently i'll be checking in frequently.

Thanks,

brian

解决方案

Sorry for being late, but hope it helps:

I wrote and tested the code on my Sony Ericsson Xperia Arc S and it works (in general in should work for any Android phone).

Connecting via adb and USB, and “su” to root, the “lsmod” listed all the kernel module (in general, the article at http://developer.sonyericsson.com/wp/2011/05/06/how-to-build-a-linux-kernel/ gave a very good coverage of what to do in Linux kernel compilation for SonyEricsson phone):

lsmod

android_module 654 0 - Live 0x7f007000 (P)

sdio 16532 0 - Live 0x7f000000

“android_module” was the one I had inserted via insmod android_module.ko.

Here’s how to do it:

First the original program was copied from:

Or reproduced as follows:

android_module.c:

#include"linux/module.h"

#include"linux/kernel.h"

//replace the "" with angular brackets

int init_module(void)

{

printk(KERN_INFO "Hello android kernel...\n");

return 0;

}

void cleanup_module(void)

{

printk(KERN_INFO "Goodbye android kernel...\n");

}

Makefile:

obj-m += android_module.o

all:

make -C /home/tteikhua/android/sony_ericsson_src/58/kernel/ M=$(PWD) modules

clean:

make -C /home/tteikhua/android/sony_ericsson_src/58/kernel/ M=$(PWD) clean

The directory where the kernel is located (“-C” above) is where I had downloaded the SonyEricsson kernel image from here:

And the following command will use the Makefile from above:

ARCH=arm CROSS_COMPILE=/opt/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- make

As shown above, the cross compiler I had used is from CodeSourcery.

And after insmod android_module.ko you can see the debugging message in dmesg output:

<6>[11184.063507] Hello android kernel...

<7>[11619.209655] msmrtc_timeremote_set_time: 11/29/2011 10:09:36 (04)

<6>[11619.210418] RPC CALL -- TOD TIME UPDATE: ttick = 404244221

<6>[11619.210418] stamp=52910543933046785, freq = 0

<7>[11619.211578] msmrtc_tod_proc_result: 12/29/2011 10:09:36 (03)

<6>[11619.211578] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:09:36 UTC (1325153376)

<6>[11662.112365] device rmnet0 left promiscuous mode

<6>[11662.112579] device rmnet0 entered promiscuous mode

<6>[11669.958221] device rmnet0 left promiscuous mode

<6>[11669.958435] device rmnet0 entered promiscuous mode

<7>[11698.181060] msmrtc_timeremote_set_time: 11/29/2011 10:10:55 (04)

<6>[11698.187622] RPC CALL -- TOD TIME UPDATE: ttick = 406832008

<6>[11698.187652] stamp=52910548228014081, freq = 0

<7>[11698.193939] msmrtc_tod_proc_result: 12/29/2011 10:10:55 (03)

<6>[11698.194030] rs30000048 rs30000048.262144: setting system clock to 2011-12-29 10:10:55 UTC (1325153455)

<6>[11814.442901] bq27520 0-0055: bq27520_handle_soc_worker() capacity=97 (100) flags=0x229 ctrl_status=0x28b soh_state=0x3, valid=1

<6>[11984.057373] Goodbye android kernel...

And the “Goodbye” is when rmmod android_module is executed. In between are debugging message from other components in the kernel.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值