我看到一些代碼將讀/寫一些外設寄存器。我發現寫入操作之後都出現了一些延遲。在我看來,軟件需要等待該值在HW上生效。有些網頁說寄存器每個時鐘週期都會更新一次。我想這就是等待的原因。那麼,我的問題是:如何讀/寫一個寄存器
- 讀操作是否也需要這樣的延遲?如果是的話,當軟件需要讀/寫一個寄存器時,這樣做的正確順序是什麼?像
[延遲]
TMP = some_register //讀
some_register = TMP + 1 //寫
[延遲]
或
TMP = some_register //讀取
[延遲]
some_register = TMP + 1 //寫
[延遲]
如果SW沒有寫入操作之後這樣的延遲是什麼?我實際上看到一些沒有延遲的寫入操作可以在一些較慢的CPU上正常工作。但是當代碼在一些更快的CPU上運行時,它會失敗。我認爲延遲是合理的。我只需要解釋爲什麼它適用於較慢的CPU。
我對寄存器的功能不是很熟悉。任何有用的材料或鏈接?
什麼平臺/ CPU,x86,SPARC,BBC Micro? :D – Skurmedel 2010-08-13 16:27:26
您使用哪種微控制器或微處理器和外部硬件? – starblue 2010-08-13 16:30:16
X86 ............ – woho 2010-08-13 16:30:30