繁体   English   中英

装配裸金属BeagleBoard

[英]Assembly for Bare Metal BeagleBoard

我刚刚尝试进入嵌入式编程,我正在寻找一些资源。 我已经在更高级别的语言中完成了相当多的编程,但总是对硬件的实际工作方式着迷。 作为强迫函数让我自己最终了解硬件我最近购买了BeagleBoard XM,其目标是使用装配对裸机进行编程。

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

BeagleBoard使用Cortex-A8。 这是一个相当复杂的芯片,只需阅读手册就可以让它运行起来并不是一件容易的事,特别是初学者。 您可以尝试读取已在其上运行的现有代码 - U-Boot,以及Linux内核中的驱动程序。 除了非常低级别的启动代码之外,不要期望看到更多的程序集。

但可能更好的想法是fvu建议的 - 获得一个简单的MCU板,如LPCXpressor或mbed和playh。 Cortex-M3 / M0虽然不是一件容易的事,但运行起来要简单得多,而且各种外设都有很多简单的小样本。

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

我有一个beagleboard,baremetal uart out代码,但听起来像你有(在yagbat,因为缺少一个更好的地方(不值得自己的回购)我有一个beagleboard目录)。

msp430发射台的价格低于5美元,处理器也不错。 由德州仪器(制作omap的同一个人)制作,所以手册应该有类似的感觉。

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

为了留在手臂系列中,有mbed(大约50美元以上),(避免沙箱,容易做)和一个你可能喜欢的好的,因为它只是一个微控制器,其中包含的所有东西是stm32f4来自st的发现板,我的示例页面中有链接。 它大约20美元,高达168MHz,浮点数减少(微控制器很少见)独立的指令和数据缓存,与其他微控制器相比有很多ram / rom等等。所有价格都是20美元。

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

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

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

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

您的第二个问题是了解ARM上的低级编程。 我推荐这些书,但请注意,这些是为旧架构编写的。 不过,它们应该对你非常有用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM