文档详情

3.GPIO接口使用示例与移植.doc

发布:2017-04-20约1.02万字共16页下载文档
文本预览下载声明
CooCox系列连载文章——CoX篇 PAGE  PAGE 14 CooCox系列连载文章——CoX篇 首先介绍一下ARM发展历史,以及CoX接口标准产生的背景。 ARM公司在ARMv7后,开始采用新的产品名称,分为3个系列: Cortex-A 系列处理器适用于具有高计算要求、运行丰富操作系统以及提供交互媒体和图形体验的应用领域。 Cortex-R 实时处理器为具有严格的实时响应限制的深层嵌入式系统提供高性能计算解决方案。 Cortex-M 系列控制器针对成本和功耗敏感的 MCU 和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。 中低端应用中,Cortex-M系列芯片用的最多,正如ARM公司所说:“ARM Cortex-M 处理器是全球微控制器标准”。 Cortex-M问世后,各大芯片厂商(TI,ST,Freescale,NXP,ATMEL)分别推出了自己的基于Cortex-M内核的产品,其中以Cortex-M3内核芯片为甚,比如国内市场上最火的STM32系列。后来,ARM公司为了满足微控制器的低功耗应用市场需求,裁剪了M3的部分特性,精简指令,推出M0内核,这直接威胁到传统8位和16位机的生存空间。另外,同为Cortex-M系列的M4,则拥有内置浮点运算单元和DSP组件,使其更适合需要有效且易于使用的控制和信号处理功能混合的数字信号控制市场。 Cortex-M的出现,致使微控制器市场重新洗牌,现在的情况是:Cortex-M芯片的市场售价非常低廉,甚至能与传统的8位机相抗衡的地步:比如高端的AVR mega128 单片机,市场价在40元左右,这个价格能买到更远比AVR mega128强大的Cortex-M芯片,同时Cortex-M芯片带来的创新也能极大的减少开发人员的劳动强度,比如强大的调试系统,完全采用C语言编程。另外,M0内核芯片主打传统8051和ARM7/9中间空白区域的那块市场,取代8051只是时间问题。 由此看,Cortex-M内核统一了原来各大芯片厂商独有的32位架构,覆盖了中低端MCU市场。Cortex-M即将成为了微控制器的事实标准。 此后ARM公司及时推出了CMSIS(Cortex MicroControl Software Interface Standard)来统一编程模型,向开发者提供一致API编程接口。需要注意的是:ARM并没有统一外设,因为ARM公司打造的是一个健康的生态圈,要想生???圈可持续发展,就要给其它厂商生存的空间。因为各大芯片厂商在获得ARM公司授权后,在原有Cortex-M内核基础上,添加自己独有的功能,生产各种独具特色的芯片,来满足不同应用市场。芯片厂商就是靠外设差异化来生存的。如果ARM统一了外设标准,各个芯片厂商造出的芯片一模一样,它们就没什么竞争力了,自然也没有了生存空间,厂商没了生存空间,ARM自然也长久不了。 对于我们芯片开发者来说,因为有了统一的内核编程模型,所以我们可以编写的内核代码,不用做任何更改,便可移植到另外一种Cortex-M芯片上,这减轻了我们的负担。但是对于各个芯片的外设,还是要单独编程,没有可移植性而言,比如:在某个项目中,需要使用LPC的PWM模块来控制舵机,我们不得不先查Reference Manual,然后配置时钟,设置周期,模式,配置占空比;这个项目做完后,开始了下一个项目,也是用PWM模块来控制舵机,但是这次使用的是TI的芯片,额,我们又要重复一遍LPC上面的过程,配置时钟,设置周期,模式,配置占空比,这个项目做了一个月,终于结束了;然而,下一个项目又是用PWM控制直流电机,但是因为价格因素,采用了STM32芯片,用控制占空比来决定电机转速。其实,从功能层面来讲,不同芯片的PWM主要功能都是一样的,不同的是:1:具有PWM的某些特殊功能。2:寄存器设置不同。 其实,回顾计算机历史,我们会发现某些相似的现象,比如C和汇编,汇编是不可移植的,依赖于特定平台,编写的汇编代码不具备可移植性,原有代码不能重用,这就极大的加重了工程师的负担,后来,为了简化编程,出现了C,这样,编译器就代替了我们的工作,将可移植性的C代码生成不可移植的汇编代码。我们采用可移植性的C语言后,就提升了抽象层次,不再考虑具体而微的汇编执行级代码,而是侧重于逻辑层。 现在回到外设的差异性问题,我们也不得不思考,有没有会有一种产品能解决这个问题。 Coocox看准了两点:1:Cortex-M会主导MCU市场。2:内核统一了接口,但外设接口标准还没有统一,这里存在个真空地带。 Coocox据此推出了CoX软件接口标准,打算借此统一外设,同时推出了各种嵌入式开发工具,比如CoIDE,CoFlash,C
显示全部
相似文档