假设您有一台 ARM 嵌入式设备和一台基于 x64 的笔记本电脑。两个系统都运行 GNU/Linux。如果您决定将“ls”二进制文件从笔记本电脑复制到嵌入式设备并在嵌入式设备上运行,它会起作用吗?解释你的理由。
假设您有一台 ARM 嵌入式设备和一台基于 x64 的笔记本电脑。两个系统都运行 GNU/Linux。
好的。
如果您决定将“ls”二进制文件从笔记本电脑复制到嵌入式设备并在嵌入式设备上运行,它会起作用吗?
这就是它变得棘手的地方。它显然不会按原样运行;指令集完全不同。
但是,它可以运行。
显而易见的选择是某种形式的虚拟化或仿真。通过模拟 CPU 和周围的支持电路,您可以运行任何可执行的二进制文件,只要您可以编写一个与原始硬件和固件足够接近的模拟器,以产生您想要的结果。
这一直在做;这就是世嘉或任天堂游戏、Apple ][ 软件以及诸如此类的东西可以在现代 PC 上运行的程度。当目标平台的处理能力比原始平台强得多,并且提供了足够详细的硬件和固件文档时,仿真通常相对容易。以这个用 Javascript 编写的 IBM 5150 模拟器为例,它在您的 Web 浏览器中运行。在为嵌入式平台开发软件时,交叉编译和仿真是一种相对常见的方法。
另一种替代方法是使用编译器将机器代码转换为目标(在本例中为基于 ARM 的设备)架构。根据架构之间的差异程度,这可能是微不足道的,也可能是非常困难的。如果周围的电路大不相同,那将特别成问题;例如,依赖游戏机专用精灵和声音处理硬件的视频游戏可能无法轻松转换为不具备这些功能的平台。
真正的问题是:你为什么要首先做这样的事情?
如果可用,使用为目标平台本地构建的二进制文件几乎肯定是最简单的解决方案。
归档时间: |
|
查看次数: |
6534 次 |
最近记录: |