天嵌 ARM开发社区

 找回密码
 注册
查看: 2506|回复: 5

如何通过.c + Makefile 完成驱动程序编译

[复制链接]
eddy_liu 发表于 2010-11-22 13:10:13 | 显示全部楼层 |阅读模式
找了几个板子的用户手册看。如果想编写一个驱动程序,大多是把 .c 的源文件写好,然后放在指定的设备文件目录下,再修改该目录下的makefile和 Kconfig文件。最后用make menuconfig添加进来,再最后 make SUBDIR=  modules生成.ko文件
我觉得挺麻烦的,如果就是.c 源文件+makefile 来生成驱动文件应注意什么呢?
下面是个例子

一个简单的打印字符的驱动程序
#include <linux/init.h>
#include <linux/module.h>

MODULE_LICENSE("Dual BSD/GPL");

static int hello_init(void)
{
    printk(“hello, linux\n”);
}

static void hello_exit(void)
{
    printk(“goodbye linux \n”);
}

module_init(hello_init);
module_exit(hello_exit);

其Makefile为

1 EXEC = hello
2 OBJS = hello.o
3 SRC  = hello.c

4 INCLUDE = /usr/src/linux-2.6.10/include
5 CC = arm-linux-gcc
6 LD = arm-linux-ld
7 MODCFLAGS = -O2 -Wall -D__KERNEL__ -DMODULE -I$(INCLUDE) -march=armv4t -c -o
8 LDFLAGS = -r

9 all: $(EXEC)

10 $(EXEC): $(OBJS)
    $(LD) $(LDFLAGS) -o $@ $(OBJS)

11 %.o:%.c
    $(CC) $(MODCFLAGS) -mapcs -c $< -o $@

12 clean:
    -rm -f $(EXEC) *.o *~ core

#make 时,报错。说是好多asm/ 目录下的文件找不到。

不知道是否哪位蝈蝈,有编译过的例子,传我一份。最好就是 .c 源文件 + makefile 。当然驱动的源文件越简单越好
machoe 发表于 2010-11-22 13:23:53 | 显示全部楼层
天嵌的移植手册step by step后面有这样的例子,楼主自行参考
天嵌_support1 发表于 2010-11-22 14:05:40 | 显示全部楼层
1# eddy_liu


“如果就是.c 源文件+makefile 来生成驱动文件应注意什么呢?”
这个看你配置内核需要生成是模块方式还是把驱动直接编译进入内核。
你加了自己的驱动后,除了修改该目录下的Makefile,还要修改Kconifg,方便配置内核的时候有了你的驱动选项。
网友学习很细,建议刚刚开始不要每个角落刨根问题,先概括性的了解一下也可以的。
就像你看一本书。先看一下书的目录,概要,知道能做什么,在用的时候再去具体琢磨每一节的细节意思
 楼主| eddy_liu 发表于 2010-11-22 22:20:36 | 显示全部楼层
天嵌的移植手册step by step后面有这样的例子,楼主自行参考
machoe 发表于 2010-11-22 13:23

没有吧,我说的是.c +makefile来直接编译驱动模块,而不是把 .c 的源文件写好,然后放在指定的设备文件目录下,再修改该目录下的makefile和 Kconfig文件。最后用make menuconfig添加进来,再最后 make SUBDIR=  modules生成.ko文件
其实上面的例子就是从step by step 中摘录的
 楼主| eddy_liu 发表于 2010-11-22 22:22:57 | 显示全部楼层
1# eddy_liu


“如果就是.c 源文件+makefile 来生成驱动文件应注意什么呢?”
这个看你配置内核需要生成是模块方式还是把驱动直接编译进入内核。
你加了自己的驱动后,除了修改该目录下的Makefile,还要修改 ...
embedsky_lxt 发表于 2010-11-22 14:05

谢谢版主的建议,版主说的很对。上面的例子来之天嵌step by step,上面的例子我也试了几次了。但我觉得把 .c 的源文件写好,然后放在指定的设备文件目录下,再修改该目录下的makefile和 Kconfig文件。最后用make menuconfig添加进来,再最后 make SUBDIR=  modules生成.ko文件这种方法太麻烦了。想通过直接.c源文件+makefile的方式来编译驱动,版主能给些意见和建议吗?或者给个很简单的例子
天嵌_support1 发表于 2010-11-23 10:27:07 | 显示全部楼层
5# eddy_liu


我没有更好的办法了,期望你找到的时候告诉我一下,网友
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-6 07:18 , Processed in 1.029336 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表