作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
以下代码有问题。我需要它来访问端口 0x300 到 0x307,所以我这样做:
#ifdef LINUX
if(ioperm(PORT1,9,1)==-1) printf("Error in ioperm()");
#endif
其中 PORT1=0x300。
然后我这样做:
int j5inp(unsigned int addr){
#ifdef DOS
return inp(addr);
#endif
#ifdef LINUX
return inb(addr);
#endif
}
void j5outp(unsigned int addr, unsigned int val){
#ifdef DOS
outp(addr,val);
#endif
#ifdef LINUX
outb(val,addr);
#endif
}
/************/
hrd_check()
{
j5outp(PCHECK,0xAA);
if (j5inp(PCHECK)!=0xAA) return(0);
j5outp(PCHECK,0x55);
if (j5inp(PCHECK)!=0x55) return(0);
return(1);
}
其中 PCHECK=0x307。
我已经对此进行了测试,我发现我能够在发送后从端口检索值 0xAA,但是第二个 (0x55) 失败,因为 inb() 仍然返回 0xAA。
我做错了什么吗?这可能是硬件问题吗?我应该在每次调用 inb() 时尝试调用 ioperm() 函数还是应该尝试使用 iopl() ?
对了,我用的板子是研华PCM-3342
最佳答案
好吧,我猜这是那些简单消失的问题之一。我相信我纠正了一个我确信与这个问题无关的小错误。但是当我这样做时,问题就消失了。
我会更好地描述我是如何解决它的,但我真的不知道我是怎么做到的。
关于在嵌入式设备中使用 ioperm() 与端口通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024950/
以下代码有问题。我需要它来访问端口 0x300 到 0x307,所以我这样做: #ifdef LINUX if(ioperm(PORT1,9,1)==-1) printf("Error in iope
我读到我们需要 super 用户权限才能从用户空间访问 I/O 端口。但我说的是不同的行为。普通用户下ioperm成功。 #include #include #include int main(
我是一名优秀的程序员,十分优秀!