做嵌入式開發的,一定免不了和硬體打交道。我們通過讀寫暫存器的方式來管理相關的硬體,這裡的暫存器並不是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鍵盤輸入,現在就是這樣 這個時候,確認線是接好的,然後...