Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640524
  • 博文数量: 486
  • 博客积分: 10125
  • 博客等级: 上将
  • 技术积分: 5842
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-27 18:34
文章分类

全部博文(486)

文章存档

2011年(52)

2010年(107)

2009年(289)

2008年(38)

我的朋友

分类: LINUX

2009-09-07 13:58:29

linux2.6最简单的驱动
linux2.6最简单的驱动
2007-08-18 15:40:32
linux 系统下面的驱动与裸机下的驱动不同,不能直接对IO脚进行操作,在linux下面的GPIO脚的读写,只能

通过对其实际地址对应的map地址进行操作。map 通过函数ioremap(StartAddr,Len),实现(StartAddr是实

际起始地址,Len是长度).函数的返回值就是对应的map 地址
对GPIO的读写函数:readl(MapAddr),writel(Value,MapAddr)
linux下面的驱动已经模块化了,make好的驱动可以通过insmod命令调用驱动模块,详情见下面的实例:

/*****************code ***********************/
hello world  linux2.6下:
#include < linux/module.h>
#include < linux/config.h>
#include < linux/init.h>
MODULE_LICENSE("GPL"); // 新,否则有 waring, 去掉了 #define MODULE, 自动定义
static int hello_init(void)
{
printk(KERN_ALERT "Hello, worldn");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel worldn");
}
module_init(hello_init);// 必须!!
module_exit(hello_exit); // 必须!!

/***这里没有用到对GPIO的操作,只是个最简单的实例****/
/*********************** end code ***********************/

Makefile文件的编写:
最简单的就一句话:
obj-m:=name.o

编译:
make -C /PATH/linux2.6 SUBDIRS=$PWD modules
PATH指向linux内核文件夹
完成这步之后就会在当前目录下面生成 .ko文件
linux 2.6内核在板子上跑起来之后就可以用insmod命令加载 .ko文件

NFS server配置


我的是在s3c2440+linux2.6.18+fc5下面完成
其中涉及到通过网络口用tftp服务器下载zImage文件,NFS服务器提供文件系统
我的tftp服务器是windows下面的,在linux下面编译好2.6的内核好放到window下面,启动tftp
服务器,将zImage文件放到其服务目录下
NFS server是在linux 下面建立
安装好NFS server包之后,设置/etc/export文件
对其服务目录及mount IP和权限进行配置
我的配置如下:
/home/lwx/linux *  (rw,sync,no_root_squash)
目录            允许的IP,*表示任何IP都可以,后面的是权限设置

然后/etc/init.d/nfs start  启动NFS服务器
进入/mnt目录,
mkdir nfs
mount -t nfs 192.168.1.188:/home/lwx/linux /mnt/nfs
192.168.1.188为我的linux 主机IP
此时,将zImage内核文件下载到目标板,运行,就可以看到linux 在 arm 上运行了,文件
系统由NFS server 提供,进入命令行,加载驱动,完成!!
阅读(146) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~