linux 驱动 编译加载 , 程序搬移到目标板,驱动源码和头文件位置
2012-08-25 12:47
701 查看
1:驱动源码和头文件位置
/linux-2.6.32.2/drivers/char
linux-2.6.32.2/include
linux-2.6.32.2/arch/arm/mach-s3c2410/include/mach/ //这个目录的头文件在make的过程中会被copy到linux-2.6xx/include目录
linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c
2:程序搬移到目标板
串口使用命令: mount -t nfs -o nolock 192.168.0.46:/home/hgj /mnt
要注意在服务端开启nfs服务,在 /etc/exports目录设置好共享目录
3:驱动 编译加载
Step1:编辑配置文件Kconfig,加入驱动选项,使之在 make menuconfig的时候出现
打开linux-2.6.32.2/drivers/char/Kconfig文件 修改添加模块名称 ,
保存退出, 这时在 linux-2.6.32.2目录位置运行一下 make menuconfig 就可以在 Device
Drivers Æ Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,
此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,
在此我们选择<M>
Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行
编译内核还是不能把 mini2440_hello_module.c 编译进去的,还需要在 Makefile 中把内核配置
选项和真正的源代码联系起来,打开 linux-2.6.32.2/drivers/char/Makefile,添加模块依赖文件,注意模块名称要和在上面的Kconfig文件中
添加的模块名称一致.
Step3:这时回到linux-2.6.32.2源代码根目录位置,执行 make modules,就可以生成
我们所需要的内核模块文件 mini2440_hello_module.ko了
set4:通过nfs服务,把上面的模块文件复制到目标板/lib/modules/2.6.29目录.
set5:然后再板子终端中执行#modprobe mini2440_hello_module . 删除模块为:#rmmod mini2440_hello_module ,显示有哪些:lsmod
step6;模块在应用中调用方法:直接使用/dev/加设备名打开.
比如: int fd = open("/dev/leds", 0); // 打开设备-1;
那么设备名怎么来的呢, 在 驱动的注册函数中定义的:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
};
ret = misc_register(&misc);
/linux-2.6.32.2/drivers/char
linux-2.6.32.2/include
linux-2.6.32.2/arch/arm/mach-s3c2410/include/mach/ //这个目录的头文件在make的过程中会被copy到linux-2.6xx/include目录
linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c
2:程序搬移到目标板
串口使用命令: mount -t nfs -o nolock 192.168.0.46:/home/hgj /mnt
要注意在服务端开启nfs服务,在 /etc/exports目录设置好共享目录
3:驱动 编译加载
Step1:编辑配置文件Kconfig,加入驱动选项,使之在 make menuconfig的时候出现
打开linux-2.6.32.2/drivers/char/Kconfig文件 修改添加模块名称 ,
保存退出, 这时在 linux-2.6.32.2目录位置运行一下 make menuconfig 就可以在 Device
Drivers Æ Character devices 菜单中看到刚才所添加的选项了,按下空格键将会选择为<M>,
此意为要把该选项编译为模块方式;再按下空格会变为<*>,意为要把该选项编译到内核中,
在此我们选择<M>
Step2:通过上一步,我们虽然可以在配置内核的时候进行选择,但实际上此时执行
编译内核还是不能把 mini2440_hello_module.c 编译进去的,还需要在 Makefile 中把内核配置
选项和真正的源代码联系起来,打开 linux-2.6.32.2/drivers/char/Makefile,添加模块依赖文件,注意模块名称要和在上面的Kconfig文件中
添加的模块名称一致.
Step3:这时回到linux-2.6.32.2源代码根目录位置,执行 make modules,就可以生成
我们所需要的内核模块文件 mini2440_hello_module.ko了
set4:通过nfs服务,把上面的模块文件复制到目标板/lib/modules/2.6.29目录.
set5:然后再板子终端中执行#modprobe mini2440_hello_module . 删除模块为:#rmmod mini2440_hello_module ,显示有哪些:lsmod
step6;模块在应用中调用方法:直接使用/dev/加设备名打开.
比如: int fd = open("/dev/leds", 0); // 打开设备-1;
那么设备名怎么来的呢, 在 驱动的注册函数中定义的:
static struct miscdevice misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = DEVICE_NAME,
.fops = &dev_fops,
};
ret = misc_register(&misc);
相关文章推荐
- Linux下通过源码编译安装程序(configure/make/make install的作用,然后在/etc/profile文件里修改PATH环境变量)
- linux环境下编译源码和运行程序时,include文件和lib库文件的注意事项
- 关于linux驱动(应用)程序头文件使用
- 关于Linux驱动(应用)程序头文件使用
- linux下用gcc编译c程序时遇到的问题: error: stdio.h: 没有那个文件或目录
- linux编译ko文件(不同内核源码版本)
- 在linux源码树下,编译arm驱动
- Linux驱动的编译与加载
- linux驱动头文件位置
- 关于linux驱动(应用)程序头文件使用
- linux启动时对编译进内核驱动模块的加载
- linux系统mysql加载配置文件(文件名称、位置、顺序)
- Linux下通过源码编译安装程序
- Linux通过源码编译安装程序;yum和源码安转软件包的区别
- 转:linux启动时对编译进内核驱动模块的加载
- 在linux内核文件中添加自己的驱动,添加自己的linux驱动,编译自己的linux驱动程序方法和例子图文
- Linux 源码编译与程序运行期间静态库与动态库搜索路径
- linux下如何搜索一个文件或程序所在位置
- 在linux中把汇编或c程序交叉编译成二进制文件烧录开发板过程详解
- linux下编译程序使其处理超过2G的大文件