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