0

我最近才试图进入嵌入式编程并正在寻找一些资源。我已经用高级语言完成了相当多的编程,但一直对硬件的实际工作方式着迷。作为让自己最终了解硬件的强制功能,我最近购买了 BeagleBoard XM,目的是通过组装对其进行裸机编程。

我花了一周左右的时间在业余时间阅读 TRM,并在网上搜索示例代码。我找到了一些资源,它们提供了通过串行端口显示数据的好例子,但除此之外没有什么。我曾希望找到一些人们使用中断和 sdma 的例子,但还没有找到。作为一个入门项目,我的目标是编写一个非常简单的程序,该程序将从串行端口输入字符并将其回显到屏幕上。我想让它利用中断/ sdma。通读 TRM 并不清楚如何实现这一点。对这个主题完全陌生,很难确切地知道我什至需要寻找什么才能理解文档。我想知道是否有任何专家能够提供任何利用 BeagleBoard 的一些硬件功能的示例 asm 代码。毕竟,再多的文档也无法替代一个好的具体代码示例。

4

3 回答 3

1

我必须同意其他人所说的话。虽然理论上你需要的一切都在那里,但小猎犬并不是第一次做这种事情的最佳平台。我有很多关于如何启动一些小型微控制器http://github.com/dwelch67的示例,还有一些网站,例如http://gandalf.arubi.uni-kl.de/avr_projects/arm_projects/和其他还有更多的例子。

我有一个 beagleboard,baremetal uart 输出代码,但听起来你有那个(在 yagbat 中,因为没有更好的地方(不值得拥有自己的 repo)我有一个 beagleboard 目录)。

msp430 启动板价格低于 5 美元,处理器也不错。由德州仪器(制作 omap 的人)制造,因此手册应该有类似的感觉。

当然还有arduinos,但是你想绕过沙箱,这并不难,请看我的例子。

为了留在 arm 家族中,有 mbed(大约 50 美元以上),(避免沙盒,很容易做到)和一个你可能喜欢的好,因为它几乎不是一个微控制器,里面有它所有的东西是 stm32f4来自 st 的发现板,我的示例页面中有链接。它大约 20 美元,最高 168MHz,具有减少的浮点单元(对于微控制器来说很少见)独立的指令和数据缓存,与其他微控制器相比,大量的 ram/rom 等等。所有这些都以 20 美元的赠品价格出售。

许多这些微控制器将是拇指或拇指+拇指2。cortex-m3 和 4 是 armv7-m,因此支持 thumb 和 full thumb2。cortex-m0 和 -m1 是基于 armv6 的,所以只支持一点 thumb2,不足以打扰。我有一个拇指模拟器,你也可以用拇指玩(不支持拇指2)。我认为 beagleboard 中的 cortex-A 是基于 armv7 的,因此它支持与 cortex-m3 和 -m4 支持相同的 thumb+thumb2。stm32f4 是基于 -m4 的,mbed 有两种风格,一种是 -m3,另一种是基于 -m0。许多基于 cortex-m 的微控制器都是基于 -m3 的,因为它首先出现了 -m4 和 -m0 刚刚获得了一些牵引力。您可以使用 thumb 或 thumb2 开始使用统一的指令集,该指令集是 arm 和 thumb(2) 之间的模糊,允许一个源组合 arm 指令和 thumb 指令(当然有一些限制)。因此,您可以只用 thumb/thumb2 编写并将该知识直接带到 cortex-A(使用一条 bx 指令将模式从 ARM 切换到 thumb),或者将您的 thumb2 代码或统一代码直接带到 cortex-A 并组装为手臂。

这里最大的事情并不是真正的组装学习,尽管关键是阅读手册,来自更多供应商的手册越多,您就越了解如何为这个更复杂的目标找到所需的信息。根据我的经验,我也很难理解 omap 手册的某些部分。大多数手册都有错误或不完整等,您必须学会通过这些工作/破解,而这只是需要经验。使用 omap,您可能需要挖掘该平台的 linux 或 uboot 源代码来补充手册。由于 beagle 使用引导加载程序,它的好处是为您完成了一些工作,不好的是因为您需要对硬件和软件进行逆向工程以找出放置中断向量表的位置,以便您可以执行基于中断的解决方案。我强烈建议从非中断、轮询、基于开始,然后慢慢将知识转换为中断。每次击球时试图击出本垒打都会失败。一次打一垒。

于 2012-02-25T14:19:55.940 回答
1

BeagleBoard 使用 Cortex-A8。这是一个相当复杂的芯片,仅通过阅读手册就可以运行它并非易事,尤其是对于初学者而言。您可以尝试阅读已经在其上运行的现有代码 - U-Boot,也许还有来自 Linux 内核的驱动程序。除了非常低级的启动代码之外,不要期望看到很多程序集。

但是 fvu 的建议可能是一个更好的主意 - 获得一个简单的 MCU 板,例如 LPCXpressor 或 mbed 并使用它进行播放。Cortex-M3/M0 虽然不是微不足道的,但运行起来要简单得多,并且为各种外设提供了大量简单的小样本。

于 2012-01-13T14:28:36.270 回答
0

您的问题有两个方面:了解裸机和操作系统编程以及了解 beagleboard 硬件。对于后者,我建议在数据表旁边查看其他人的代码。仅阅读数据表非常耗时。从 beagleboard 的 u-boot 代码开始:

其他一些不是 BB-XM 但我发现有用的裸机项目:

您的第二个问题是了解 ARM 上的低级编程。我推荐这些书,但请注意,这些书是为旧架构编写的。尽管如此,它们仍然对您非常有用:

后者甚至有一章关于编写自己的小型操作系统。

于 2013-02-05T07:48:40.173 回答