EVOzhe 发表于 2012-08-27 12:04

如果知道 IO的基地址 应如何进行都取数据,直接读的话怎么只能读出0而正常情况读出非0

本帖最后由 EVOzhe 于 2012-08-27 12:07 编辑

请问:当我知道了串口1的基地址,写了一个简单的小驱动我直接用(unsigned char *)去赋值然后读取为什么只能读出0?
      而正常情况下它的值是动态改变的(非0)? 难道单独拿出来用不行么?如果我要这么用的话,我该在使用前做什么操作?
      要初始化什么东西么?unsigned long * __iomem membase = (unsigned long*)0xf1012100;

int __init text_init(void)
{
        int err = 0;
while(1)
{
        printk("value = %ld\n",*membase);
}
        return err;
}
      这样直接读的话只能都出0来,请问高手在这之前我该如何操作才能得到跟使用 linux 串口驱动那样读出串口的值

zt868 发表于 2012-08-27 14:38

回复 1# EVOzhe


    要先做IOREMAP吧

EVOzhe 发表于 2012-08-28 09:30

回复 2# zt868


    我用实时的内核调试工具观察的那个地址,这个地址是不是已经ioremap了。?

shurphey 发表于 2012-08-28 10:31

使用volatile关键字,这个地址是串口的实地址么?注意这个串口的寄存器是可读可写的,还是只读的?
页: [1]
查看完整版本: 如果知道 IO的基地址 应如何进行都取数据,直接读的话怎么只能读出0而正常情况读出非0