您的位置:首页 > 运维架构 > Linux

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