【轉】UCOS-II之位元組對齊問題 sprintf

來源:互聯網
上載者:User

標籤:

用到ucos這個作業系統,簡單容易移植,佔用資源少。一般來說,在ucos上運行標準C函數應該是沒有什麼問題的。這時候問題就出現了 當ucos運行到Cortex-M3上時候,這個時候使用sprintf進行浮點數格式化輸出的時候就會有些問題,無法正常輸出浮點數,作業系統也會停止運行,處於崩潰狀態。 作業系統崩潰有很多原因,我遇到的兩個原因是:堆疊溢位和資料對齊。不知道首先遇到的是哪個問題,如果使用MDK編譯器的話請在系統任務堆棧前面進行資料對齊聲明,樣本:__align(8) static OS_STK TaskStartStk[TASK_START_STK_SIZE];如果你沒有修改過arm的啟動代碼可能就會出現這個問題,啟動代碼預設使用4位元組對齊,而且ARM支援非對齊狀態方式(便於在網路通訊中最佳化效率)。而sprintf函數若是使用格式化浮點數就需要進行8位元組對齊,這就是問題的所在,只要堆棧聲明成8位元組對齊就可以了。隨後注意sprintf函數需要較大記憶體空間,任務堆棧也要聲明足夠的空間來運行程式。 另外在IAR編譯器中只要選擇printf函數使用full方式編譯就能夠順利編譯通過,這方面IAR自動化做的較好

【轉】UCOS-II之位元組對齊問題 sprintf

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.