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


分类: 入门 703人阅读 评论(0) 收藏 举报
module 编译器 linux内核 makefile path ubuntu

驱动开发使用的是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 plain copy
  1. KERNELDIR=/opt/EmbedSky/linux-2.6.30.4   
  2. PWD:=$(shell pwd)   
  3. INSTALLDIR=/home/shake/NFS    
  4. CC=arm-linux-gcc  
  5. obj-m := hello.o   
  6. modules:   
  7.     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules   
  8. modules_install:   
  9.     cp hello.ko $(INSTALLDIR)   
  10. clean:   
  11.     rm -rf *.o *.ko *.mod.c *.markers *.order *.symvers   
  12. .PHONY:modules modules_install clean  

 

hello.c 源代码

[c-sharp] view plain copy
  1. #include <linux/init.h>  
  2. #include <linux/module.h>  
  3. MODULE_LICENSE("GPL");           //添加这句话,否则在PC上编译的时候会出现  
  4. #include <linux/kernel.h>               //添加了这个头文件printk函数在里面   
  5. static int hello_init(void)  
  6. {  
  7.   printk(KERN_INFO " Hello World enter/n");  
  8.   return 0;  
  9. }  
  10. static void hello_exit(void)  
  11. {  
  12.   printk(KERN_INFO " Hello World exit/n ");  
  13. }  
  14. module_init(hello_init);  
  15. module_exit(hello_exit);  
  16.   
  17. MODULE_AUTHOR("Song Baohua");  
  18. MODULE_DESCRIPTION("A simple Hello World Module");  
  19. MODULE_ALIAS("a simplest module");  

 

 

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

 

开发板端执行insmod

                  rmmod


你可能感兴趣的:(入门)