1. LPC5411x概述
LPC5411x系列是基于ARM Cortex-M4内核的高效微控制器,具有广泛的性能和功能可扩展性,针对嵌入式应用,提供了行业领先的下一代功效设计。
LPC5411x除了一个高效的Cortex-M4内核,还附带了一个Cortex-M0+协处理器。可以利用高功效的Cortex-M0+内核执行数据收集、聚合,以及系统任务管理,通过Cortex-M4内核快速执行传感器融合等处理器密集型算法,从而优化功效和吞吐率,实现低功耗的应用。附带的专用片上数字麦克风(DMIC)子系统,能够显著降低需要语音输入和处理功能的应用功耗,尤其适合于通过语音激活的低功耗产品中。
LPC5411x的主要特性如下:
- 双核,ARM Cortex-M4/ARM Cortex-M0+,主频均为100M,其中Cortex-M4支持浮点处理以及内存保护功能
- 片内高达256K具有加速单元的可编程flash以及高达192K的SRAM
- 片内固化代码支持片上系统可编程(ISP)、片上应用可编程(IAP),支持flash、USB、USART、SPI、I2C启动
- 8个Flexcomm接口用于支持串行外设,可以选择设置作为USART、SPI、I2C接口,其中两个Flexcomm接口也可以选择设置作为I2S接口
- DMA控制器,具有20个通道和20个可编程触发器
- 最多50个通用输入输出(GPIO)引脚
- 12位ADC,具有12个输入通道以及多个内部和外部触发器输入
- DMIC子系统,包含一个双通道PDM麦克分接口
- 5个标准通用定时器、实时时钟(RTC)、窗口化看门狗定时器(WWDT)等定时器支持
- 12M内部自激振荡器、外部输入时钟、PLL等时钟支持
- 集成电源管理单元(PMU),支持多种省电模式
- JTAG支持
- 具有唯一的设备识别序列号
- 1.62v~3.6v的宽电源供电
- -40度~+105度的工作温度
2. 编译工具
LPC5411x具有Cortex-M4和Cortex-M0+内核,其中M4为ARMv7-M架构,支持Thumb-2指令集,Thumb-2是一种16/32位混合编码指令集,提供了最佳的代码密度。M0+为ARMv6-M架构,是ARMv7-M的子集。因此,编译工具只需支持Thumb-2指令集即可对LPC5411x进行应用开发。
ARM开发从编写源码到最终生成目标可执行二进制代码需要借助一系统的开发工具,如c编译器、汇编器、链接器、调试器、二进制转换工具等,一般均需成套使用。以下简单地介绍几种常用的ARM集成开发工具。
2.1. MDK
Keil因Keil C51而被国内广大工程师所熟知,而KeilMDK则是Keil针对ARM核开发的集成开发环境。Keil被ARM公司收购后,也采用了ARM RealView编译工具,使得Keil MDK编译效率、编译质量等都得到相应的提升,目前也是ARM官方编译器。Keil MDK支持ARM7、ARM9、Cortex-M0、Cortex-M3、Cortex-M4这几个中低端系列ARM核。其简单的操作使用,高度优化的微库、小封装实时操作系统、完善的GUI支持等使之能快速开发各种针对性应用,为小型嵌入式应用开发提供完备的解决方案。
2.2. IAR
IAR支持众多半导体公司的微处理器,支持20多种不同架构的8位、16位、32位内核。例如,IAR for 51用来开发经典的51单片机,IAR for avr用来开发atmel的AVR单片机,IAR for stm8用来开发STMicroelectronics的stm8单片机等等。而IAR for arm即为IAR针对ARM内核开发的工具集,其简洁的用户界面,众多功能强大的设置操作,如自动MISRA C规则检查,完善的C99支持等。IAR具有较好的代码优化性能,高质量的代码编译,是一款相当优秀的编译工具。
2.3. DS-5
DS-5是一款针对ARM支持的Linux和Android平台的全面的端到端软件开发工具套件。ARM自家的编译工具已经经过了几个版本的发展,从最初的ADT到ADS,再到RVDS,到现在的DS-5。其中ADT和ADS已经停止更新十多年了,远远不满足现今的ARM开发要求,不应再继续使用。目前的DS-5支持ARM最新的内核,可以针对具体的内核进行流水线指令等的优化,可对Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15等直接进行软件模拟仿真。没有人会比ARM更熟悉ARM内核了,有理由相信DS-5会比其它编译工具有更高的代码优化以及更高的代码质量。
2.4. GCC
GCC是一套由GNU开发的编译工具,已经被大多数的Unix操作系统(如Linux)采纳为官方编译工具。GCC也支持众多的处理器架构,如ARM、Alpha、MIPS、AVR等等。GNU计划开发出了大批自由免费的开源项目,这些开源项目绝大部分都是基于GCC开发,虽然免费,但丝毫不输相应的商业软件。如果在Linux操作系统下开发ARM,选择GCC也将拥有一大批的优秀开源项目,这也是Linux操作系统繁荣以及吸引人的地方。GCC功能强大灵活,但其绝大部分基于命令行,基于makefile,shell脚本,是习惯windows下开发的工程师所不适的,但使用像eclipse这样的集成开发环境,GCC也将变得容易使用。