假設在存儲器(DDRAM)中存在被定義爲TIMER
及其32位地址TIMER_ADDR
的32位寄存器。在C程序中讀取硬件寄存器
struct timer {
uint32_t start:1;
uint32_t mode: 3;
uint32_t init: 4;
uint32_t value:24
}
後來我定義了一個局部變量loc_timer爲:
struct timer loc_timer;
我怎麼能讀這個寄存器在本地註冊
uint32_t TIMER_ADDR; // 32 bits address declared as uint32_t
爲定時器的佈局定義該程序讓我可以修改內容
loc_timer.mode = 4;
loc_timer.init = 10;
並將其重新寫回到註冊TIMER
?
像
(*(uint32_t *))&loc_timer = (*((uint32_t *)(TIMER_ADDR))); // read
(*((uint32_t *)(TIMER_ADDR))) = (*(uint32_t *))&loc_timer; // write
,但它不工作:-(
可能是你的興趣:表示C/C++的硬件(http://www.open-std.org/jtc1/sc22/wg21/docs /ESC_SF_02_465_paper.pdf) – Devolus
@Devolus,是的,我確實有這個。 –