您的位置:首页 > 其它

TQ2440驱动-hello world(入门,注意事项)

2013-10-25 19:02 399 查看



分类:
入门 2011-06-28 20:32
703人阅读 评论(0)
收藏
举报

module编译器linux内核makefilepathubuntu

驱动开发使用的是tq2440的开发板,linux内核版本为linux-2.6.30.4。

开发平台:

虚拟机下UBUNTU,内核2.6.38.10

交叉编译编译器:天嵌公司提供的arm-linux-gcc 4.3.3

内核树:/opt/EmbedSky/linux-2.6.30.4

目标平台:

TQ2440,内核是ARM9

OS内核:配套光盘中的linux-2.6.30.4



1.首先将 linux-2.6.30.4解压到 /opt/EmbedSky/ 文件夹中





2. sudo -s 切换到root下。此时环境变量改变,make时会提示找不到arm-linux-gcc,echo $PATH会看到没有交叉编译器的路径,于是 执行命令export PATH=$PATH:/usr/local/arm/2.95.3/bin,注意,终端关闭后会失效。此时即可找到交叉编译器。





3.拷贝配置文件cp -f config_EmbedSky_W35 .config config_EmbedSky_W35在内核源码包中



4.make menuconfig 退出保存

make -j2



5. make后可以编译驱动程序

Makefile为:

[cpp]
view plaincopy

KERNELDIR=/opt/EmbedSky/linux-2.6.30.4
PWD:=$(shell pwd)
INSTALLDIR=/home/shake/NFS
CC=arm-linux-gcc
obj-m := hello.o
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
cp hello.ko $(INSTALLDIR)
clean:
rm -rf *.o *.ko *.mod.c *.markers *.order *.symvers
.PHONY:modules modules_install clean



hello.c 源代码

[c-sharp]
view plaincopy

#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL"); //添加这句话,否则在PC上编译的时候会出现
#include <linux/kernel.h> //添加了这个头文件printk函数在里面
static int hello_init(void)
{
printk(KERN_INFO " Hello World enter/n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_INFO " Hello World exit/n ");
}
module_init(hello_init);
module_exit(hello_exit);

MODULE_AUTHOR("Song Baohua");
MODULE_DESCRIPTION("A simple Hello World Module");
MODULE_ALIAS("a simplest module");





/home/shake/NFS目录通过nfs挂载



开发板端执行insmod

rmmod
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: