BBS水木清华站∶精华区
发信人: ogb (ogb), 信区: Linux
标 题: Linux下如何直接读写内存物理地址?
发信站: BBS 水木清华站 (Mon Oct 16 13:51:03 2000)
做了一块ISA的插卡,映射到系统的D000段,
如果在Linux中要编程对这块内存进行访问,应该怎么写啊?
另外,在Linux下如何直接读写端口啊?
--
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.64.178]
发信人: hellguard (小四), 信区: Linux
标 题: Re: Linux下如何直接读写内存物理地址?
发信站: BBS 水木清华站 (Mon Oct 16 15:14:58 2000)
kmfd = open( "/dev/kmem", O_RDONLY );
if ( kmfd < 0 )
{
perror( "open" );
exit( -1 );
}
lseek( kmfd, offset, SEEK_SET );
read( kmfd, byteArray, byteArrayLen );
outputBinary( byteArray, byteArrayLen );
free( byteArray );
【 在 ogb (ogb) 的大作中提到: 】
∶ 做了一块ISA的插卡,映射到系统的D000段,
∶ 如果在Linux中要编程对这块内存进行访问,应该怎么写啊?
∶ 另外,在Linux下如何直接读写端口啊?
--
也许有一天,他再从海上蓬蓬的雨点中升起,
飞向西来,再形成一道江流,再冲倒两旁的石壁,
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生......
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.73.87.125]
发信人: ogb (ogb), 信区: Linux
标 题: Re: Linux下如何直接读写内存物理地址?
发信站: BBS 水木清华站 (Mon Oct 16 20:13:44 2000)
多谢指点!但是还有一些不明的地方:
1.程序中打开的kmem是指的一个设备文件吗?
2.是否O_RDONLY说明只能对该内存区进行读,但是不能写?
3.offset就是我那块卡上的内存所映射的地址把?比如,我的卡
DOS下寻址是D000:1234的话,在这里是不是就应该是0xd1234
呢?
另外,卡上的地址译码只使用了20位地址线,会不会存在跟系统
内存冲突的可能?
4.程序中的outputBinary是什么作用?
小弟首次接触Linux下的程序设计,望大虾不吝赐教!
【 在 hellguard (小四) 的大作中提到: 】
∶ kmfd = open( "/dev/kmem", O_RDONLY );
∶ if ( kmfd < 0 )
∶ {
∶ perror( "open" );
∶ exit( -1 );
∶ }
∶ lseek( kmfd, offset, SEEK_SET );
∶ read( kmfd, byteArray, byteArrayLen );
∶ outputBinary( byteArray, byteArrayLen );
∶ free( byteArray );
--
※ 修改:·ogb 於 Oct 16 20:14:26 修改本文·[FROM: 166.111.64.178]
※ 来源:·BBS 水木清华站 smth.org·[FROM: 166.111.64.178]
发信人: hellguard (小四), 信区: Linux
标 题: Re: Linux下如何直接读写内存物理地址?
发信站: BBS 水木清华站 (Tue Oct 17 09:48:13 2000)
1. /dev/kmem是操作系统提供的伪文件系统支持,你就当它是
普通文件名即可,其offset对应Virtual Address
2. 可以读写打开,调试驱动的时候我经常从应用层写/dev/kmem临时
调整数据,没有softice可用,这些办法将就用。
3. 你还是抓个师兄给你讲讲Device Driver的设计吧,我开始以为你
要在应用层上临时干扰一下什么。
4. outputBinary是无用的,一个自己写的kmem dump函数。
【 在 ogb (ogb) 的大作中提到: 】
∶ 多谢指点!但是还有一些不明的地方:
∶ 1.程序中打开的kmem是指的一个设备文件吗?
∶ 2.是否O_RDONLY说明只能对该内存区进行读,但是不能写?
∶ 3.offset就是我那块卡上的内存所映射的地址把?比如,我的卡
∶ DOS下寻址是D000:1234的话,在这里是不是就应该是0xd1234
∶ 呢?
∶ 另外,卡上的地址译码只使用了20位地址线,会不会存在跟系统
∶ 内存冲突的可能?
∶ 4.程序中的outputBinary是什么作用?
∶ 小弟首次接触Linux下的程序设计,望大虾不吝赐教!
--
也许有一天,他再从海上蓬蓬的雨点中升起,
飞向西来,再形成一道江流,再冲倒两旁的石壁,
再来寻夹岸的桃花。然而,我不敢说来生,也不敢信来生......
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.73.87.125]
发信人: holly (有些已经离去, 有些永远不会来), 信区: Linux
标 题: Re: Linux下如何直接读写内存物理地址?
发信站: BBS 水木清华站 (Tue Oct 17 10:07:22 2000)
【 在 ogb (ogb) 的大作中提到: 】
∶ 做了一块ISA的插卡,映射到系统的D000段,
∶ 如果在Linux中要编程对这块内存进行访问,应该怎么写啊?
phys_to_virt
∶ 另外,在Linux下如何直接读写端口啊?
inX/outX, X == b, w, etc
--
那悲歌总会在梦中清醒, 诉说一点哀伤过的往事
那看似漫不在乎转过身的, 是风干泪眼后萧瑟的影子
九月的事早已埋藏在风雪之中
为何我听到你胸口的热血汹涌
※ 来源:·BBS 水木清华站 smth.org·[FROM: 202.120.13.24]
BBS水木清华站∶精华区