1

我正在尝试学习 arm assemly,这将是我真正可以说我知道的第一种编程语言。实际上现在我首先学习机器语言,因为它对我来说更容易。

我的问题是:如何将第一条指令加载到处理器中?

我要进行实验的编程平台是一个gameboy Advance。它有一个 arm7tdmi 处理器,我没有闪存卡,所以我将使用我的 arduino 通过链接端口(连接到芯片的 d、di、do、dc 引脚)上传代码。我只需要帮助弄清楚如何上传任何程序。除了 arduino 的东西和 gameboy BIOS 之外,不使用任何其他人的软件。

所以我的问题是:如果我将 bios 芯片从 gba 中取出,我是否仍然可以通过这些引脚上传指令,或者处理器在启动后通常会在不同的地方寻找指令吗?还有它如何接受通信,我如何一次上传一条指令?

4

1 回答 1

3

使用该端口的机制称为多重引导,您的 arduinio 必须符合正确的协议才能使该工作正常工作,并且毫无疑问已经有人这样做了。

现在删除bios,如果你不能对你有任何好处

对于 gba,您必须在数据的开头有正确的签名才能让 bios 运行,然后它会在该内存中的第一个单词处运行您的第一条指令,您需要在那里跳转。

基本上 gba 是学习裸机的一个很好的平台,但是你做它或谈论做它的方式并不是这种学习的最佳方式。

如果您想使用 gba,请使用 visualboyadvance 模拟器/模拟器并克​​服启动和运行您的第一个程序的障碍,这些程序可能需要在该环境中绘制像素(在 gba 上闪烁电池电量不足的 LED 是最简单的,但没有闪存车,暂时不要打扰)。

对于视觉男孩前进,您可能需要也可能不需要正确的签名,但是那里有大量的信息和示例,这些信息和示例显示了标题需要什么才能工作和/或如果您离开正确的空间将修补的工具你的二进制文件使它工作。

对于真正的硬件,您不仅必须在该串行端口上获得时序和上拉等正确功能,而且您还必须拥有正确的标头才能运行多重引导程序。这绝对不是 gba 的初学者。找一个他们还在外面的闪存车,我最喜欢的一段时间是 ezflash 3 in 1 gba 大小的不是 ds 大小的,但你需要一个带有 ds 闪存车的 ds 来装载一些东西。ds flash 购物车更容易获得(但 ds 开发有点困难但不是那么多)。还有一些 m3 或任何基于 sdcard 或 micro sd 卡的东西,您不需要花哨的程序员(其软件很难获得并且很快就会过时)。

您可能会考虑购买 ds lite(较旧的)和推车,因为它们很容易买到

或者只是买一个 tiva c 启动板或其他 5 美元或 10 美元的臂板

最好的办法是先免费使用指令集模拟器,然后您可以在阅读本文后几分钟内进行开发。在 gdb 中使用 armulator。

简短的回答你有错误的硬件来做你想做的事情。但是学习裸机编程的硬件非常好(只要你能得到一个使用起来不痛苦的闪存车)。我首选的解决方案是在闪存车上放置一个引导加载程序,然后将顶部端口转换为 8n1 串行端口,它需要一根链接电缆,将其切成两半以连接电线并将它们连接到 ftdi usb 到串行板。那么如果你发现我的或其他人,你只需要加载一次引导加载程序,并且很长一段时间不需要移除或重新编程墨盒。只需重新启动(或如果添加重置按钮则重置)并串行下载您的程序并运行它。

于 2014-09-05T02:34:06.350 回答