Linux内核---51.驱动程序的hello world
2016-07-09 10:36
369 查看
开发板: TQ2440
1. hello.c
点击(此处)折叠或打开
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int __init hello_init(void)
{
printk(KERN_ALERT "my first driver\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT "goodbye my first dirver\n");
return ;
}
module_init(hello_init);
module_exit(hello_exit);
2. Makefile
点击(此处)折叠或打开
#CROSS_COMPILE=/opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
ARCH:=arm
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
obj-m = hello.o
KDIR =/root/kernel/linux-2.6.30.4
PWD = $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
hello.rar(下载后将文件名改为hello.tar.gz)
3. 当需要在x86 和 arm上相互切换驱动时,不需要写两套Makefile,只需要加一个类型判断即可。
点击(此处)折叠或打开
ARCH=x86
ifeq ($(ARCH), x86)
CROSS_COMPILE=
KDIR = /lib/modules/$(shell
uname -r)/build
else
CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
KDIR =/root/kernel/linux-2.6.30.4
endif
PWD = $(shell pwd)
obj-m := hello.o
all:
make -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
1. hello.c
点击(此处)折叠或打开
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("GPL");
static int __init hello_init(void)
{
printk(KERN_ALERT "my first driver\n");
return 0;
}
static void __exit hello_exit(void)
{
printk(KERN_ALERT "goodbye my first dirver\n");
return ;
}
module_init(hello_init);
module_exit(hello_exit);
2. Makefile
点击(此处)折叠或打开
#CROSS_COMPILE=/opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
ARCH:=arm
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
obj-m = hello.o
KDIR =/root/kernel/linux-2.6.30.4
PWD = $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
hello.rar(下载后将文件名改为hello.tar.gz)
3. 当需要在x86 和 arm上相互切换驱动时,不需要写两套Makefile,只需要加一个类型判断即可。
点击(此处)折叠或打开
ARCH=x86
ifeq ($(ARCH), x86)
CROSS_COMPILE=
KDIR = /lib/modules/$(shell
uname -r)/build
else
CROSS_COMPILE= /opt/EmbedSky/4.3.3/bin/arm-none-linux-gnueabi-
KDIR =/root/kernel/linux-2.6.30.4
endif
PWD = $(shell pwd)
obj-m := hello.o
all:
make -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order
相关文章推荐
- Linux内核---50.各个平台下内核模块的编译
- Linux下mysql基本操作
- linux开发---2.汇编语言arm-linux下的打印
- Linux系统中查看日志的常用命令
- Redhat使用CentOS的yum
- Linux内核---49.i2s驱动分析1测试
- Linux内核---48.spi驱动修改
- Linux内核---47.关于clk_get与clk_enable
- Linux内核---46.关于mem_map
- Linux内核---45.关于initcall
- Linux内核---44.关于中断号与中断引脚
- Linux内核---43.文件系统的挂载
- Linux内核---42.arm 内存初始化2
- [CentOS7]安装mysql遇到的问题
- Linux内核---41.arm 内存初始化
- Linux内核---40.模块加载过程分析
- Linux内核---39.ELF 结构分析
- centos更新163源并升级内核
- Linux小知识
- linux常用命令