2012-12-26 63 views

回答

3

是的,絕對。 BSP對處理器和電路板本身的架構非常具體。話雖如此,有可能沒有多少變化需要在64位上運行。大多數BSP包含的一件事是啓動代碼,用於初始化系統中的硬件寄存器。當您移動到64位時,其中一些可能會改變。

第二部分是引導加載程序,它將內核/ OS /無論加載到RAM中(通常 - 它可能只是初始化ROM區域爲可執行並正確設置)。同樣,這可能需要改變,因爲它可能「跳轉到32位的操作系統」,而操作系統可能會預期64位跳轉。

然後你有OS /內核本身,這顯然需要重新編譯。

您實際需要做多少工作取決於電路板是什麼架構,您使用的處理器以及最重要的是操作系統和上層軟件以64位模式運行的要求 - 由init-code或bootloader設置的內存需要更改?什麼時候從32位切換到64位? - 在操作系統內部還是外部?

這可能不是你正在尋找的答案,但我認爲沒有人,除了那些知道BSP的人將能夠準確地說出你需要改變什麼 - 我很確定這不是一個完整的重寫,但是可能會有大量假設沿着「我們知道一個指針是32位,所以int會保存一個指針」或「我們知道指針是四個字節,因此我們在這裏保留四個字節......」

+0

感謝Mats對你的迴應,我從你的回答中瞭解到,你的BSP代碼的某些部分可能是32位,而某些部分可能是64位。 –

+0

不是我會用的字。就像「如果您將正確的部分重新編譯爲64位,它可能會立即工作,但某些部分可能需要更改,某些部分可能仍需要32位」。 –

0

墊子幾乎覆蓋了它。與其他應用程序一樣,它是您所針對的兩個或多個平臺的組合,以及應用程序的需求和設計。這些體系結構可能相距甚遠,因此試圖用一個BSP來定位它們是毫無意義的。如果架構足夠相似,您可以使用單個BSP來定位它們,但您可能會選擇或不選擇。 Linux或BSD就是一個很好的例子,有相當多的代碼是多平臺的,有一些平臺特定的部分。一個bsp沒有什麼不同,通常不那麼複雜,你的大部分代碼通常是C或者一些類似的語言,所以無論你編譯的是什麼目標,bootstrap和其他類似的部分都是asm,那些將是目標特定的。 FreeRTOS可能比Linux或BSD更好。