Chinaunix首页 | 论坛 | 博客
  • 博客访问: 111036
  • 博文数量: 70
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 361
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-09 12:40
文章分类

全部博文(70)

文章存档

2013年(64)

2012年(4)

2011年(2)

我的朋友

分类: LINUX

2013-09-16 08:10:47

linux系统下直接访问硬件.关于驱动程序的编写参考小白博客相应文章:
led_device.c文件:
                   led_device.rar   
硬件平台:mini2440 (64M FLASH)
软件平台: Fedora9
linux内核: 友善提供的linux-2.6.32.2-mini2440-2010-921.tar.gz
 
1.解压mini2440光盘中的linux-2.6.32.2-mini2440-2010-921.tar.gz到/opt/FriendlyARM/mini2440/.
2.由于此内核源代码顶层目录中的Makefile中的ARCH=arm,CROSS_COMPILE=arm-linux-已被修改,所以在此不用重复此步骤.
3.编写led_device.c文件,具体见附件.
4.将编写好的led_device.c文件放到内核源代码的/drivers/char/目录下,然后修改/drivers/char/Makefile文件,添加:
obj-m        += led_device.o
6.编译内核模块.make M=./drivers/char/ modules
  编译内核模块前最好先编译一下内核,  make zImage.
  编译结束后,将会在源代码目录下的/drivers/char/下生成我们所需要的led_device.ko文件,将其通过串口下载到mini2440的开发板上.(具体有关串口下载请查看mini2440的用户手册,这里千万不要用ftp传送,经试验用ftp传递的文件大小会发生变化).
7.串口终端下操作开发板,将led_device.ko文件转移到/lib/modules/2.6.32.2-FriendlyARM/目录下.
8.由于开发板上的LED灯相应的模块在启动系统时已经自动加载,故加载led_deivce.ko模块之前应该先停止它.
 #etc/rc.d/init.d/leds stop
9.加载模块.insmod hello.ko,出现以下问题
         
查看以前成功的案例,如博客标题为:ARM平台下:hello内核模块的编译加载
发现,没有进行
*)创建.config文件,这里复制config_mini2440_n35(我的开发板的屏)并重命名为.config
这一步.
操作此步骤,然后重新4-9步骤.
发现以上问题解决.
         
10.卸载模块.rmmod led_device(注意这里不是led_device.ko)
阅读(1013) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~