嵌入式開發中向位址空間寫資料的方式

2021-08-28 08:52:21 字數 609 閱讀 2390

做嵌入式開發的,一定免不了和硬體打交道。我們通過讀寫暫存器的方式來管理相關的硬體,這裡的暫存器並不是cpu空間中的暫存器,我們的暫存器實際上是乙個位址單元(屬於特殊暫存器),燒寫程式時要被對映到位址空間上。所以我們通過讀寫位址這種方法來訪問暫存器是避免不了的。

方法:

(*(volatile unsigned int *)0x11400020) = 0x22   //向0x11400020這個位址指向的空間寫入0x22值
*(unsigned int *)0x11400020位址是沒有型別的,我們要根據寫入的資料給它轉換成對應的型別,前面加(unsigned int *)進行轉換

(*(volatile unsigned int *)0x11400020)由於我們訪問的是硬體位址,有時候資料是不受我們控制的(易變的)。所以加上volatile 修飾符,避免編譯器自作主張的優化

#define  addr    (*(volatile unsigned int *)0x11400020)

......

addr = 0x22; //向位址addr 寫入 0x22

嵌入式開發 Bootloader的燒寫

在開發時,通常使用各種命令操作bootloader,一般通過串列埠來連線pc和開發板,可以在串列埠上輸入各種命令 觀察執行結果 燒寫核心和檔案系統等。這也只是堆開發人員才有意義,使用者使用產品時是不用串列埠來控制bootloader的。從這個觀點看,bootloader可以分為以下兩種工作模式 啟動...

嵌入式中位址 函式之間的轉換

經常見到嵌入式設計中,將某一程式段的入口位址轉換為乙個函式,我們來分析一下它的成分 如在bootloader的0x00000020位址上的雙字單元中有這樣一條語句 address is 0x00000020 b powerdown jump to the flag powerdown powerdo...

嵌入式開發中串列埠問題

用筆記本,往往沒有串列埠,一般用usb轉串列埠,總結了下,首先一般這個轉換器都是pl2303的,可以在配套的驅動資料夾下看到乙個pl2303.dat的資料夾,就是它了。window下,用dnw或者securecrt,有時會出現不通,或者不能從pc鍵盤輸入,現在就是這樣 這個時候,確認線是接好的,然後...