Linux上的ARM开发

时间:2013-07-21 22:23:04

标签: embedded arm cortex-m

我从德州仪器购买了Tiva C系列LaunchPad TM4C123G评估套件。该套件包含一个带有ARM Cortex M4F微控制器的小型PCB。现在我想开始为这个微控制器编写软件。我习惯使用Windows上的AVR Studio对AVR 8位微控制器进行编程。我听说在Linux上编写基于ARM的微控制器很容易,而且由于Linux是我的主要平台,我想要一个简单的IDE,它或多或少会像我以前从AVR那样工作。

几天来,我一直在寻找一个可以完成这项工作的好IDE和工具。令我惊讶的是,只有少数将在Linux上运行,没有一个是开源或免费软件。这真的可以吗?我不想花费几百美元来尝试一些Cortex M4F的编程。我现在也不想学习一个IDE,然后在我发现它不够好或太贵的时候再学习另一个IDE。我已经习惯了Linux和开源的做事方式,我很震惊,似乎没有人在Linux上使用开源工具进行任何严肃的嵌入式ARM编程。如果我错了,请纠正我。

我没有计划在Cortex M4F上运行Linux - 我只是想像普通的微控制器一样编程。

德州仪器(TI)建议在评估套件的封底上使用以下工具链之一:

  • 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编程设置它。此外,我需要知道如何在编译后对器件进行编程。

我真的很想快点开始。非常感谢任何建议和想法: - )

2 个答案:

答案 0 :(得分:10)

无论您使用哪种评估板,它总是一样的:STM32发现,LPCXpresso,TI Launchpads。它们非常便宜,但推荐的IDE是有限的:它们的代码大小有限,仅限Windows,或者它们绑定到特定的Linux发行版。

根据我的经验,选择取决于您的长期目标:

  • 您想与AVR 8位(或PIC32,Renesas RX 32,...)共享代码吗?
  • 建立基于make的构建系统是中期/长期目标吗?
  • 您是否需要制表完成和/或集成调试器?
  • 您是否希望将来尝试其他评估板(不必再安装另一个IDE)?

或者你只是想快速启动并运行它。在这种情况下,我会使用推荐的IDE之一来获得印象。

另一方面,我使用的所有32位微控制器(Cortex-M0 / 3/4,PIC32,瑞萨RX)都可以使用gcc进行编程。据我所知,Code Red,Mentor和MPLABX使用gcc(或修改后的gcc)。

因此,始终可以将EclipseMakefile项目和gcc一起使用。 我已经尝试了两次,但它对我来说效果不好,因为我在不同的目标之间共享库,我发现很难在Eclipse中传递定义。

所以我的IDE是MakefileEmacsgcc,我已完全切换到使用C ++:这可能是使用gcc的另一个优势。

两种可能性(带有Makefile项目的 Eclipse 或带有make 的编辑器)都不是“现成的”:它们需要时间,耐心和您最喜欢的互联网搜索引擎

更新

我不知道如何设置基于 GCC + make 的环境的完整教程,因此我只是描述几年前我做过的基本步骤(有一些更改)。

以下步骤是特定于STM32的:

  • 获取其中一个发现板,例如 STM32值行Discovery

  • 获取Flash实用程序:我正在使用 stlink git clone https://github.com/texane/stlink.git)。这也包括GDB后端。

  • 有各种各样的例子,搜索“stm32vl发现眨眼”(我不能在这里推荐一个,我用的那个已经消失了)

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

  • 您将在Project/Examples/GPIOToggle/TrueSTUDIO/stm32_flash.ld

  • 中找到与GNU ld兼容的链接描述文件
  • 您会在Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x/startup/TrueSTUDIO/startup_stm32f10x_ld_vl.s

  • 中找到兼容GNU的GNU
  • 您还可以在.zip存档中找到所有其他必需的库包含文件和来源

  • 查看 GPIOToggle 项目(Project/Examples/GPIOToggle

  • 编写Makefile以编译,链接和刷新

答案 1 :(得分:1)

要构建您自己的开发环境,您可以使用以下组合:

  • Eclipse CDT
  • 获取要使用的工具链(官方GCC版本或为您的平台定制的某些第三方)
  • 通过内部Eclipse构建系统(CDT构建器)或通过某些外部构建器(即make)将工具链集成到Eclipse环境中
  • 为了获得JTAG调试支持,您需要设置GDB硬件调试Eclipse插件

我已经设法以LPC1769(Cortex-M3 CPU)的方式完成了我自己的设置,并且它有效:)