⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000004.htm

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -