2010-06-25 66 views
2

這個問題有點含糊,我爲此表示歉意,但相當模糊的答案會做:) 人們通常如何訪問外部設備的內存地址(比如說,通過USB連接到PC,甚至只是說一個多用途微控制器)?我想知道軟件如何找到地址寫入寄存器或EEPROM空間。通過軟件訪問外部連接的設備上的內存空間/寄存器

例如,如果我想向寄存器0x1234寫入一個值,軟件是否會將此信息(要寫入的寄存器和值)發送到某種類型的驅動程序,該驅動程序「與設備通話」並照顧通過硬件改變價值? 該功能的實現主要是硬件努力?

謝謝!

回答

2

讓我們以一個相當常見的基於8位8051微控制器內核的USB外設控制器爲例。它的一面連接到臺式計算機上的USB主控制器。另一端連接到一個USB設備控制器,該控制器將其自身作爲主機的FIFO端點。

一些8051固件將需要初始化設備端。主機端需要類驅動程序。一旦這些應用程序到位,應用程序開發人員將在主機端擁有一個可以打開進行讀/寫操作的設備名稱。有時供應商會提供一個庫來執行設備特定的任務,並將用戶與原始設備隔離。通常Windows DLL可用於隱藏低級別的I/O並將函數調用作爲設備操作。

附加的8051固件會從設備端監視FIFO並解釋從主機應用程序或DLL發送的消息,然後執行操作。這些操作可能是低級別的,例如從內存位置或寄存器讀取/寫入。它們可能是高電平,如設置可編程計數器陣列的PWM值。

因此,您對寄存器0x1234的寫入的假設性描述與其經常實現的方式並不相同。

相關問題