您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > ARM-Cortex-M4学习与实践——纪成
山东大学智能车工作室Byjicheng0622学习与实践山东大学智能车工作室纪成2013年3月山东大学Kinetis培训——基于飞思卡尔Kinetis系列山东大学Kinetis培训内容安排飞思卡尔Kinetis功能特性1K60开发生态系统介绍2IAR+Jlink开发K60方法K60代码框架分析K60外设资源在智能车中的应用K60学习资源整理63451、ARM发展史一、飞思卡尔Kinetis功能特性山东大学Kinetis培训2、ARMv7处理器分类3、ARMCortex-M4特性4、飞思卡尔Kinetis家族介绍5、K60内部资源介绍ARM发展史山东大学Kinetis培训ARM架构发展历程ARMv7处理器分类山东大学Kinetis培训ARMv7根据应用分类:•应用处理器(Cortex-A系列)AplicationProcessor•实时控制器(Cortex-R系列)Real-timeProcessor•微控制器(Cortex-M系列)MicroController即最快频率、最高性能、合理功耗实时响应、合理性能、较低功耗一般性能、最低成本、极低功耗ARMCortex-M4特性ARMCortex-M4处理器是在M3的基础上强化了运算能力,采用一个扩展的单时钟周期乘法累加(MAC)单元,优化的单指令多数据(SIMD)指令,饱和运算指令和一个可选的单精度浮点单元(FPU),源于Cortex-M4系列一些创新性的技术,包括:RISC处理器内核,高性能32位CPU、具有确定性的运算、低延迟3阶段管道,可达1.25DMIPS/MHz;Thumb-2指令集,16/32位指令的最佳混合,提供最佳代码密度;低功耗模式,支持多种状态低功耗模式;嵌套矢量中断控制器(NVIC),低延迟、低抖动中断响应、支持以纯C编写中断服务例程,能出色的完成中断处理;广泛的工具和RTOS支持,广泛的第三方工具支持、Cortex微控制器软件接口标准(CMSIS)最大限度缩短开发周期和难度;CoreSight调试和跟踪,JTAG和2针串行线调试(SWD)连接、支持多处理器、支持实时跟踪。山东大学Kinetis培训飞思卡尔Kinetis家族Kinetis系列是由飞思卡尔推出的业界第一款基于ARMCortex-M4内核的混合信号微控制器,采用飞思卡尔创新的90nm薄膜存储器(TFS)闪存技术,具有独特的Flex存储器(可配置的内嵌EEPROM)。Kinetis微控制器系列融合了最新的低功耗革新技术,具有高性能、高精度的混合信号能力,宽广的互连性,人机接口和安全外设。飞思卡尔公司以及其他大量的ARM第三方应用商提供对Kinetis微控制器的应用支持。山东大学Kinetis培训飞思卡尔Kinetis家族山东大学Kinetis培训飞思卡尔KinetisK系列山东大学Kinetis培训增加段式液晶的驱动增加USB功能增加模拟测量引擎,以太网和硬件加密增加USB功能增加图形液晶驱动增加以太网,硬件加密,温度检测和DRAM控制器Kinetis命名规则山东大学Kinetis培训字段说明取值Q质量状态M=正式发布芯片;P=工程测试芯片K##Kinetis系列号K20A内核属性D=Cortex-M4w/DSP;F=Cortex-M4w/DSP和FPUMFlash存储类型N=仅包含程序Flash;X=包含程序Flash和FlexMemoryFFF程序Flash大小32=32KB;64=64KB;128=128KB;256=256KB;512=512KB;1M0=1MBR硅材料版本空=主要使用的版本;Z=初始版本;A=主要使用版本的更新T温度范围V=–40到105摄氏度;C=–40到85摄氏度K60内部资源介绍山东大学Kinetis培训K60内部资源介绍山东大学Kinetis培训K60(K60N512VLL100)封装LQFP100(14mm*14mm)可用IO70FLASH512kbyteRAM128kbyte非易失存储无CPU类型ARMCortex-M4CPU最大速度100M完整并行IOPTC0-15,PTD0-7K60内部资源介绍山东大学Kinetis培训K60(K60N512VLL100)UART4个(UART0~UART3)SPI3个(SPI0~SPI2)I2C2个(I2C0~I2C1)InputCapture输入捕捉FlexTimer模块,有硬件16bit计数器,至少8通道PWMFlexTimer模块,16bit计数器FTM0——8通道FTM1——2通道FTM2——2通道SD卡控制器1个(SDHC0)外部中断所有IO都可触发中断(PTA~PTE)DMA控制器56个源,16通道K60内部资源介绍山东大学Kinetis培训K60(K60N512VLL100)ADC通道数4组差分输入,24个单端ADC精度差分模式可编程16位,13位,11位和9位精度单端模式可编程为16位,12位,10位和8位精度ADC最大速度361ksps/16bit,818ksps/=13bitADC特殊功能可编程增益的放大器(PGA)硬件平均功能(HardwareAverageFunction)DAC12bit/1通道模拟比较器3通道开发环境CW10.1、IAR、MDK山东大学Kinetis培训二、K60开发生态系统软件应用调试工具开发环境其他支持Kinetis开发环境支持Kinetis开发的IDE(集成开发环境)目前主要包括CodeWarrior10.1及以上版本,IAR6.1及以上版本和KeilMDK(即KeilforARM)等。山东大学Kinetis培训Kinetis开发环境山东大学Kinetis培训CodeWarrior10.2Kinetis开发环境山东大学Kinetis培训IAR6.3Kinetis开发环境山东大学Kinetis培训开发环境对比山东大学Kinetis培训CodewarriorIARKeilMDK优点1、基于Eclipse开发平台,编辑界面交互功能强大;2、采用GCC编译器和GDB调试器;3、对飞思卡尔的MCU支持较好。4、可以向导化生成启动代码,上手简单。1、界面简洁,操作方面;2、老牌编译器厂商,自家的IAR编译器的编译效率较高;3、第三方插件支持丰富;4、支持在线实时仿真。1、界面简洁而且友好,上手简单;2、被ARM收购,编译器对ARM内核支持相对较好;3、可以向导化生成启动代码,方面开发。缺点成于Eclipse,也败于Eclipse,需要运行在java虚拟机之上,软件体积庞大,对PC机硬件要求高。不支持生成启动代码,需要自己建立开发模板,上手较难。编译速度较慢,效率一般。Kinetis调试工具目前Kinetis的调试工具主要有飞思卡尔自己的OSBDM及USBDM、P&EMultilink、J-Link和ulink等等,其中JLink(目前发展到V8版本)以其支持范围广、价格便宜、速度快等优势得到广泛应用。山东大学Kinetis培训J-LinkP&EMultilinkOSBDM山东大学智能车工作室根据开源资料,自行设计了OSBDM调试器和USBDM调试器,其中OSBDM由飞思卡尔官方开源,目前由P&E公司维护,USBDM由网友pgo开源和维护。经过二次设计和完善,目前山大设计的OSBDM分别支持CW、IAR和KeilMDK三种开发环境,而且支持飞思卡尔几乎全系列MCU,包括:FreescaleHCS12/HCS12(X)/HCS08(已测试MC9S12DG128、MC9S08JM60)FreescaleColdfireV1,V2,V3,V4(已测试MCF52259)FreescaleDSC全系列(已测试MC56F8366)FreescalePowerPC架构的Qorivva系列(已测试MPC5604B)FreescaleCortex-M4核的Kinetis系列(已测试K10、K60)Kinetis调试工具山东大学Kinetis培训Kinetis开发板山东大学Kinetis培训山东大学Kinetis培训三、IAR+Jlink开发K60方法IAR+Jlink开发K60方法1、IAR代码模板结构分析2、IAR模板移植3、IAR项目工程设置技巧4、Jlink调试技巧山东大学Kinetis培训山东大学Kinetis培训四、K60代码框架分析K60上电启动顺序山东大学Kinetis培训(1)上电起初,单片机的电压调节器会把整个系统置于POR(上电复位)状态的上电阶段,一直到工作电压达到了可以让单片机正常工作的电压阈值之后才释放这个上电阶段,进入复位阶段;(2)在复位保持期间,由单片机内部的模式控制复位逻辑统筹支配整个复位阶段的执行顺序;(3)首先MCG模块使能,并默认为FEI时钟模式;(4)相应模块的时钟使能,包括Coreclock,Systemclock,Flashclock,busclock等这些不需要门控(clockgate,M4的特色)控制的时钟;(5)Flash控制器从复位状态释放(注意这时外部RESET脚仍然保持低电平),并且执行一系列的初始化操作(因为要为接下来的代码执行做准备了);K60上电启动顺序山东大学Kinetis培训(6)单片机/RESET引脚释放,但是系统复位状态继续保持,一直到上面的Flash控制器初始化完毕(如果Flash控制器提前初始化好,则/RESET引脚释放后立即从POR状态苏醒);(7)Kinetis从复位状态唤醒之后,开始设置堆栈(stack),程序计数器(PC)和连接寄存器(LR),即从中断向量表地址0读取内容给堆栈指针,地址4读取内容给PC指针,LR寄存器设置为0xFFFF_FFFF。(8)上面三个寄存器设置好了之后,单片机就开始从PC指针指向的地址开始执行代码了,即进入启动代码阶段,最后才转到main开始执行。K60启动代码分析山东大学Kinetis培训RestHandler清零通用寄存器组跳转到Kinetis_Start_C关闭看门狗如果从ROM启动,则复制中断向量表到RAM中修改中断向量表地址为RAM中的地址复制初始化数据段.data到RAM把以ram_function声明的函数拷贝到RAM中清零RAM中初始化为0的.BSS段初始化锁相环PLL跳转到main函数内存映射.map文件分析山东大学Kinetis培训山东大学Kinetis培训五、K60外设资源在智能车中的应用K60外设资源在智能车中的应用K60高精度高速的AD,可以有效的采集传感器模拟参数;K60的每个IO都可以设置为中断触发源,为智能车硬件设计提供更大的灵活性;K60的FTM模块可以提供PWM通道,控制智能车的舵机和电机;K60的PIT模块实现周期性中断,提供时间基准,或者与LPTMR模块的脉冲累加功能实现速度测量;K60使用ARMCortex-M4的核,具有1.25DMIPS/MHz的运算能力,另外还有单时钟周期乘法累加(MAC)单元,优化的单指令多数据(SIMD)指令、饱和运算指令等,使更加复杂的处理算法的实现成为可能。山东大学Kinetis培训K60外设资源山东大学Kinetis培训GPIO模块A/D模块PWM模块PIT模块GPIO模块山东大学Kinetis培训GPIO模块需要考虑如下几个寄存器:PORTx_PCRn——端口控制寄存器,管理管脚复用GPIOx_PDDR——端口数据方向寄存器GPIOx_PDOR——端口数据输出寄存器GPIOx_PDIR——端口数据输入寄存器GPIOx_PTOR——端口输出翻转寄存器GPIO模块山东大学Kinetis培训PORTx_PCRMUX-管脚复用控制PE-拉电阻使能0——禁能上拉或者下拉电阻1——禁能上拉或者下拉电阻PS-拉电阻属性设置0——使能下拉电阻1——使能上拉电阻GPIO模块山东大学Kinetis培训GPIOx_PDDRGPIO模块山东大学Kinetis培训GPIOx_PDORGPIO模块山东大学K
本文标题:ARM-Cortex-M4学习与实践——纪成
链接地址:https://www.777doc.com/doc-5509033 .html