开发环境以及启动模式
象棋小子 1048272975
ARM核以其高性能、低功耗、低成本广泛应用在各个领域,包括ARM7、ARM9、ARM11、Cortex-M、Cortex-A等这几个系列。众多的半导体商如NXP、Freescale、Atmel、Samsung、TI等都设计了基于ARM核的自家通用处理器,ARM核从低成本控制处理器到高性能应用处理器,已经深入到我们生活的方方面面。此处就NXP的LPC54114作一个简单的介绍。
1. LPC5411x概述LPC5411x系列是基于ARM Cortex-M4内核的高效微控制器,具有广泛的性能和功能可扩展性,针对嵌入式应用,提供了行业领先的下一代功效设计。
LPC5411x除了一个高效的Cortex-M4内核,还附带了一个Cortex-M0+协处理器。可以利用高功效的Cortex-M0+内核执行数据收集、聚合,以及系统任务管理,通过Cortex-M4内核快速执行传感器融合等处理器密集型算法,从而优化功效和吞吐率,实现低功耗的应用。附带的专用片上数字麦克风(DMIC)子系统,能够显著降低需要语音输入和处理功能的应用功耗,尤其适合于通过语音激活的低功耗产品中。
LPC5411x的主要特性如下:
l 双核,ARM Cortex-M4/ARM Cortex-M0+,主频均为100M,其中Cortex-M4支持浮点处理以及内存保护功能
l 片内高达256K具有加速单元的可编程flash以及高达192K的SRAM
l 片内固化代码支持片上系统可编程(ISP)、片上应用可编程(IAP),支持flash、USB、USART、SPI、I2C启动
l 8个Flexcomm接口用于支持串行外设,可以选择设置作为USART、SPI、I2C接口,其中两个Flexcomm接口也可以选择设置作为I2S接口
l DMA控制器,具有20个通道和20个可编程触发器
l 最多50个通用输入输出(GPIO)引脚
l 12位ADC,具有12个输入通道以及多个内部和外部触发器输入
l DMIC子系统,包含一个双通道PDM麦克分接口
l 5个标准通用定时器、实时时钟(RTC)、窗口化看门狗定时器(WWDT)等定时器支持
l 12M内部自激振荡器、外部输入时钟、PLL等时钟支持
l 集成电源管理单元(PMU),支持多种省电模式
l JTAG支持
l 具有唯一的设备识别序列号
l 1.62v~3.6v的宽电源供电
l -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. MDKKeil因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. IARIAR支持众多半导体公司的微处理器,支持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-5DS-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. GCCGCC是一套由GNU开发的编译工具,已经被大多数的Unix操作系统(如Linux)采纳为官方编译工具。GCC也支持众多的处理器架构,如ARM、Alpha、MIPS、AVR等等。GNU计划开发出了大批自由免费的开源项目,这些开源项目绝大部分都是基于GCC开发,虽然免费,但丝毫不输相应的商业软件。如果在Linux操作系统下开发ARM,选择GCC也将拥有一大批的优秀开源项目,这也是Linux操作系统繁荣以及吸引人的地方。GCC功能强大灵活,但其绝大部分基于命令行,基于makefile,shell脚本,是习惯windows下开发的工程师所不适的,但使用像eclipse这样的集成开发环境,GCC也将变得容易使用。
3. LPC5411x启动模式LPC5411x固化的bootloader用于支持片上系统可编程(ISP),通过外部的引脚来选择相应的启动模式,支持USART、I2C、SPI和USB。
芯片上电复位后,最先执行里面固化的bootloader,bootloader会进行一系列的初始化,检查ISP配置引脚,进入用户程序或者进入ISP模式。
LPC5411x支持3种类型的用户程序,legacy images、Single Enhanced (SE) images、Dual Enhanced (DE) images。legacy images为老旧的镜像格式,为NXP之前产品芯片所支持,这种格式要求前面的8个32位字加起来的校验和为0x00000000,否则为无效的用户程序。SingleEnhanced (SE) images这种镜像要求用户程序在特定位置有一个有效的镜像头,表明自己的格式,是否支持CRC,CRC方式等等。Dual Enhanced (DE) images与Single Enhanced (SE) images类似,但这种格式支持在flash中存在两个用户程序,用于选择启动,可以实现用户bootloader与用户application的分离,默认启动用户application,一旦用户application被破坏,则自动启动用户bootloader,进行用户application的修复。
如果进入用户程序,bootloader会首先对用户程序进行检查,以确保用户程序是有效的,有效则启动,一旦检查失败,bootloader会自动进入ISP模式。
ISP模式支持I2C/SPI、USART、USB这三种通信方式对flash进行编程,I2C/SPI、USART方式可以查看LPC5411x的datasheet,了解其ISP的通讯协议,其中USART方式还可以配合NXP提供的FlashMagic工具,进行串口方式编程。
如果是USB方式,ISP会虚拟出一个存储设备(LPC5411x内部flash),里面有一个firmware.bin的文件,即为用户程序,可以把firmware.bin文件删除,重新把新的用户程序firmware.bin拷贝到存储设备中,firmware.bin必须满足LPC5411x支持的用户镜像格式,不然芯片启动时验证失败的用户程序会被擦除。
求助小编,cn1管脚无法识别,cn2管脚识别后要求格式化,接下来确实不造怎么办了