您的位置:首页 > 移动开发 > Android开发

ok6410开发板android底层驱动模块编写,出现insmod:init_module ‘hello.ko’ failed (Exec format error)

2013-03-09 22:31 676 查看
1.在pc linux 系统上基于linux2.6.32 编译生成hello.ko文件,把hello.ko文件移到以linux2.6.32为内核的linux开发板上,执行insmod hello.ko,成功。

2.把同一个hello.ko文件移植到android开发板,在android串口终端输入insmod hello.ko,失败。显示信息insmod:init_module ‘hello.ko’ failed (Exec format error)。

查看android系统内核基于linux2.6.36.android内核原文件为forlinx_android2.3_kernel_v1.01.tar.gz,其实是基于linux2.3.6。只是ok6410对其稍作修改。把forlinx_android2.3_kernel_v1.01.tar.gz文件以及arm-linux-gcc-4.3.2.tgz、arm-none-linux-gnueabi-arm-2008q3-72-for-linux.tar.bz2两个编译器解压安装到linux系统上,怎么安装就不说了。

3.解压forlinx_android2.3_kernel_v1.01.tar.gz至/home/wangben/ 目录下,命令切换至android2.3_kernel_v1.01

#cd /home/wangben/android2.3_kernel_v1.01

#make clean

#make

4.在/home/wangben/android2.3_kernel_v1.01/arch/arm/boot生成uImage.内核即编译完成。

5.编写hello.c



和Makefile文件



6.把此两个文件放在同一个文件夹hello内。
将命令切换至hello下
#cd /home/wangben/hello
#make

生成hello.ko文件。也可以在linux终端使用命令
# make -C /home/wangben/android2.3_kernel_v1.01/ M=/home/wangben/hello
也可生成hello.ko文件。 -C 后为android 对应linux源码目录 M为hello.c所在目录。

把文件传送到android开发板根目录。在开发板android串口终端把路径切换为android开发板根目录,执行insmod hello.ko.哈哈。。成功执行了。配android 串口终端如下所示:

/ # insmod hello.ko

Hello world

/ # lsmod

hello 593 0 - Live 0xbf006000

/ # rmmod hello

Hello world exit

/ #

大功告成!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐