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

驱动开发使用的是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为:

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 源代码

#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

你可能感兴趣的:(ubuntu,Module,Path,makefile,编译器,linux内核)