如何將一個(gè)開(kāi)源游戲移植給一款32位微控制器
意法半導體提供一個(gè)非常有用的軟件庫,它包含很多STM32功能管理實(shí)例。在這次移植中,軟件庫用于編寫(xiě)TFT顯示器硬件的驅動(dòng)。圖5表示架構需要的項目,Wolfenstein 3D文件夾包含兩個(gè)子文件夾。
Appli文件夾包含IDE項目以及硬件驅動(dòng)源碼,如TFT屏幕。該文件夾包含硬件應用板的說(shuō)明(在我們這里是STM3210E-EVAL),它還包含了STM32庫,用于管理電路板硬件和IDE項目。Wolfenstein 3D的源碼用庫函數作硬件驅動(dòng)。
“source”文件夾包含了Wolfenstein 3D的原始源碼,源碼中所有指令或函數都不與應用板硬件直接交互,子文件夾“portable”包括用于在游戲原始代碼與代碼執行目標硬件之間建立連接的函數。在我們這種情況下,我們還有一個(gè)子文件夾STM3210E-EVAL,這個(gè)文件夾包含調用應用板硬件的函數。
讓我們看一下顯示管理的例子。Wolfenstein 3D源碼包含一個(gè)VW_UpdateScreen函數,這個(gè)函數根據內部視頻緩沖的內容刷新TFT屏幕,于是需要驅動(dòng)TFT屏幕。因此,它必須在文件夾“portable/STM3210E-EVAL”中定義。VW_UpdateScreen函數會(huì )調用在文件夾“appli/ STM3210E-EVAL”中定義的基本函數(驅動(dòng))。
文件夾“source/portable/STM3210E-EVAL/”包含與編譯器兼容的類(lèi)型說(shuō)明與定義。通過(guò)這種方法處理,就能夠將一個(gè)目標的源碼移植到另一個(gè)目標,而無(wú)需修改復雜的源文件。舉個(gè)有用的例子,源碼要轉換到一個(gè)不同映射的STM32應用,它有不同的接口硬件,或編譯器有改變。這時(shí)只需要為新的目標更新“appli/STM3210E-EVAL/”和“source/portable/STM3210E-EVAL/”文件夾中的約束文件。結果在圖6中。它看似90年代的一款口袋機游戲。
采用C編寫(xiě)的老式PC游戲的源碼現在仍能從互聯(lián)網(wǎng)上獲得。多虧有微控制器的強大性能和LCD顯示器的集成,我們現在還能體驗到這些游戲。
單片機相關(guān)文章:單片機教程
單片機相關(guān)文章:單片機視頻教程
單片機相關(guān)文章:單片機工作原理
評論