Linux内核---51.驱动程序的hello world

本文介绍了一种在TQ2440开发板上进行Linux内核模块开发的方法,提供了完整的hello驱动示例代码及Makefile配置。通过简单的打印输出功能验证驱动的加载与卸载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发板: TQ2440

1. hello.c

点击(此处)折叠或打开

  1. #include <linux/init.h>
  2. #include <linux/module.h>

  3. MODULE_LICENSE("GPL");

  4. static int __init hello_init(void)
  5. {
  6.     printk(KERN_ALERT "my first driver\n");
  7.     return 0;
  8. }

  9. static void __exit hello_exit(void)
  10. {
  11.     printk(KERN_ALERT "goodbye my first dirver\n");
  12.     return ;
  13. }

  14. module_init(hello_init);
  15. module_exit(hello_exit);
2. Makefile

点击(此处)折叠或打开

  1. #CROSS_COMPILE=/opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
  2. CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
  3. ARCH:=arm
  4. CC=$(CROSS_COMPILE)gcc
  5. LD=$(CROSS_COMPILE)ld

  6. obj-= hello.o

  7. KDIR =/root/kernel/linux-2.6.30.4
  8. PWD = $(shell pwd)
  9. default:
  10.     $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
  11. clean:
  12.     rm -*.ko *.*.mod.*.mod.*.symvers *.order
hello.rar(下载后将文件名改为hello.tar.gz)
3. 当需要在x86 和 arm上相互切换驱动时,不需要写两套Makefile,只需要加一个类型判断即可。

点击(此处)折叠或打开

  1. ARCH=x86
  2. ifeq ($(ARCH), x86)
  3. CROSS_COMPILE= 
  4. KDIR = /lib/modules/$(shell uname -r)/build
  5. else
  6. CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
  7. KDIR =/root/kernel/linux-2.6.30.4
  8. endif
  9. PWD = $(shell pwd)

  10. obj-:= hello.o
  11. all:
  12.     make -C $(KDIR) SUBDIRS=$(PWD) modules
  13. clean:
  14.      rm -*.ko *.*.mod.*.mod.*.symvers *.order
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值