zhoujb99
驱动牛犊
驱动牛犊
  • 注册日期2004-03-12
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望6点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1729回复:2

请大家帮我看一下一个简单的字符设备驱动程序问题。片选信号一直为高,不解

楼主#
更多 发布于:2005-07-02 09:00
  请大家帮我看一下一个简单的字符设备驱动程序问题。
我对2410 datasheet的理解:当对0x10000001~0x18000000地址空间寻址时,nGCS2会变为低电平一片选外部芯片。但是当我读取这个设备的时候,为什么nGCS2老是保持为高啊?请教大牛!
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <asm/io.h>
#include <linux/miscdevice.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/poll.h>
#include <linux/spinlock.h>
#include <linux/irq.h>
#include <linux/delay.h>
#include <asm/arch/S3C2410.h>
#include <asm/hardware.h>

#define DEVICE_NAME"FPGA_LINUX"
#define FPGA_LINUX_MAJOR 232
#define IRQ_FPGA_LINUX IRQ_EINT0
#define MAX_COLUMN 720
#define GET_DATA(x) (*(volatile unsigned int *)x)

unsigned long FPGA_DATA;

static int key_value[MAX_COLUMN];

static void s3c2410_io_port_init(void)
{
set_gpio_ctrl(GPIO_F0 | GPIO_PULLUP_DIS | GPIO_MODE_ALT0);
(void *)FPGA_DATA=ioremap(0x11000000,4);
}

static int s3c2410_read(struct file * file, char * buffer, size_t count, loff_t *ppos)
{
int i;
       if (count != sizeof key_value)
               return -EINVAL;
for(i=0;i<720;i++)
{
key_value = GET_DATA(FPGA_DATA);
}
       copy_to_user(buffer, &key_value, i*4);
       return i;
}

static struct file_operations s3c2410_fops = {
owner:THIS_MODULE,
read: s3c2410_read,
};

static devfs_handle_t devfs_handle;
static int __init s3c2410_init(void)
{
int ret;
int i;
for(i=0;i<MAX_COLUMN;i++)  key_value=0;

ret = register_chrdev(FPGA_LINUX_MAJOR, DEVICE_NAME, &s3c2410_fops);
if (ret < 0) {
 printk(DEVICE_NAME " can't register major number\n");
 return ret;
}
s3c2410_io_port_init();

               devfs_handle = devfs_register(NULL, DEVICE_NAME, DEVFS_FL_DEFAULT,FPGA_LINUX_MAJOR, 0, S_IFCHR | S_IRUSR | S_IWUSR,&s3c2410_fops, NULL);

return 0;
}

static void __exit s3c2410_exit(void)
{
devfs_unregister(devfs_handle);
unregister_chrdev(FPGA_LINUX_MAJOR, DEVICE_NAME);
}
module_init(s3c2410_init);
module_exit(s3c2410_exit);
stp111
驱动牛犊
驱动牛犊
  • 注册日期2005-06-06
  • 最后登录2005-08-18
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-07-12 00:03
帮你顶一下
I like CS.
lsshao
驱动牛犊
驱动牛犊
  • 注册日期2004-02-03
  • 最后登录2007-10-29
  • 粉丝0
  • 关注0
  • 积分33分
  • 威望5点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-07-17 21:52
你在物理地址映射成虚拟地址之前,好像没有向系统注册所使用的资源!!!
游客

返回顶部