串口列印及其他

來源:互聯網
上載者:User

      串口列印在調試BOOT或者驅動時非常重要,很多問題只能藉助於這種原始的方法進行跟蹤和調試。在一些情況下,添加列印資訊程式就能正常執行,並得到正確的結果,而去掉列印資訊後卻不能正常工作。一般來說,串口列印會有延時的作用,所以為了保證程式正確執行,可以適當的添加延時。另外,在一些情況下需要注意變數的定義。今天LF在調試BOOT中的中斷時發現,中斷處理函數中變數的變化,並不能觸發“中斷處理線程”中的代碼運行,添加列印資訊後就可以正確執行。後來確認需要在定義變數時添加volatile,去掉列印資訊也可以正確執行了。

      在調試應用時,也會碰到逐步執行程式運行正常,全速運行時會有問題。這可能也是延時的問題,可以添加延時後再全速運行試試看。今天WB在調試CMMB時,也發現一個怪事,同樣的代碼在ARM9平台上運行很好,移植到ARM11上卻一直出錯,單步調試似乎也不能解決問題。我的第一反應覺得這個應該跟延時無關。不過,最後確認就是延時的問題。把200ms的延時改為1000ms,程式就正常了。直覺又一次犯錯。後來分析,這是個多線程程式,延遲是讓別的線程確定執行完成,再繼續本線程。如果延時不夠,另外一個線程的“初始化”工作未完成,本線程的執行可能就會有問題了。延時在多線程程式中非比尋常。

      串口列印、延時與volatile有一些關聯,在偵錯工具時,有一些奇怪的問題或許就跟他們有關。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.