我正在努力学习arm,它将是我真正知道的第一种编程语言。事实上,现在我首先学习机器语言,因为它对我来说更容易。
我的问题是:如何将第一条指令加载到处理器中?
我要试验的编程平台是gameboy的一个进步。它有一个arm7tdmi处理器,我没有闪存卡,所以我要用我的arduino通过链接端口(连接到芯片的d、di、do、dc引脚)上传代码。我只需要帮助弄清楚如何上传任何程序。除了arduino的东西和gameboy的bios之外,不需要使用任何其他人的软件。
所以我的问题是:如果我从gba中取出bios芯片,我还能通过这些引脚上传指令吗?或者处理器在打开电源后通常会在不同的地方寻找指令吗?它如何接受通信,以及我如何一次上传一个指令?
使用该端口的机制称为multiboot,您的arduinio必须符合正确的协议才能工作,毫无疑问,有人已经做到了。
现在删除bios,如果你不能做任何好的
对于gba,你必须在bios的数据开头有正确的签名,才能运行它,然后它在内存中的第一个字上运行你的第一条指令,你需要跳到那里。
基本上,gba是一个学习裸机的好平台,但你做它或谈论它的方式并不是这种学习的最佳方式。
如果你想使用gba,请使用visualadvanced模拟器,并克服引导和运行第一个程序的障碍,这些程序可能需要在该环境中绘制像素(在gba上闪烁电池电量低的led是最容易的,但没有闪光灯车,现在还不用麻烦)。
对于visual boy advance,你可能需要也可能不需要正确的签名,但有大量的信息和例子表明了标头需要什么才能工作,和/或如果你留下正确的空间,就会修补二进制文件以使其工作的工具。
对于真正的硬件,你不仅必须在串行端口上获得时序和上拉等信息,而且还必须有正确的头才能运行多引导程序。对于gba来说,这绝对不是入门级的东西。找到一个闪存盘,它们仍然在那里,我有一段时间最喜欢的是1 gba大小的ezflash 3,而不是ds大小的,但你需要一个带ds闪存盘的ds来加载一些东西。ds闪存盘更容易获得(但ds开发有点难,但没那么难)。还有一些m3,或者它们被称为sd卡或基于micro-sd卡的,你不需要一个出色的程序员(他的软件很难获得,而且很快就过时了)。
你可以考虑一个ds lite(旧的)和一个购物车,因为它们很容易通过获得
或者只买一个tiva c启动板或其他5美元或10美元的臂板
最好的方法是先使用一个免费的指令集模拟器,阅读后几分钟即可进行开发。使用gdb中的扶手。
简言之,你尝试做的事情用错了硬件。但对于学习裸机编程来说,硬件非常好(只要你能得到一个使用起来不痛苦的flash cart)。我喜欢的解决方案是在闪存车上放一个引导程序,然后将顶部端口变成8n1串行端口,这需要一根链路电缆,你可以将其切成两半,然后将其连接到ftdi usb到串行板。然后,如果你找到了我的或其他人,你只需要加载一次引导程序,并且在很长一段时间内不需要删除或重新编程盒带。只需关闭电源(或者如果添加了重置按钮,则进行重置),然后依次下载程序并运行它。