您需要重做多少部分与您的软件/系统工程有关,您可以在需要的地方进行抽象,只需要重新编写抽象层而不是整个包。实际上,您可以在主机系统上进行大部分软件设计/测试,而无需交叉编译,只能在以后交叉编译到模拟器或真实硬件。
例如,我假设您将在 ram 中的某个位置构建下一个视频屏幕,然后根据硬件更改寄存器和页面翻转中的一些位,或者必须以任何它想要的形式从这个帧缓冲区复制到视频/液晶显示器。使用 thumbulator,您可以在某个地方(在模拟的内存空间中)在 ram 中构建屏幕,然后在模拟写入某个寄存器时添加到模拟器中,从 ram 中获取这些字节并将它们显示在主机上(运行模拟)基本上模拟一些硬件。使用 sdl 或基本 X 调用或任何你喜欢的。我通常拍摄 .bmp 文件的快照(非常容易编写),然后再查看它们。
稍后,在硬件上,您抽象的 update_screen() 函数将具有特定于硬件的代码来显示该屏幕。
thumbulator 只运行 thumb 指令,而不是 ARM,而不是 Thumb2,thumb 是 arm 处理器(ARMv4T 和除 cortex-m 之外的更新版本)和支持 thumb2 扩展的那些(cortex-m)之间的共同点。除了启动代码之外,整个 arm 家族的编译和编程体验是相同的。代码(除了启动代码,当然还有硬件特定的访问)将在 arm 系列以及模拟器中运行。如果您使用 cortex-m,那么在命令行中添加架构规范会将构建从 thumb only 更改为 thumb+thumb2 指令,从而为您带来一些性能提升。如果你浏览我在 github 上的其他项目,你会发现这个想法一遍又一遍地重复,我有很多简单的 cortex-m 示例,我使用 gcc 和 llvm 并构建相同的.
另一个完全不同的答案是获得 GBA(Nintendo Game Boy Advance)。您可以在 ebay 上以大约 30 美元左右的价格购买 GBA SP(具有背光显示屏,使整个体验更好)。您可以以相同的价格购买带 SD 卡的闪存盒。它有一个 ARM7TDMI,它运行拇指代码比 ARM 代码快得多,为您提供拇指体验,为其他/更新的内核(如 cortex-m)做准备。再花 30 美元,你可以得到一条游戏连接线,把它剪断,连接一个 rs232 电平转换器(我可以告诉你所有这些),然后制作一根 gba 串行电缆。我的首选设置是拥有一个已使用串行引导加载程序预编程的闪存盒,我通过串行将程序下载到 ram 中,然后从 ram 运行。这避免了每次重新编译程序时都必须拉出闪存盒和/或 SD 卡。可行的,
如果你有一台售价 12 到 15 美元的 Nintendo DS,你可以获得一个基于 sd 的闪存卡,同样可以用于开发。我建议先学习 gba,如果您购买了盒上软件支持的 gba 端内存盒(需要 ds lite 而不是 ndsi 或 3d),您可以在 NDS 上进行学习。(例如,1 gba 大小的 ez flash 3 是一个不错的选择,还有内存,您可以使用 nds 刷新该内存并将其转移到 gba(这就是我将串行引导加载程序放在上面的方式))。这些加载程序可以让您将 .gba 文件放在 nds 磁带 sd 卡上,然后将其加载到 gba 磁带中,它将 nds 切换到 gba 模式并作为 gba 运行。
还有很多其他解决方案,sparkfun.com 可能有许多基于 arm 的板,可以驱动 lcd 和/或带有 lcd。您可以去 earthlcd 并获得一个基于串行的 LCD 面板,以便快速开发,当然以后需要更便宜的解决方案。沿着同样的思路,您可以使用主机模拟类似earthlcd的东西,让嵌入式微控制器通过串行方式向主机发送屏幕更新,主机显示图形。稍后用其他东西替换那个屏幕更新。
后一种解决方案,大约 20 美元,你可以得到一个 stm32f4 发现板,有一个 cortex-m4,运行频率高达 168MHz,有许多串行端口,其中至少有两个没有被其他东西使用的引脚,你可以轻松拥有一个用于调试消息的端口,另一个用于此虚拟串行屏幕。在 github 上我的 stm32vld 存储库中的 stm32f4 目录中,我有许多使用该板的入门示例(以及 stm32vld,它便宜几美元,但不如这个 stm32f4 强大)。同样,您的主机应用程序可以接受击键并将其转换为用户控制/游戏控制命令,返回到微控制器上的游戏软件。
当然有 beagleboard 或 hawkboard 或 raspberri pi 出来时,或 open-rd (我不喜欢插头计算机,但喜欢 open rd)具有视频处理和视频输出直接到显示器和/或电视使用复合材料什么的。大约 150 到 200 美元,它可以和它一起运行。您绝对不需要在这些平台上运行 linux,您可以制作自己的操作系统或任何您喜欢的操作系统并运行它,非常简单。
解决方案可能比您有更多的时间和/或金钱来追求,您需要找到一个适合您的舒适或快乐区域的解决方案,以便您喜欢如何进行开发并尝试这条道路。