• <menu id="ugcm4"><strong id="ugcm4"></strong></menu>
  • 技術熱線: 4007-888-234

    單片機開發:為何要避免使用匯編語言?

    更新時間: 2020-10-16
    閱讀量:1575

    對資深單片機開發人員來說經常提倡的一個開發技巧是,開發人員應避免使用匯編語言。避免使用匯編語言的原因是它特定于所使用的處理器體系結構,難以閱讀,理解和維護。而且需要注意的是,在查看仍可以使用匯編語言的每個區域之前,這些匯編指令如何集成到代碼庫中將根據所使用的開發環境而有所不同。通常有一些自定義的編譯器函數用于使編譯器語言知道正在使用匯編指令,例如_asm(),我們檢查的代碼段在使用前可能需要進行修改。

    但是,有四個適合使用匯編語言的地方:

    一、執行斷點指令

    每當我開始一個新項目時,我在實施過程中要做的第一件事就是將斷點的匯編指令放入CPU錯誤,看門狗超時以及特殊RTOS事件(例如在中斷服務例程中使用malloc)。這樣做的原因是,當達到這些功能之一時,想得到通知,但是又不想管理這些斷點。許多現代處理器都有一個斷點匯編指令,使用匯編代碼執行該指令是完全合適的。

    對于使用類似于STM32 CubeIDE的IDE的Arm Cortex-M處理器,此類組裝實現可能如下所示:

    __asm(“ bkpt”);

    當到達上面這條指令時,處理器將停止執行。

    二、從Bootloader過渡到應用程序

    開發人員應該使用匯編語言的第二個領域是從引導加載程序到應用程序代碼的過渡點。在許多系統中,引導加載程序是第一個執行的應用程序。它設置處理器,驗證內存并可能執行其他一些功能。但是在某個時候,引導加載程序讓步并跳轉到主應用程序。為了成功完成該跳轉,需要將處理器中的許多組件設置為它們的初始狀態,例如系統堆棧,然后需要加載應用程序復位向量的功能指針。另外,當需要將匯編語言集成到應用程序中時,可以使用IDE的匯編函數。這些功能可能因IDE的不同而有所差異。

    三、控制循環中的代碼優化

    在某些情況下,可能需要在高頻控制循環中優化代碼,這需要使用匯編語言。手工編碼組裝中的快速控制循環曾經很普遍。盡管有時這仍然是適當的,但在當今使用超快處理器和使用復雜的優化技術的編譯器的開發環境中,你會發現使用匯編語言的情況將越來越少。

    四、學習單片機基礎知識

    許多人剛開始涉足單片機開發時,實際上是被迫以匯編形式開發應用程序的。當時的單片機供應商不提供免費的C編譯器,但是匯編語言工具是免費的。

    我不認為應該花很多時間在匯編上,但是我認為單片機的開發人員應該會編寫一些非?;镜膽贸绦?,例如“ Hello World”應用程序和閃爍LED應用程序,以了解如何初始化處理器、控制寄存器,并稍微了解基礎指令集。這些可以幫助開發人員理解C/C++的底層體系結構,并且真正理解該體系結構的唯一方法就是以其自身的自然語言進行處理,從而可以用C/C++編寫效率更高的代碼。

    以上就是英銳恩單片機開發工程師分享的單片機開發過程中的為何避免使用匯編語言,且在一些地方應使用匯編語言的知識。英銳恩專注單片機應用方案設計與開發,同時提供8位單片機、16位單片機、32位單片機、運放芯片和模擬開關。如果你需要更多單片機方案產品的信息,請撥打官網電話:4007-888-234,或點擊“在線咨詢”,我們的客服人員將為你提供更詳細的解答。

    單片機方案開發

    刺激欲乱狂亲伦
  • <menu id="ugcm4"><strong id="ugcm4"></strong></menu>