今天終於把困擾了兩個星期的串列埠給除錯好了。
一切的問題在於沒有仔細的閱讀那段開機啟動的**u-boot,裡面設定的時鐘應該好好體會,因為時鐘改變了波特率,若自己重新設定時鐘,雖然apll_con 與mpll_con可以設定,但是對於clk_div0的hclkx2就沒那麼容易了,雖然不知道是為什麼,但感覺是j-link 下的除錯本身不是很穩定,改變時鐘的分頻,很可能影響cpu跟ram的互動,所以一下子就死在那裡了。
搞了好多天,期間試過直接用sd卡燒寫用交叉工具鏈編譯的.bin檔案,用sd卡啟動的方式來執行(有這種想法是因為不知道在j-link下那段u-boot 做了什麼初始化的設定)。但是結果是簡單的用彙編編寫的程式能夠正常執行,但偶爾在讀寫記憶體是還是會抽風。另外乙個比較嚴重的問題是在彙編呼叫不了c的函式,但編譯是通過的,執行時發現執行不了!反彙編進行檢視過,發現好多段還是不大懂他的意思,其中有個.comment 段下面寫著越界(……out of bounds)不知道是不是問題所在,還有他的相對位址是從0開始的難道不會跟.text段重合?
接下來需要學習ddr與nandflash的驅動,期間看完c語言的本質是關鍵,最好把那些鏈結的問題搞懂,對c才有深刻的認識!
利用jlink實現串列埠除錯
方法是stm32官網的,我只是乙個搬運工 首先是硬體部分,只需要把jlink 器插上就ok,就像平時做硬體除錯一樣,不需要別的東西 下一步是mdk裡面關於硬體部分的設定,如圖所示,只需要更改下圖的部分就ok,別的不用管。接下來附上一段 將這段 新增到檔案中,最好是main函式或者是原本用於uart列...
Ubuntu下串列埠 網路除錯
簡單寫一些心得,當使用串列埠通訊,資料傳輸出現問題可直接讀取檔案形式檢視原始資料流進行源頭排查.在串列埠通訊開發時,程式已經開發完成,但是程式中存在解析問題需要檢視,此時需要關閉程式然後通過串列埠進行排查,簡單排查是可以的,但實際過程中經常出現不易復現的異常排查,而又不能關閉程式,最簡單排查可使用如...
Jlink除錯ARM裸機程式
安裝asd1.2 除錯裸奔程式。我的台式電腦沒有並口,所以只好買個jlink了。注意,現在配的新電腦很少有串列埠和並口了。買板子的時候最好順帶買了jlink最好。這樣省郵費。不要買什麼usb轉接並口的,沒有用。我買了乙個,都用不了。另外注意開發板的jtag是10腳的還是20腳的。買的jlink最好能...