帮助硬件编程使用

I

iandme25

Guest
是否有可能想要的内容存储在记忆体位置理想的直接使用
的 '
C ' ?我发现一个参考
, 说明有可能这样做的使用指针,但它似乎没有明确的对我来说,它是如何可能的?同时我想知道一些很好的参考有关计算机硬件直接交互使用
的 '
C ' ?任何书籍?

 
应该是这样的
国际*磷,男,克;

P值(国际* ) 55675 ;
女= *磷;

克= 1232 ;
* P值克;

我记得在DOS你进入远近分。我不知道这会在XP或Vista的所有接入层内置的操作系统和处理器。我还记得做这样的处理
, 以确定视频内存直接。我怀疑你能做到这一点的东西。

 
提防各种编译依赖和操作系统的依赖问题。

下面是一个例子写的16位值0x27EB到地址0x12345678 ,假设编译器
的 地址空间和整数的大小都是32位,和短期整数是16位:

* (挥发性短* ) 0x12345678 = 0x27EB ;

小心处理被一个应用程序可能会被翻译成不同的物理地址
, CPU的内存管理单元。是的MMU通常是由操作系统控制。如果解决您尝试访问外部应用程序的地址空间的分配的操作系统,那么您可能需要调用一个特殊的作业系统功能来访问该地址,但可能会被拒绝进入出于安全原因。

 
用户端口是一个内核模式驱动程序的视窗
NT/2000 , 让用户模式的程序访问I /
O 端口。这就有可能进入硬件直接从正常可执行文件的同样方式在Windows 95/98

链接: http://www.embeddedtronics.com/public/Electronics/minidaq/userport/UserPort.zip

在操作系统您的C应用访问硬件寄存器会被拦截的操作系统。您可以使用这个方便的工具来释放一些地址直接访问。

 
是的,这是容易的。但是,你怎么知道确切的内存位置?

字节* P值(字节* ) TheAddressYouGot ;
字节byteData = *磷; / /获取字节的地址。

 
接口并行/串行端口槽专用登记设备。这些寄存器映射到特定的内存位置:

并行端口( LPT连接) : 0x378 , 0x278 , 0x3bc
http://en.wikipedia.org/wiki/Parallel_port

所以写作价值0x378

码:

无符号字符*指针= (无符号字符* ) 0x378 ;

*指针= 0xFF ;

 
它不会奏效的
, 因为0x378是一个I /
O 端口地址,
而 不是一个内存地址。你将使用一个输入或输出操作码。

 
如果我们的使用嵌入式C ,那么你有具体的指示
, 将数据装入具体/所需位置的记忆。

 

Welcome to EDABoard.com

Sponsor

Back
Top