0

我想知道Board up package underlaying architecture是否依赖?actullay 想知道的是,我们是否可以让 64 位架构运行 32 位 bsp 代码或 BSP 代码总是 64 位,因为 BSP 代码是特定于架构的。

4

2 回答 2

3

是的,一点没错。BSP 非常特定于处理器的体系结构和电路板本身。话虽如此,在 64 位上运行可能不需要太多更改。大多数 BSP 包含的一件事是一段启动代码,用于初始化系统中的硬件寄存器。当您迁移到 64 位时,其中一些可能会发生变化。

第二部分是引导加载程序,它将内核/操作系统/任何东西加载到 RAM 中(通常 - 它可能只是将 ROM 区域初始化为可执行并正确设置它)。同样,这可能需要更改,因为它可能“跳转到 32 位操作系统”,而操作系统可能期望 64 位跳转。

然后你就有了操作系统/内核本身,这显然需要重新编译。

您实际需要做多少工作取决于板子的架构、您使用的处理器,以及最重要的是操作系统和上层软件在 64 位模式下运行的要求 - 内存设置是否由初始化代码或引导加载程序需要更改吗?什么时候从 32 位切换到 64 位——在操作系统内部还是外部?

这可能不是您要寻找的答案,但我认为除了那些熟悉 BSP 的人之外,没有人能够准确说出您需要更改的内容 - 我很确定这不是完全重写,但可能会有是沿着“我们知道一个指针是 32 位,所以一个 int 将保存一个指针”或“我们知道一个指针是四个字节,所以我们在这里保留四个字节......”的假设负载

于 2012-12-26T13:01:00.213 回答
0

垫子几乎覆盖了它。与任何其他应用程序一样,它是您所针对的两个或多个平台以及应用程序的需求和设计的组合。这些架构可能相距甚远,以至于尝试使用单个 BSP 来定位它们是毫无意义的。如果架构足够相似,您可以使用单个 BSP 来定位它们,但您可以选择也可以不选择。Linux 或 BSD 就是一个很好的例子,有相当多的代码是多平台的,有一些平台特定的部分。bsp 没有什么不同,通常只是不那么复杂,您的大多数代码通常是 C 或一些类似的语言,所以无论您编译成什么都是目标,引导程序和其他一些类似的部分是 asm,这些都是特定于目标的。FreeRTOS 可能比 Linux 或 BSD 更好。

于 2012-12-26T13:23:48.607 回答