1. 程式人生 > >j-link 下的串列埠除錯

j-link 下的串列埠除錯

今天終於把困擾了兩個星期的串列埠給除錯好了。

一切的問題在於沒有仔細的閱讀那段開機啟動的程式碼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才有深刻的認識!