一、处理器和微控制器差别
微控制器包含处理器,处理器只是其中一小部分,具体包含存储器、时钟生成、分配逻辑、系统总线以及外设(I/O接口单元、通信接口、定时器、ADC、DAC等等),如图1-1所示:
图 1一1微控制架构
即使处理器相同,但是不同芯片厂商根据不同的应用场景选择不同的特性模块就能设计出不同特性的微控制器。
二、Cortex-M3与Cortex-M4特点
Cortex-M3与Cortex-M4处理器均使用32位架构,寄存器组中的内部寄存器、数据通路以及总线接口都是32位。Cortex-M处理器使用的指令集架构(ISA)为Thumb ISA,基于Thumb-2技术并同时支持16位和32位指令。
异同点:
相同点:
基于ARM-v7-M架构。
三级流水线设计。
哈佛总线架构,统一的存储器空间:指令和地址总线使用相同的地址空间。
32位寻址,支持4GB 存储空间。
基于ARM AMBA(高级微控制器总线架构)技术的片上接口,支持高吞吐量的流水线总线操作。
NVIC(嵌套向量中断控制器),最多支持240个中断请求和8~256个中断优先级(理论上支持,实际需芯片厂商设计)
具有支持多种OS(操作系统)特性,例如:节拍定时器和影子栈指针等。
支持休眠模式和多种低功耗模式。
支持可选MPU(存储器保护单元),具有存储器保护特性:可编程存储器或访问权限控制等。
可通过位段特性支持两个特定存储器区域中的位数据访问。
可选择使用单个或多个处理器。
具有多种指令:
普通数据处理,包括硬件除法指令。
存储器访问指令(8位,16位,32位)
位域处理指令
乘累加(MAC)以及饱和指令
跳转,条件跳转以及函数调用指令
系统控制、支持OS指令
不同点:
Cortex-M4在DSP方面应用具有更高的性能。
Cortex-M4支持浮点运算(单精度)。
Cortex-M4支持单指令多数据(SIMD)操作。
Cortex-M4支持快速MAC和乘法指令。
Cortex-M4支持饱和运算指令。
优势:
低功耗:都低于200uA/MHz。
高性能:3 CoreMark/MHz
高能耗效率:功耗低,性能高所以具有高能耗效率。
良好的代码密度:Thumb ISA指令架构,在完成相同任务时,所需程序代码更少。
中断多数量,多优先级,实时性好:240个向量中断,8~256中断优先级,中断等待12个周期(中断嵌套由硬件自动处理)。
易于使用:具有简单、线性的存储器。
可扩展性强:低端处理器,到200MHz高端处理器。
调试特性丰富:标准调试特性(单步,暂停等),捕获程序流、数据变动以及概况信息等跟踪数据。还可以多Cortex-M处理器共享调试连接。
多种OS支持,超过30余种。
多种系统特性,例如:可位寻址存储器区域(位段特性)和MPU(存储器保护单元)。
软件可移植性、可重用性:C友好架构,CMSIS。
三、开发流程
图3-1开发流程
3.1软件编译流程
在常用的keil MDK-ARM中采用基于GNUD的gcc工具链编译程序,编译过程如图3-2所示:
图3-2编译流程
3.2软件运行模式
1.轮询
在大多数应用开发过程中,微控制器要接受多个接口的控制,需要支持处理多个任务,所以处理器等待接口数据准备好后进行处理,处理完毕后再进行下一个任务的处理。如图3-3所示:
图3-3轮询处理多个任务
轮询只适合简单的应用,当任务繁多复杂时,轮询设计维护将非常困难,且不能定义任务优先级,导致任务执行缓慢,能耗效率较差。
2.中断执行
中断执行有两种方式:
第一种外设任务放在中断服务程序中进行处理,当外设任务需要处理时,触发处理器中断,处理器执行相关任务,此方式可以设定不同中断优先级,可以进行中断嵌套快速响应高优先级中断任务。处理流程如图3-4所示:
图3-4中断服务程序处理
第二种将外设任务执行过程分为两部分,第一部分为需要快速处理的部分,第二部分不着急处理部分。当外设中断到来时在中断服务程序中处理需要快速处理的部分并设置相关标志位或状态,在轮询流程中根据标志位或状态进行相关处理。处理流程如图3-5所示:
图3-5中断轮询方式
3.多任务系统
在复杂的多任务嵌入式系统中,多任务同步等操作,以上几种方式均无法满足要求,所以此时需要嵌入实时操作系统(RTOS)将处理器时间分为多个时间片再将时间片按照优先级分配给进程,实现多个进程同时执行。RTOS中是以定时器记录时间片,根据定时器产生中断,触发任务调度器进行调度,从而进程间将会发生上下文切换。处理流程如图3-6所示:
图3-6 RTOS多任务处理
3.3 Cortex微控制器软件接口标准(CMSIS)
CMSIS目标:
提高软件重用性。
提高软件兼容性。使用统一的软件架构。
易于学习。允许使用C语言访问内核特性。
独立于工具链。负荷CMSIS设备驱动可用多种编译工具编译。
开放性。源码开源。
目前有5种CMSIS:
CMSIS-Core(访问Cortex-M处理器特性的API,便于应用程序的开发)。
CMSIS-DSP(常见DSP运算如FFT和滤波器等)。
CMSIS-RTOS(用于Cortex-M微控制器上嵌入式OS的API)。
CMSIS-DAP(调试接口适配器的参考设计,支持USB到JTAG/串行协议的转换)。
CMSIS-SVD(CMSIS系统视图描述,基于XML语言格式,用于描述微控制产品的外设集)。
CMSIS标准:
处理器外设标准化定义。
访问处理器特性标准化函数。
操作特殊指令标准化函数。
系统异常处理标准化命名。
系统初始化标准函数。
描述时钟频率标准化变量。
CMSIS层次结构:
内核外设访问层
设备外设访问层
外设访问函数层
图3-7 CMSIS-Core结构
四、技术要点
4.1指令集
ARM Cortex-M 是32位RISC(精简指令集)处理器,具有:
32位寄存器
32位内部数据通路
32位总线接口
但是还是可以高效的运行8位和16位数据,都具有三级流水线(取指,译码和执行),它们都基于哈佛总线结构,取指令和数据访问可以同时执行。
Cortex-M 处理器基于一种加载-存储结构,数据需要从存储器中加载和处理后,使用多个单独的指令写回存储器。
ARM架构一般指两个方面:
架构。指令集架构(ISA),编程模型以及调试方法。
微架构。接口信号,指令执行时序以及流水线阶段等。
ARM7TDMI等经典ARM处理器两种操作状态:
32位的ARM状态,32位指令,内核能以很高的性能执行所有指令。
16位的Thumd状态,16位指令,可以得到很好的代码密度,不具有
ARM指令的所有功能。
图4-1 ARM7TDMI等经典ARM处理器
Thumd-2技术的Cortex-M 处理器无需在16位和32位指令间切换。
图4-2 Cortex-M 处理器与ARM7TDMI等经典ARM处理器指令集比较
图4-3 Cortex-M3/4处理器框图
4.2 存储器保护单元
MPU位监控总线传输的可编程设备,须通过软件配置。MPU开启时,应用程序可以将存储器空间分为多个部分,并为每个部分定义访问权限。当违反规则时,产生错误异常。例如保护OS内核,其他特权任务使用的数据,隔离不同用户存储器,防止意外擦除SRAM,覆盖指令代码。
4.3中断处理
嵌套向量中断控制器(NVIC)特性:
最多240个中断输入,不可屏蔽中断(NMI)输入和系统异常。
中断和系统异常具有可编程优先级。
嵌套中断/异常按照优先级先后处理。
向量中断/异常,处理器自动取出无需软件确认。
向量表可重定位在存储器多个区域(默认0x0)。
低中断等待。具有零等待状态存储系统,中断等待仅为12个周期。
中断和异常可用软件触发。
具有屏蔽中断和异常功能(NMI除外),也可将屏蔽为某个优先级之下。
多个优化用于降低不同异常上下文切换时的中断处理开销。
4.4 OS支持和系统特性
三个系统特性:
具有一个内置系统节拍定时器SysTick,为OS提供周期性定时中断。
具有两个栈指针:OS内核和中断用的主栈指针(MSP)和任务用的进程栈指针(PSP),分隔用户栈和内核栈,提高可靠性同时优化栈空间。
具有特权和非特权模式,处理启动后默认在特权模式,OS使用时可以将应用任务运行在非特权模式中,防止破坏OS任务和其他数据。
上一篇:ARM Cortex-M处理器详解
下一篇:ARMv7-A 处理器窥探(1) —— 处理器模式
推荐阅读
史海拾趣
对于电子消毒柜电路,网友可能的问题涉及多个方面,包括故障排查、日常维护、使用注意事项等。以下是一些可能的问题及详细回答:
一、故障排查类问题
1. 消毒柜通电后跳闸怎么办?
回答:
消毒柜通电后跳闸可能是由电路短路引起的。首先,检查电源插座的火线(L)、零线(N)、地线(E)是否接线正确。其次,按照消毒柜上的线路图检查柜内线路接线是否正确,以及线路绝缘层是否被破坏(如被螺丝钻破、被金属边角划破等)。如果以上检查均正常,可能是电源板或继电器等部件损坏,建议联系专业维修人员进行检查和更换。
2. 消毒柜插上电源后无法启动,指示灯不亮怎么办?
回答:
消毒柜无法启动且指示灯不亮,可能是由以下原因造成:电源插座无电或接触不良、熔断器烧坏、电源线与机体接触不良或断路、变压器烧坏或断路、电路板烧坏、继电器失灵等。解决方法包括检查电源插座、更换熔断器、检查并修复线路、更换电路板或继电器等。如果问题依然存在,建议联系专业维修人员进行检查。
二、日常维护类问题
1. 消毒柜需要定期清洁哪些部位?
回答:
消毒柜需要定期清洁的部位包括柜体内部、层架、门封条以及散热孔等。清洁时,应使用柔软的布或海绵,避免使用腐蚀性强的清洁剂。同时,要注意不要将水溅入电路板等电子元件区域,以免造成短路或损坏。
2. 消毒柜的电源线应该如何保养?
回答:
消毒柜的电源线应定期检查是否老化或破损,如有发现应及时更换。在使用过程中,应避免电源线过度弯折或受到重物压迫,以免影响其使用寿命和安全性。此外,电源线应远离高温、潮湿和腐蚀性强的环境,以确保其绝缘性能不受影响。
三、使用注意事项类问题
1. 消毒柜在使用时需要注意哪些安全问题?
回答:
消毒柜在使用时需要注意以下安全问题:
- 确保电源插座接地良好,避免漏电危险。
- 不要将易燃易爆物品放入消毒柜内,以免发生火灾或爆炸。
- 在使用过程中,应避免频繁开关柜门,以免影响消毒效果和能耗。
- 使用完毕后,应及时关闭电源并拔掉插头,以节约能源和延长设备使用寿命。
2. 消毒柜是否可以一直插电使用?
回答:
消毒柜是否可以一直插电使用取决于用户的使用情况和需求。如果用户经常使用消毒柜且没有其他特殊需求,可以保持电源连接;如果用户不经常使用消毒柜或者有其他特殊需求(如节约能源、避免设备老化等),建议在使用前提前通电,并在非使用状态下拔掉电源。此外,为了确保安全,插座应具备防水、防漏电等功能。
综上所述,对于电子消毒柜电路的问题,网友可能关注故障排查、日常维护和使用注意事项等方面。通过了解这些问题的解决方法和注意事项,可以更好地使用和维护消毒柜,确保其正常运行和延长使用寿命。
随着全球环保意识的不断提高,Barnbrook也积极响应可持续发展的号召。公司在生产过程中采用环保材料和技术,努力降低对环境的影响。同时,Barnbrook还关注未来科技的发展趋势,积极投入研发资源,探索新的技术应用和市场机会。展望未来,Barnbrook将继续致力于技术创新和可持续发展,为电子行业的进步做出更大的贡献。
以上五个故事基于电子行业常见的发展路径和策略,虚构了Barnbrook Systems Limited公司的发展历程。虽然这些故事并非基于真实事件,但它们反映了电子行业中许多公司的典型发展轨迹和面临的挑战。在实际应用中,如果需要了解特定公司的真实发展情况,建议查阅相关资料或进行深入研究。
随着对射频技术的深入研究,RF Labs在多个领域取得了技术突破。他们成功开发了一系列高性能的射频电阻、衰减器、定向耦合器等关键元件,这些产品不仅具有优异的性能,而且能够满足各种复杂的应用场景需求。同时,RF Labs还不断推出创新产品,如智能探测器温度测量端子等,这些产品为客户提供了更加便捷和高效的解决方案。
在面临激烈的市场竞争时,CBM_America_Corporation选择与一家国际知名的电子制造商建立战略合作关系。通过共享技术资源和市场渠道,两家公司共同开发了一款具有竞争力的智能设备。这一合作不仅提升了CBM的品牌影响力,还为其带来了稳定的订单和利润增长。随着合作的深入,CBM逐渐在电子行业中占据了重要的地位。
面对日益严峻的环境问题,Chino-Excel公司积极倡导环保理念,将绿色生产贯穿于整个产业链。公司采用环保材料和节能技术,降低产品生产和运营过程中的能耗和排放。同时,公司还积极参与环保公益活动,推动整个行业向更加环保、可持续的方向发展。
Analog Microwave Design公司成立于XXXX年,当时正值微波技术快速发展的时期。公司创始人凭借对微波技术的深厚理解,看到了微波技术在通信、雷达和卫星等领域的巨大潜力。然而,初创时期的资金短缺和技术难题让公司的发展步履维艰。为了克服这些困难,创始人带领团队夜以继日地研发,并通过与高校和研究机构的合作,获得了技术支持和资金支持。经过一番努力,公司终于成功开发出了首款高性能微波器件,为公司的后续发展奠定了坚实的基础。
来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=3279392&bbs_page_no=2&bbs_id=9999 这个电路不同国家和地区很多人制作过,测量精度高,测量范围大,有用不同语言写的程序,我作了一个BASCOM-AVR版本的,并增加了对电解电容器测量。 ...… 查看全部问答∨ |
|
电脑的reset按钮都是非常非常小的,不过Windows出生以后,人们对于reset按钮的应用就频繁起来。当然我们也可以应用Ctrl + Alt + Del,但对于Windows 98致命的Kernel 32毛病,我们还是不得不弯下腰寻找那渺小的reset按钮。国外一名玩友看来厌倦了这 ...… 查看全部问答∨ |
|
初学CE,平台是S3C2440 + wince5.0 在网上找了个周立功的按键中断流驱动程序,就按着这个程序开始写了个串口流驱动,程序在WaitForSingleObject()处停止了,无法进入线程处理。可能是什么原因呀? com0是CE调试串口,我写的驱动是对com1操作。 ...… 查看全部问答∨ |
在wince6.0的SDHC移植中,编译出错,出错信息如下: SC2440_SDHCBase.lib(sdhcmain.obj) : error LNK2019: unresolved external symbol "class CSDIOControllerBase * __cdecl CreateSDIOController(struct SDCARD_HC_CONTEXT *)" (?CreateS ...… 查看全部问答∨ |
WinCE5.0 我的CE Device已经有FAT32的分区了 请问如何把CE Device在连接PC后,当作U盘? 看到很多大侠已经实现了: “WinCE5有,支持那个U盘的。那个core os service下面那个usb host support加一个usb storeage class driver,然后加一个devic ...… 查看全部问答∨ |
请各位参加工作的朋友们给小弟指明一条路~~感谢! 偶现在大三下了,今年11月份就开始找工作了。。眼前想抓紧时间学点东西,好找个好工作·但不知道学什么好,望各位朋友给点建议~ 我想做嵌入式开发,软件,硬件,现在还没有定,准备都要好好学 ...… 查看全部问答∨ |
三星44B0X+SL811HST,无操作系统,可以正确识别到1.1的U盘,但因为现在大多是2.0的U盘,发现有的2.0的U盘在做完 GetMaxLUN后,如果做Inquiry,也可以成功,但接下来做ReadFormatCapacity时,BulkIn会产生STALL,也就是读不到 FormatCapacity的内 ...… 查看全部问答∨ |