0

我目前正在与一个业余火箭手团队(好吧,“业余”是一个延伸,我们所有人都已经完成、注册或申请了相关的大学学位课程)开展了一个将卫星送入轨道的项目。到目前为止,我主要完成了高级编程(VB.NETPythonPHP ),对FIG-FORTH有一点涉猎,我想知道学习和使用什么语言来编写姿态控制/航空电子系统的程序运载飞船。

当然,由于速度和存储方面的效率在这里都是一个大问题,所以想到的一件事就是组装。我的问题:这样做是否可行,即在装配中对自动姿态控制系统进行编程?

用这样一种极低级的编程语言来做这件事似乎非常复杂,所以我想知道在该领域有更多经验的人是否可以权衡一下汇编是否是一个好的选择,或者仍然是低级的东西但与FORTHFORTRANC相比,它们在程序大小和速度方面所招致的损失相比,处理起来稍微容易一些。

4

1 回答 1

5

作为过去从事过大量嵌入式系统编程的人,我强烈建议您使用 C 进行原型设计。这将使您专注于算法、控制流和错误处理,而不会陷入索引模式的细枝末节和个别指令优化。最重要的是您的控制系统确实有效

使用 C 语言进行原型设计的另一个好处是,您可以在具有现代开发工具(编辑器、开发环境、调试器等)的 Windows 或 Linux 系统上进行大部分原型设计。这对周转时间产生了巨大影响。

在您证明您的算法是合理的之后,您可以分析系统以确定它占用了多少内存以及它是否足够快。嵌入式系统有许多优秀的 C 编译器,如果您使用高效的算法,系统很可能会非常高效,而无需深入研究手工编码的汇编语言。请记住,好的算法选择可以使您的速度提高几个数量级。在大多数情况下,手工编码的汇编语言(充其量)只能提供小倍数的性能提升。通常,改进的百分比很小(小于 10%)。

让它起作用。然后让它小而快。

至于学习汇编语言,我认为每个程序员都应该学习。哪个处理器并不重要。我不同意将 x86 作为第一种汇编语言学习的评论。关键的教训与特定的指令集或寄存器组织几乎没有关系。最重要的是学会在较低层次上思考:按指令而不是按语句。我个人认识几十个程序员,他们的第一门汇编语言是 x86,我认为他们作为一个整体并没有比那些学习其他汇编语言的人更好或更差。学习 x86 的好处有很多:可以向很多人学习,有很多很好的教程信息,有几个很好的免费汇编程序,甚至还有模拟器和开发环境,全部免费且得到很好的支持。由于这些原因,我很难推荐其他任何东西作为第一次使用的汇编语言。

于 2013-07-08T18:46:39.770 回答