嵌入式開發中遇到的幾個問題(一)

2021-09-26 05:35:03 字數 803 閱讀 8298

以下遇到的問題,開發環境都是基於s3c2440

1、在start.s檔案中,用彙編寫初始化程式時,為什麼加死迴圈?

假設程式只有十幾位元組,那麼把bin檔案燒到nor或者nand中,那這十幾位元組之後的內容,是不確定的,所以只能死迴圈,所以只能死迴圈,否則後果無法預料。

2、ldr r0,=0x12345678 :r0=0x12345678 怎麼理解它?

它是一條偽指令,我們知道arm指令是32位的,在這32位中,高幾位表示mov本身,中間幾位表示r0,剩下的表示簡單值(立即數),所以引入偽指令,它會被拆分,編譯器把這些偽指令轉化成真正的彙編碼,對真正的彙編碼保持不變,之後把這些彙編碼轉化為機器碼,然後儲存在bin檔案中,就可以燒寫到開發板中了。

3、怎麼區分nand和nor啟動?

mov r1, #0

ldr r0, [r1] /* 讀出原來的值備份 */

str r1, [r1] /* 0->[0] */ 

ldr r2, [r1] /* r2=[0] */

cmp r1, r2   /* r1==r2? 如果相等表示是nand啟動 */

ldr sp, =0x40000000+4096 /* 先假設是nor啟動 */

moveq sp, #4096  /* nand啟動 */

streq r0, [r1]   /* 恢復原來的值 */

4、2440中看門狗作用?

看門狗:定時器,倒數計時到0之前,需要設定它,如果不設定它就會復位整個系統,使用這種機制,可以讓我們的軟體定時的去設定這個定時器,如果軟體出現bug,沒有人設定它,當時間到了 ,它就會復位整個系統。

初學嵌入式遇到的幾個問題

1 rvds編譯選項中的ro base rw base entry point有何作用?arm映象檔案分為ro 唯讀 rw 讀寫 和zi 零初始化 三個部分。這三個部分的位址又分為兩種,載入時位址和執行時位址。編譯選項中的ro rw確定了映像檔案由flash載入到記憶體中各部分的起始位址,即執行時位...

嵌入式開發中串列埠問題

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

問題記錄 近期開發中遇到的幾個問題

近期開發的系統b遇到乙個bug,經排查發現問題是乙個截斷導致的。系統的部署情況是 a與b是通過網路進行通訊,系統b是多機部署,b之間是對等的。系統的處理流程如下,a發請求1給b,b處理後在響應2中會回帶一些資訊給系統a,系統a進行一些其他的處理工作,然後將2中b回帶的資訊通過請求3透傳給b,b發現透...