[Q] Compiling Kernel Module in ICS - General Questions and Answers

Hi All,
I am currently trying to compile kernel module for a local echo driver in ICS. I got success while trying the same in GB but doing so in ICS the echo driver is not get compiled to KO object
I got below errors while compiling
make circular .so - .so dependency dropped in android
#build/core/main.mk:537: *** Some files have been added to ALL_PREBUILT.
#build/core/main.mk:538: *
#build/core/main.mk:539: * ALL_PREBUILT is a deprecated mechanism that
#build/core/main.mk:540: * should not be used for new files.
#build/core/main.mk:541: * As an alternative, use PRODUCT_COPY_FILES in
#build/core/main.mk:542: * the appropriate product definition.
#build/core/main.mk:543: * build/target/product/core.mk is the product
#build/core/main.mk:544: * definition used in all products.
#build/core/main.mk:545: *
#build/core/main.mk:546: * unexpected circular-char.ko in ALL_PREBUILT
#build/core/main.mk:547: *
#build/core/main.mk:548: *** ALL_PREBUILT contains unexpected files. Stop.
I know that the problem is in Android.mk of the echo driver source, So please guide me on making make file in ICS
Looking forward for your guidlines....
Regards
Venkatraman

Related

Compiling AOSP for Magic

Hello,
Just trying to compile the latest AOSP for a PVT32B HTC Magic. I have pulled all the source, ran the envsetup.sh script, used lunch and selected Sapphire, and used make. However I seem to keep getting these odd errors about LOCAL_MODULE_TAGS.
If I add the requested LOCAl_MODULE_TAGS line with optional to the module it complains about it moves on, but does the exact same thing to the next module. It would be a pain to have to go through each and every one. Anyone have an idea on why its complaining about this on every module?
Heres the log:
Code:
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=AOSP
TARGET_PRODUCT=full_sapphire
TARGET_BUILD_VARIANT=userdebug
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv5te
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================
build/core/binary.mk:323: target `out/target/product/sapphire/obj/STATIC_LIBRARIES/libc_common_intermediates/arch-arm/syscalls/eventfd.o' given more than once in the same rule.
build/core/base_rules.mk:74: *** Module name: sapphire-keypad.kcm
build/core/base_rules.mk:75: *** Makefile location: device/htc/sapphire
build/core/base_rules.mk:76: *
build/core/base_rules.mk:77: * Each module must use a LOCAL_MODULE_TAGS in its
build/core/base_rules.mk:78: * Android.mk. Possible tags declared by a module:
build/core/base_rules.mk:79: *
build/core/base_rules.mk:80: * optional, debug, eng, tests, samples
build/core/base_rules.mk:81: *
build/core/base_rules.mk:82: * If the module is expected to be in all builds
build/core/base_rules.mk:83: * of a product, then it should use the
build/core/base_rules.mk:84: * "optional" tag:
build/core/base_rules.mk:85: *
build/core/base_rules.mk:86: * Add "LOCAL_MODULE_TAGS := optional" in the
build/core/base_rules.mk:87: * Android.mk for the affected module, and add
build/core/base_rules.mk:88: * the LOCAL_MODULE value for that component
build/core/base_rules.mk:89: * into the PRODUCT_PACKAGES section of product
build/core/base_rules.mk:90: * makefile(s) where it's necessary, if
build/core/base_rules.mk:91: * appropriate.
build/core/base_rules.mk:92: *
build/core/base_rules.mk:93: * If the component should be in EVERY build of ALL
build/core/base_rules.mk:94: * products, then add its LOCAL_MODULE value to the
build/core/base_rules.mk:95: * PRODUCT_PACKAGES section of
build/core/base_rules.mk:96: * build/target/product/core.mk
build/core/base_rules.mk:97: *
build/core/base_rules.mk:98: *** user tag detected on new module - user tags are only supported on legacy modules. Stop.
Thanks in advance!
Android source error
I have the same problem. I want to compile the recovery binary. it compiles fine but when I put it in the ramdisk and repack the recovery image it won't show anything in the recovery mode. my phone HTC G1 goes on with black screen not even showing the recovery menu.
My repack script is fine because I checked it with the same binary again and it was fine.
Please help I have a deadline to meet and I am exhausted searching for answers.
Thanks
I don't get to say this very often but... moved to Development.
Why does target arch is armv5te if we have armv6tej ?
Kefir.net said:
Why does target arch is armv5te if we have armv6tej ?
Click to expand...
Click to collapse
Maybe because CPU in our phones lack hardware VFP
It looks like you cloned master, I think in general you want to use the release branch if you want the most recent code base for a release
Example:
Code:
repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
Will get you the froyo code base
----
As for the error:
master is mostly gingerbread now, and besides gingerbread no longer having AOSP support for dream/sapphire: Requires all projects to be tagged with LOCAL_MODULE_TAGS
Not all of the packages used by the dream/sapphire build have been updated or marked grandfathered as dream/sapphire are not being supported.

Getting BFS Scheduler working?

Im so sorry if this is in the wrong place but im a developer working on my first kernel and my question is only going to get some help by the most elite ROM dev's out there.
Ok so i got the BFS patch for the kernel im currently working on which is 2.6.32.9. Of course the patch is meant for a mainline kernel and not an Android kernel so i went through the patch file and applied the patch by hand, it was a pretty smooth process the diffs in the bfs patch were all the same code just wouldn't apply because all the line numbers were off. My first attempt bombed so i must have made some mistakes it was my first time patching by hand! Anyways took another crack and recompiled the kernel after every file patched so i could basically debug compiling problems well it all went smooth.
Heres the problem though, kernel compiles fine with out bfs checked, with it checked it compile a hell of alot of the kernel, but it eventually fails and it make no seance after my investigation of things. Here is my error
Code:
drivers/built-in.o: In function `mmc_wait_for_req':
lowmemorykiller.c:(.text+0xd2b3c): undefined reference to `wait_for_completion_io'
make: *** [.tmp_vmlinux1] Error 1
I found the decleration for wait_for_completion_io in kernel/sched.c the only thing i changed in sched.c was to at line 1 and it was basically to include sched_bfs.c, if the scheduler was seleted in the config, heres the patch stuff for sched, all i did was add the three lines to check if bfs was set in the config and then added the #endif at the bottom
Code:
*/
Index: linux-2.6.32-ck2/kernel/sched.c
===================================================================
--- linux-2.6.32-ck2.orig/kernel/sched.c 2009-12-03 21:02:30.565685697 +1100
+++ linux-2.6.32-ck2/kernel/sched.c 2009-12-29 10:15:00.820070753 +1100
@@ -1,3 +1,6 @@
+#ifdef CONFIG_SCHED_BFS
+#include "sched_bfs.c"
+#else
/*
* kernel/sched.c
*
@@ -10909,3 +10912,4 @@ void synchronize_sched_expedited(void)
EXPORT_SYMBOL_GPL(synchronize_sched_expedited);
#endif /* #else #ifndef CONFIG_SMP */
+#endif /* CONFIG_SCHED_BFS */
\ No newline at end of file
.
At the end of sched.c it starts exporting the functions and wait!!!! the first function it exports looks like this!
Code:
/**
* wait_for_completion: - waits for completion of a task
* @x: holds the state of this particular completion
*
* This waits to be signaled for completion of a specific task. It is NOT
* interruptible and there is no timeout.
*
* See also similar routines (i.e. wait_for_completion_timeout()) with timeout
* and interrupt capability. Also see complete().
*/
void __sched wait_for_completion(struct completion *x)
{
wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE, 0);
}
EXPORT_SYMBOL(wait_for_completion);
So maybe sched isnt exporting any functions anymore after the inclusion of sched_bfs.c into it? i dont know all i know it i didnt touch lowmemmory.c and im sooo close to getting BFS but this is boggling me!! Maybe there is a conflict in kernel options im not aware of? I turned off all c groups and the default scheduler.
I wont paste my .config here nothing annoys me more than that, heres a link to a gist of it on github (just like pastbin for thos not in the know lol) bfs enabled .config and here is my sched.c and my lowmemmorykiller.c! Any help would be awesome there are so many people patching bfs into there androif kernel so im hoping this is a common type of problem
EDIT if i remove the mmc drivers it finishes the compile, but i kind of need these have to sleep now ill experiment more, if neone has any ideas about what the heck is goin on id love to know
did you ever fix this? i ran into the same error. a quick google search got me this and it seems to be working. ill post later if it actually works.
edit: succesfully built tdm's gingerkernel with -ck patchset with this. working on bobzhome's kernel now
Sorry this is way late man!! I have been doing alot of hardware hacking as of late, my android stuff especially kernel modding has been pushed to the the side.
Anyways how did BFS turn out any speed improvements? Maybe ill see if I can patch it into cm9 if theres and good reason for that
I am getting this same error after adding bfs to my kernel.. the link you gave is 404. Any one who worked with bfs that can provide some insight, that would be greatly appreciated. Thanks
arch/arm/mach-msm/built-in.o:shooter-panel.c:function msm_dmov_exec_cmd: error: undefined reference to 'wait_for_completion_io'
drivers/built-in.o:clkdev.c:function mmc_wait_for_req: error: undefined reference to 'wait_for_completion_io'
drivers/built-in.o:clkdev.c:function mmc_wait_for_cmd: error: undefined reference to 'wait_for_completion_io'
drivers/built-in.o:clkdev.c:function mmc_erase: error: undefined reference to 'wait_for_completion_io'
make: *** [.tmp_vmlinux1] Error 1
You can get BFS working adding these lines in <kernel-path>/kernel/sched_bfs.c
Code:
/**
* wait_for_completion_io: - waits for completion of a task
* @x: holds the state of this particular completion
*
* This waits for completion of a specific task to be signaled. Treats any
* sleeping as waiting for IO for the purposes of process accounting.
*/
void __sched wait_for_completion_io(struct completion *x)
{
wait_for_common(x, MAX_SCHEDULE_TIMEOUT, TASK_UNINTERRUPTIBLE);
}
EXPORT_SYMBOL(wait_for_completion_io);
After this line:
Code:
EXPORT_SYMBOL(wait_for_completion);

[Q] How to apply manufacturer files to AOSP

Hi!
I've downloaded the source code for Android 2.3.x, compiled it and started it on the emulator.
The next thing I've been trying to do is compiling Android for a specific device. One of the devices is a Sony Ericsson Xperia Active (with unlocked bootloader). I have downloaded the source code from Sony and since there is no instructions how to apply the files I simply copied the files to the root of my Android source directory.
When I run lunch there is no option for the Xperia Active, and when i try to run make from the root directory it seems to compile for the emulator.
I would appreciate any instructions on how to apply manufacturer files to the AOSP directory structure and how to compile it.
Thanks in advance!
/Thomas
Hello again!
Status update on my current struggle to compile Android for the Xperia Active.
In my device/semc dircetory I now have the following directories: satsuma, mogami-common, msm7x30-common. In the satsuma directory (which is copied from the Cyanogenmod source) I found a script which extracts the proprietary files from my device. I copied the directory structuce created by the script to the AOSP root.
When i try to compile the source I get the following error:
build/core/base_rules.mk:78: *** Module name: gralloc.msm7x30
build/core/base_rules.mk:79: *** Makefile location: hardware/msm7k/libgralloc-qsd8k
build/core/base_rules.mk:80: *
build/core/base_rules.mk:81: * Each module must use a LOCAL_MODULE_TAGS in its
build/core/base_rules.mk:82: * Android.mk. Possible tags declared by a module:
build/core/base_rules.mk:83: *
build/core/base_rules.mk:84: * optional, debug, eng, tests, samples
build/core/base_rules.mk:85: *
build/core/base_rules.mk:86: * If the module is expected to be in all builds
build/core/base_rules.mk:87: * of a product, then it should use the
build/core/base_rules.mk:88: * "optional" tag:
build/core/base_rules.mk:89: *
build/core/base_rules.mk:90: * Add "LOCAL_MODULE_TAGS := optional" in the
build/core/base_rules.mk:91: * Android.mk for the affected module, and add
build/core/base_rules.mk:92: * the LOCAL_MODULE value for that component
build/core/base_rules.mk:93: * into the PRODUCT_PACKAGES section of product
build/core/base_rules.mk:94: * makefile(s) where it's necessary, if
build/core/base_rules.mk:95: * appropriate.
build/core/base_rules.mk:96: *
build/core/base_rules.mk:97: * If the component should be in EVERY build of ALL
build/core/base_rules.mk:98: * products, then add its LOCAL_MODULE value to the
build/core/base_rules.mk:99: * PRODUCT_PACKAGES section of
build/core/base_rules.mk:100: * build/target/product/core.mk
build/core/base_rules.mk:101: *
build/core/base_rules.mk:102: *** user tag detected on new module - user tags are only supported on legacy modules. Stop.
And when I try to follow the instructions above adding LOCAL_MODULE_TAGS := optional to Android.mk it does not seem to help. I have also tried to add gralloc.msm7x30 to build/target/product/core.mk but it does not seem to work.
Any help would be appreciated.
Best regards!
/Thomas
Hi again!
I found the problem - I added LOCAL_MODULE_TAGS := optional in the wrong place in hardware/msm7k/libgralloc-qsd8k/Android.mk. The correct place is in the top of the file before LOCAL_PRELINK_MODULE := false.
Regards!
/Thomas

[Q] Trying to build CWM, stuck with no rule to make target kernel

Hi all,
Today I've decided to build CM11 for my DIFRNCE DIT1010 tablet.
I'm trying to get started by building CWM first, since I'm new at this, and also because I figured I'll need that to flash CM in the end.
I know there's the clockworkmod builder website, I've tried that, but it apparently gave me a CWM for loganrelte aka Galaxy Ace 3.
And I also thought I wouldn't learn much by using that website. (sorry, I don't mean to slack off that great tool)
So I've been following the guide on xda-university, ran into some problems which I've been able to fix so far, but now I need help.
Running make -j4 recoveryimage starts off with: (I've translated this from Dutch)
Code:
/home/harm/bin/out/target/product/DIT1010/obj/APPS/SignatureTest_intermediates
find: ‘src’: no such file or directory
PRODUCT_COPY_FILES device/generic/goldfish/data/etc/apns-conf.xml:system/etc/apns-conf.xml ignored.
No private recovery resources for TARGET_DEVICE DIT1010
build/core/tasks/kernel.mk:63: ***************************************************************
build/core/tasks/kernel.mk:64: * Using prebuilt kernel binary instead of source *
build/core/tasks/kernel.mk:65: * THIS IS DEPRECATED, AND WILL BE DISCONTINUED *
build/core/tasks/kernel.mk:66: * Please configure your device to download the kernel *
build/core/tasks/kernel.mk:67: * source repository to kernel/DIFRNCE/DIT1010
build/core/tasks/kernel.mk:68: * See http://wiki.cyanogenmod.org/w/Doc:_integrated_kernel_building
build/core/tasks/kernel.mk:69: * for more information *
build/core/tasks/kernel.mk:70: ***************************************************************
build/core/tasks/kernel.mk:198: warning: overriding commands for target '/home/harm/bin/out/target/product/DIT1010/kernel'
build/core/Makefile:44: warning: ignoring old commands for target '/home/harm/bin/out/target/product/DIT1010/kernel'
... and ends with:
Code:
make: *** No rule to make target 'device/DIFRNCE/DIT1010/kernel', needed by '/home/harm/bin/out/target/product/DIT1010/kernel'. Stop.
make: *** Waiting for unfinished jobs...
So I followed the link it gave me there, which tells me to "Follow the CM Build Guides for your device with the change explained below."
I've searched, but there are no build guides for my device.
Can anyone help me fixing my problem?
Thanks in advance.
Okay, so I've downloaded my kernel from http://crewrktablets.arctablet.com/?wpfb_dl=1473,
extracted it, and I've put the kernel.img in /home/harm/bin/device/DIFRNCE/DIT1010.
Now I get a different output:
Code:
build/core/tasks/kernel.mk:91: **********************************************************
build/core/tasks/kernel.mk:92: * Kernel source found, but no configuration was defined *
build/core/tasks/kernel.mk:93: * Please add the TARGET_KERNEL_CONFIG variable to your *
build/core/tasks/kernel.mk:94: * BoardConfig.mk file *
build/core/tasks/kernel.mk:95: **********************************************************
What's the TARGET_KERNEL_CONFIG variable? I believe it's a path to somewhere, but I don't know where to point it to?

[Q] Extracting kernel image from a rom image

I am trying to build some kernel modules for a Tronsmart MK808ii but Tronsmart have not provided the config (No proc/config.gz) after some messing about I have managed to get some kernel modules to load (I have the Init and Exit pointers in the right place). My first aim is to allow the device to read usb cdroms and iso files for which I need to load isofs.ko cdrom.ko and sr_mod.ko
Actually things go pretty well except there appears to be a misalignment between struct gendisk in the module and kernel. when the genhd driver dereferences gendisk->part0 i get an oops. Looking at the code the only definable length object before part0 seems to be disk_name
In order to be more precise about what's happening and to determine the relative alignment of structures between my kernel and the supplied one I need to be able to disassemble the original kernel which I've extracted from the eeprom - ony problem is that neither file nor objdump know what to do with this image, so I'm presupposing it has some sort of header on it so the bootloader can find the image. The Image starts with KRNL$
Does anyone have an idea of how vmlinux image can be extracted from this rom image?
int major; /* major number of driver */
int first_minor;
int minors; /* maximum number of minors, =1 for
* disks that can't be partitioned. */
char disk_name[DISK_NAME_LEN]; /* name of major driver */
char *(*devnode)(struct gendisk *gd, mode_t *mode);
unsigned int events; /* supported events */
unsigned int async_events; /* async events, subset of all */
/* Array of pointers to partitions indexed by partno.
* Protected with matching bdev lock but stat and other
* non-critical accesses use RCU. Always access through
* helpers.
*/
struct disk_part_tbl __rcu *part_tbl;
struct hd_struct part0;

Categories

Resources