在设计和开发STM32嵌入式系统之前,开发者应先选择一款合适的开发工具。随着微控制器的不断发展,涌现出了众多的开发工具,以支持各种微控制器的系统设计与开发工作。新一代基于CortexM3内核的微控制器促使大部分的开发工具开始支持Thumb-2指令集,使微控制器的开发应用可以更加方便地在C语言环境中完成。当前应用较为广泛的开发工具主要有GCC、Greenhills、Keil、IAR和Tasking等,这些开发工具都很容易获取,并且有些还是免费且开源的。
目前众多的微控制器开发工具百花齐放,各有所长,很难分出优劣。在选用开发工具时,一般建议选用芯片厂商推荐的开发工具。但是由于开发工具种类众多,除了芯片厂商推荐的开发工具,开发者也可以有其他选择。当前的开发工具主要可以分为两大类,一类是免费且开源的,具有“大众”性质的开发工具;另一类是收费的,具有“专业”性质的商业开发工具。
现阶段,免费开发工具的主要代表是基于GCC或GNU编译器的开发工具,这两种编译器是完全免费且开源的,可以免费下载,并在任何场合都可以放心地使用。目前GCC编译器已经被整合到众多的商业集成开发环境(IDE)和调试工具中,因此,涌现出了许多价廉的开发工具和评估开发板。GCC编译器的可靠性与稳定性较好,但是相对商业平台而言,它生成代码的效率要低一些,而且基于GCC编译器的开发工具在使用过程中遇到问题时,无法获得直接的技术支持,这容易导致嵌入式系统的开发进度受阻。
ARM Real View是ARM公司自行推出的产品,它作为商业开发工具而备受关注。它的功能强大,在所有开发工具中具有压倒性的优势,但是它高昂的价格也令许多嵌入式系统开发者望而却步。
Real View编译器是ARM Real View IDE系列组件之一,起初只在片上操作系统领域应用较多,没有为微控制器的开发提供很好的支持。但是在2006年2月,Real View编译器被整合进了Keil MDK,形成了一种微控制器开发工具(ARM Microcontroller Development Kit,ARM MDK),从而在微控制器开发领域大展风采。Real View编译器编译的代码小、性能高,经过不断的发展与优化,已经成为当前业界最优秀的编译器之一。
Keil MDK是一款完全为基于ARM内核的微控制器而打造的开发工具,它的功能更加完善,并为开发者提供了完善的工具集,易于使用。因此,后面均以Keil MDK为基础对STM32嵌入式系统的设计与实践进行讲解。除了Keil MDK开发工具,瑞典IAR公司的Embedded Workbench for ARM集成开发工具和法国Raisonance公司的RKit-ARM开发环境等也是不错的选择。
一般而言,简单的嵌入式系统设计不一定要选用商业开发工具,但如果要想实现系统开发的标准化,则选用商业开发工具是值得的,因为选用商业开发工具可以得到更好、更专业的技术支持,从而缩短系统的开发周期。
Keil MDK是由德国KEIL公司开发的,是ARM公司目前最新推出的针对各种嵌入式微控制器的软件开发工具。目前Keil MDK的最新版本为MDK5.29,该版本集成了业内领先的技术,包括µVision5集成开发环境与Real View编译器等。
Keil MDK支持ARM7、ARM9和最新的Cortex-M系列内核微控制器,支持自动配置启动代码,集成FLASH编程模块、强大的Simulation设备模拟和性能分析等单元,出众的性价比使得Keil MDK开发工具迅速成为ARM软件开发工具的标准。目前,Keil MDK在我国ARM开发工具市场的占有率在90%以上。Keil MDK主要能够为开发者提供以下开发优势。
(1)启动代码生成向导。启动代码和系统硬件结合紧密,只有使用汇编语言才能编写,因此成为许多开发者难以跨越的门槛。Keil MDK的µVision5工具可以自动生成完善的启动代码,并提供图形化的窗口,方便修改。无论是对于初学者还是对于有经验的开发者而言,都能大大节省开发时间,提高系统设计效率。
(2)设备模拟器。Keil MDK的设备模拟器可以仿真整个目标硬件,如快速指令集仿真、外部信号和I/O端口仿真、中断过程仿真、片内外围设备仿真等。这使开发者在没有硬件的情况下也能进行完整的软件设计开发与调试工作,软硬件开发可以同步进行,大大缩短了开发周期。
(3)性能分析器。Keil MDK的性能分析器可辅助开发者查看代码覆盖情况、程序运行时间、函数调用次数等高端控制功能,帮助开发者轻松地进行代码优化,提高嵌入式系统设计开发的质量。
(4)Real View编译器。Keil MDK的Real View编译器与ARM公司以前的工具包ADS相比,其代码尺寸比ADS1.2编译器的代码尺寸小10%,其代码性能也比ADS1.2编译器的代码性能提高了至少20%。
(5)ULINK2/Pro仿真器和FLASH编程模块。Keil MDK无须寻求第三方编程软硬件的支持,通过配套的ULINK2仿真器与FLASH编程工具,可以轻松地实现CPU片内FLASH和外扩FLASH烧写,并支持用户自行添加FLASH编程算法,而且支持FLASH的整片删除、扇区删除、编程前自动删除和编程后自动校验等功能。
(6)Cortex系列内核。Cortex系列内核具备高性能和低成本等优点,是ARM公司最新推出的微控制器内核,是单片机应用的热点和主流。而Keil MDK是第一款支持Cortex系列内核开发的开发工具,并为开发者提供了完善的工具集,因此,可以用它设计与开发基于Cortex-M3内核的STM32嵌入式系统。
(7)提供专业的本地化技术支持和服务。Keil MDK的国内用户可以享受专业的本地化技术支持和服务,如电话、E-mail、论坛和中文技术文档等,这将为开发者设计出更有竞争力的产品提供更多的助力。
此外,Keil MDK还具有自己的实时操作系统(RTOS),即RTX。传统的8位或16位单片机往往不适合使用实时操作系统,但Cortex-M3内核除了为用户提供更强劲的性能、更高的性价比,还具备对小型操作系统的良好支持,因此在设计和开发STM32嵌入式系统时,开发者可以在Keil MDK上使用RTOS。使用RTOS可以为工程组织提供良好的结构,并提高代码的重复使用率,使程序调试更加容易,项目管理更加简单。