随着物联网的兴起,ARM公司的微控制器以其卓越的性能和极低的功耗设计再一次得到了越来越多的关注,尤其是创客(maker)的关注,他们是当前物联网浪潮的另一大特色,他们大都具备深厚的特定领域知识,但并不是专业的嵌入式开发工程师,他们更多的是想借助ARM微控制器的良好特性来实现自己的创新想法。为了让更多人能够更加容易的在ARM微控制器上实现自己的梦想,ARM公司围绕微控制器编程投入了大量的资源,构建了多个蓬勃发展的开发平台和社区。全球的创客和开发工程师基于这些平台和社区,交流想法,分享经验,共享代码,完成了一个又一个精彩的项目。了解这些平台和社区,善用已有的代码模块,无疑可以加速你的微控制器编程之旅。本文将会介绍如何使用由ARM公司精心打造的免费GNU开源工具链来开启嵌入式编程之旅,希望这些介绍能够帮你更好的站在巨人的肩膀上来完成自己的梦想。
本文中的微控制器指的是基于ARM公司Cortex-M系列的微控制器如Cortex-M0和Cortex-M7.这些微控制器各有特色,在ARM官方网站有详细的介绍。一个完整的微控制器项目通常包含如下的代码:
不同的开发工具对这些部分有不同的命名和组织形式。一般来讲,开发板厂商应该提供除了第三部分外的其他部分。得益于ARM微控制的广泛应用,对于常见的开发板,很多微控制器开发套件已经包含了这些代码模板,使得开发人员可以迅速上手。同样得益于C语言的可移植性,我们可以在不同的开发套件中重用这些代码。需要指出来的是,不同的开发套件会使用不同的方法或者格式来描述内存布局,但它们要描述的东西是一致的。
网站gcc-arm-embedded是ARM公司开源工具链的主网站,版本发布,用户支持,都是在这个网站进行。 ARM公司提供的GNU开源工具链是一个命令行模式的工具链,可以运行在Windows,Linux和Mac平台,对于Windows平台,用户可以选择安装包,也可以选择免安装的zip压缩包,解压缩后就可以立即使用。每年第四个季度会推出一个主要版本更新,大版本号会更新,主要包含新的功能。每个季度都会推出一个当前大版本的季度更新版本,季度更新版本主要包含上一个季度版本的错误修正。对于习惯命令行模式的用户,下载并解压缩相应工具链,就可以直接使用,不需要注册,也没有收费。对于习惯集成开发环境的用户,我们推荐同样是开源的CoIDE和Eclipse。CoIDE可以在其官网http://www.coocox.org 下载,由于最新的CoIDE在本文写作时还处于beta阶段,所以这里推荐版本v1.7.8。除了没有集成工具链,CoIDE提供了所有常用的微控制器开发功能。
下面我们介绍如何使用CoIDE和ARM开源工具链建立我们的第一个微控制器项目,开发板我们选择的是意法半导体的STM32F4这是一款基于Cortex-M4微控制器的开发板。
指定好的路径如下图所示:
板载LED灯属于外设中的GPIO类设备。
接下来我们需要使用开源工具链编译这个项目,并加载生成的工程文件到板子。点击Project并选择Build
一切顺利的话,应该会看到
在弹出的配置界面中,选择Debugger标签,并作如下配置
可以直接使用下面的菜单把编译链接生成的项目文件加载到板子中
也可以使用下面的菜单命令进行单步的调试
Eclipse是另外一个优秀的集成开发环境,并且可以运行在多个主流的操作系统上如Windows,Linux和MacOS。下面我们介绍如何在Ubuntu 14.04 64位操作系统上把Eclipse打造为微控制器集成开发环境:
解压缩并启动Eclipse,点击Help菜单中的About Eclipse,可以看到版本信息如下,请确保你的版本和该版本一致或者更新:
点击Next按钮,在后续步骤中选择同意安装,继续执行直至完成安装,有可能需要重启Eclipse来完成最终安装。再次点击Help菜单中的Install New Software,并点击弹出界面中的Add按钮,做如下添加:
点击OK按钮,并等待一段时间,Eclipse会列出关于该插件的详细信息,如下图所示:
全选,并按照屏幕提示来完成安装,可以忽略警告信息。
sudo apt-get install lib32z1 lib32ncurses5 lib32bz2-1.0
然后点击Next按钮
没有问题,就可以点击Finish完成工程的创建。
sudo apt-get install openocd
安装后的openocd,版本是0.7。如果想使用最新的0.8版本,可以参考OpenOCD官网安 装最新版本。
使用USB线连接STM32F4开发板,然后点击Debug按钮,开始调试我们的工程。单击Debug按钮后,OpenOCD会把工程结果加载到开发板,所以此时也可以立即终止调试,通过重启开发板来直接观察工程运行情况。我们这个示例工程是让板载LED灯持续闪烁,我已经看到了期望的结果,你呢?
除了这些来自开源社区的集成开发环境和组件外,在ARM公司创建的mbed.org网站,你会发现更多更有意思的微控制器开发设备,项目和代码。近些年来开源软件有了长足的发展,得到了越来越多人的认可,甚至已经变成了一种生活方式和理念,很多开源软件的质量已经完全可以媲美或者超越商业软件。本文抛砖引玉,希望大家能够更多更好的利用开源的力量实现自己的梦想,同时也能开源自己的东西,帮助别人,让我们一起努力,让世界变得更加美好!
PS: 初次发帖,不太会格式化文章,附上PDF格式文档。