在Linux上进行ARM开发

9
我已经购买了德州仪器的Tiva C系列LaunchPad TM4C123G评估套件。该套件包含一个带有ARM Cortex M4F微控制器的小型PCB板。现在我想开始为这个微控制器编写软件。我习惯于使用Windows上的AVR Studio来编程AVR 8位微控制器。我听说在Linux上编程基于ARM的微控制器应该很容易,而且由于Linux是我的主要平台,我希望有一个简单的IDE,可以更多或少地像我从AVR中所熟悉的那样工作。
几天来,我一直在寻找一个好的IDE和工具来完成这项工作。令我惊讶的是,只有很少的工具可以在Linux上运行,而且没有一个是开源或免费的。这真的可能吗?我不想花几百美元来尝试一些针对Cortex M4F的编程。我也不想在找到它不够好或太昂贵时学习一个IDE,然后再学习另一个。我习惯于Linux和开源的做事方式,我非常震惊,似乎没有人在Linux上使用开源工具进行任何严肃的嵌入式ARM编程。如果我错了,请纠正我。
我没有计划在Cortex M4F上运行Linux - 我只想像普通的微控制器一样对其进行编程。
德州仪器在评估套件的背面推荐以下工具链之一:
- Code Composer Studio IDE:完全功能板锁定 - Keil:32KB地址限制 - IAR:32KB地址限制 - Mentor Embedded Sourcery CodeBench:30天完全功能 我还被推荐使用code_red的Red Studio。
两者都不是开源或免费的,而且都有限制。在我看来,只有Code Composer Studio和Red Studio与Linux兼容。
我偶然发现了另一个产品,Rowley CrossWorks,它也与Linux兼容,但仍然非常商业化和昂贵。
真的没有开源替代品吗?大多数产品似乎都使用Eclipse和GCC,应该可以在没有这些商业软件包的情况下完成,对吧?我只是找不到任何教程或指南,解释如何设置嵌入式ARM编程。此外,我需要知道如何在编译后对设备进行编程。
我真的想尽快开始。非常感谢任何建议和想法 :-)

https://github.com/dwelch67/stellaris_launchpad 我在想他们是否已经放弃了 Stellaris 名称,现在改为 Tiva。如果您不使用 IDE,那么您就得自己动手了。但 GNU 工具非常好用,您不必使用那些付费品牌工具……除非您真的想要…… - old_timer
是的,他们将Stellaris重新品牌为Tiva C... - old_timer
@pvh1987 - 你的问题似乎吸引了垃圾答案和过多的版主关注。简单的事实是,你想要做的是可能的,只使用免费工具(通常是某个版本的GCC),但是需要一些工作和经验来设置,并且制造商的示例代码通常需要一些移植和构建脚本编写才能正常工作。 - Chris Stratton
2个回答

10
无论你使用哪种开发板,如STM32 discovery、LPCXpresso、TI Launchpads,情况总是相同的。它们价格便宜,但推荐的集成开发环境(IDE)有限制:代码大小受限制,仅支持Windows操作系统或只能运行于特定的Linux发行版。
根据我的经验,选择取决于你的长期目标:
- 你是否想要与AVR 8位(或PIC32、Renesas RX 32等)共享代码? - 是否中长期目标基于make构建系统? - 你需要tab补全和/或集成调试器吗? - 你是否想在未来尝试其他评估板(而不被迫安装另一个IDE)?
还是只想快速启动这个项目?如果是这样,我会使用其中一个推荐的IDE来获取印象。
另一方面,我使用过的所有32位微控制器(Cortex-M0 / 3/4、PIC32、Renesas RX)都可以使用gcc编程。据我所知,Code Red、Mentor和MPLABX使用gcc(或修改过的gcc)。
因此,始终有可能使用带有Makefile项目的Eclipsegcc。我尝试过两次,但对我来说效果不佳,因为我在不同的目标之间共享库,并且发现在Eclipse中传递定义很困难。
因此,我的IDE是MakefileEmacsgcc,并且我已完全转向使用C++:这可能是使用gcc的另一个优点。
两种可能性(带有Makefile项目的Eclipse或只是带有make的编辑器)都不是“开箱即用”的:它们需要时间、耐心和你最喜欢的互联网搜索引擎。 更新

我不知道有关于如何设置基于GCC + make的环境的完整教程,所以我简单描述了几年前我做这件事情的基本步骤(有一些改变)。

以下步骤是针对STM32特定的:

  • 获取其中一个探索板,例如STM32 value line Discovery

  • 获取一个闪存实用程序:我使用的是stlink (git clone https://github.com/texane/stlink.git)。这也包括一个GDB后端。

  • 有各种示例可用,请搜索“stm32vl discovery blink”(我无法在此推荐一个,我使用的已经消失了)

作为替代(或后续):获取外围设备固件示例

  • 您将在Project/Examples/GPIOToggle/TrueSTUDIO/stm32_flash.ld中找到一个GNU ld兼容的链接器脚本

  • 您将在Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/TrueSTUDIO/startup_stm32f10x_ld_vl.s中找到一个GNU as兼容的启动程序

  • 您还将在.zip存档文件中找到所有其他所需的库包含文件和源代码

  • 查看项目(Project/Examples/GPIOToggle

  • 编写一个Makefile来编译、链接和烧录


你能推荐一些教程给那些考虑从命令行开始学习的人吗?(例如设置工具链、工作流程等)我承认我有一个依赖IDE的习惯(考虑成立一个支持小组)。但正如你所指出的,在Linux下的选择非常有限甚至不存在。我有几个STM32板子想要玩耍,但也希望能够应对其他厂商的产品。 - norlesh
@norlesh 我已经更新了答案。这些步骤同样适用于其他供应商,如NXP(lpc),TI(Stellaris)等。 - Beryllium
不要使用开源工具。你需要一个好的调试器,一个漂亮的界面来读取寄存器状态和其他 PRO 使用的 cookie。这些东西从来没有与开源工具一起出现过。我尝试了所有的方法来建立免费的 ARM 编程接口,包括调试器,但总体上在 Linux 上是无法免费完成的。我的最佳尝试是使用 IDE KDevelop/Eclipse/CodeBlocks 以及 makefiles,但是这些工具都没有内置的 cookie。我通过购买 Segger 的 J-LINK JTAG 探针并使用 JLink Commander 在外部终端监视寄存器来弥补了这个问题,但效果很差... 最好购买专有工具... - 71GA

1
要搭建自己的开发环境,您可以使用以下组合:
  • Eclipse CDT
  • 获取要使用的工具链(官方GCC版本或某些第三方定制版)
  • 将工具链集成到Eclipse环境中,可以通过Eclipse内部构建系统(CDT构建器)或一些外部构建器(例如make)实现
  • 为了拥有JTAG调试支持,您需要设置GDB硬件调试Eclipse插件
我已经成功地完成了自己的LPC1769(Cortex-M3 CPU)设置,它可行 :)

你能分享一些链接帮助我配置Eclipse以开发嵌入式Linux吗?我想配置Eclipse CDT以开发TIVA Cortex M4处理器的软件。 - Mahendra Gunawardena
Cortex M4无法运行完整的嵌入式Linux,只能运行uClinux。 - Adi
感谢您的帮助,我已经成功配置了Eclipse CDT以编程Cortex-M4。以下是一个链接,可以帮助我入门。http://chrisrm.com/howto-develop-on-the-ti-tiva-launchpad-using-linux/。您的帖子非常有用。 - Mahendra Gunawardena

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接