1.Kernel Module
1.1 add .c file
./kernel_imx/drivers/hello_module/hello.c:
#include <linux/module.h>
#include <linux/string.h>
static int __init hello_module_init(void)
{
printk(KERN_DEBUG "hello_module_init\n");
return 0;
}
static void __exit hello_module_exit(void)
{
printk(KERN_DEBUG "hello_module_exit\n");
}
module_init(hello_module_init);
module_exit(hello_module_exit);
MODULE_LICENSE("GPL");
1.2 add Makefile
./kernel_imx/drivers/hello_module/Makefile:PWD = $(shell pwd)
KERNEL_SRC = /home/xxx/Projects/Android/android4.4.3/kernel_imx/
CROSS_COMPILE = /home/xxx/Projects/Android/android4.4.3/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.7/bin/arm-linux-androideabi-
obj-m := hello.o
all:
make ARCH=arm CFLAGS_MODULE=-fno-pic CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(PWD) modules
clean:
make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) -C $(KERNEL_SRC) M=$(PWD) clean
1.3 compile
cd ./kernel_imx/driver/hello_module
make
1.4 result

2. Application
2.1 add .c file
./kernel_imx/drivers/hello_app/hello_app.c
#include <stdio.h>
#include <string.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
printf("hello app\n");
return 0;
}
2.2 add Makefile
./kernel_imx/drivers/hello_app/Makefile
EXEC = hello_app
CC := arm-linux-androideabi-gcc
#CC := arm-none-linux-gnueabi-gcc
all: $(EXEC)
$(EXEC): hello_app.c
$(CC) hello_app.c -static -o hello_app
clean:
rm -f hello_app *.o
ps. need download android NDK and get the toolchain
2.3 compile
cd./kernel_imx/drivers/hello_app/
make
2.4 result

|