我想知道Board bring底层架构依赖于什么?actullay想知道的是,我们是否可以有运行32位bsp代码的64位体系结构,或者BSP代码始终是64位的,因为BSP代码是特定于体系结构的。
发布于 2012-12-26 21:01:00
是的,完全正确。BSP对于处理器和电路板本身的架构是非常特定的。话虽如此,在64位下运行可能不需要太多更改。大多数BSP都包含一段启动代码,用于初始化系统中的硬件寄存器。当您迁移到64位时,其中一些可能会发生变化。
第二部分是bootloader,它将内核/OS/任何东西加载到RAM中(通常-它只需将ROM区域初始化为可执行并正确设置即可)。同样,这可能需要改变,因为它可能“跳转到32位的操作系统”,操作系统可能会期望64位的跳转。
然后是操作系统/内核本身,显然需要重新编译。
实际需要做多少工作取决于主板的体系结构、所使用的处理器,以及最重要的是,操作系统和上层软件对64位模式的要求-由初始化代码或引导加载程序设置的内存是否需要更改?从32位到64位的转换何时发生-在操作系统内部还是外部?
这可能不是您想要的答案,但我认为,除了那些对BSP非常了解的人之外,没有人能够确切地说出您需要更改什么-我非常确定这不是完全重写,但可能会有大量的假设,比如“我们知道一个指针是32位的,所以int将保存一个指针”或“我们知道一个指针是四个字节的,所以我们在这里保留了四个字节……”
发布于 2012-12-26 21:23:49
垫子几乎覆盖了它。与任何其他应用程序一样,它是两个或多个目标平台以及应用程序的需求和设计的组合。这两种体系结构可能相距甚远,因此试图用单一的BSP来针对它们是毫无意义的。如果架构足够相似,您可以使用单个BSP来针对它们,但您可以选择也可以不选择。Linux或BSD就是一个完美的例子,有相当多的代码是多平台的,带有一些特定于平台的部分。bsp没有什么不同,通常只是不那么复杂,你的大部分代码通常是C或一些类似的语言,所以它是目标,无论你编译成什么,引导程序和其他类似的部分都是asm,这些都是特定于目标的。FreeRTOS可能是一个比Linux或BSDs更好的例子。
https://stackoverflow.com/questions/14040788
复制相似问题