看到 ARM9 数字9比较大,你是不认为它更牛?
看到很多资料都是基于 s3c2410,你是不认为它现在还比较流行?
如果时间倒退10年,ARM9、 s3c2410确实算是比较流行的年代。为什么这么说呢,因为他们是ARM之前的一批处理器。
本文来回顾一下ARM的各种处理器,以及ARM7、ARM9、s3c2410、STM32、Cortex-M3它们之间有什么关联和区别?...
Cortex-M3
1.寄存器
Cortex-M3拥有R0~R15通用寄存器和一些特殊功能寄存器。
R0~R12这些通用寄存器,复位初始值都是不可预料的。
2.Cortex-M3有R0到R15的通用寄存器组
注:绝大部分的16位thumb只能访问R0到R7,而32位thumb-2可以访问全部寄存器
3.特殊功能寄存器
3.1程序状态寄存器组(应用程序PSR+...
1.寄存器
CM3拥有R0~R15通用寄存器和一些特殊功能寄存器
R0~R12这些通用寄存器,复位初始值都是不可预料的
2.CM3有R0到R15的通用寄存器组
注:绝大部分的16位thumb只能访问R0到R7,而32位thumb-2可以访问全部寄存器
3.特殊功能寄存器
3.1程序状态寄存器组(应用程序PSR+中断号PSR+执行PSR...
1.不再像别的ARM7那样从thumb状态和ARM状态来回切换
Thumb-2指令集横空出世,Cortex-M3不支持ARM指令集
2.BKP备份寄存器(42个16位寄存器组成),用来存储用户应用程序数据。。在Vdd掉电时由Vbat供电。。在待机复位、系统复位、电源复位后,这些寄存器不会被复位
3.DMA用来提供外设和存储器以及存储器和存储器之间的高速数据传输,...
【工作模式】
线程模式(Thread mode):处理器复位或异常退出时为此模式。此模式下的代码可以是特权代码也可以是用户代码,通过CONTROL[0]控制。
处理模式(Handler mode):出现异常(包括中断)时进入此模式,此模式下所有代码为特权访问。
【代码限权】
特权访问:对处理器资源拥有完全访问限权;处理器复位后进入此访问模式;清零 CONTROL[0]...
建筑能耗即建筑的运行能耗,就是人们日常用能,如采暖、空调、照明、炊事、洗衣等的能耗,是建筑能耗中的主导部分。随着城市化进程的加快和人民生活质量的改善,我国建筑能耗的总量逐年上升,建筑节能状况落后,浪费及其严重。因此建筑智能化刻不容缓,芯科科技(Silicon Labs)公司采用ARM Cortex-M3内核设计而来的EFM32是全球最低功耗的32位微控制器,对于用电池供电的温控器来说,...
一、工作模式
线程模式和手柄模式。
当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。
二、异常和中断
Cortex-M3 支持大量异常,包括 16-4-1=11个系统异常,和最多 240 个外部中断——简称 IRQ。具体使用了这 240 个中断源中的多少个,...
摘要: 作为32位RISC 微处理器主流芯片, ARM 芯片得到长足发展和广泛应用。因而, ARM 芯片的测试需求更加强劲的同时,测试工作量在加大,测试复杂度也在增加.本文给出了基于ARMCo rte x-M3 的微处理器测试方法,该方法也可用于类似结构的微处理器测试。
作为32位RISC微处理器主流芯片,ARM芯片得到长足发展和广泛应用。因而,ARM芯片的测试需求更加强劲的同时,...
本文的目的是希望读者能够通过本文的内容掌握移植uCOS-II 的规范方法。如果只是需要移植文件,可以直接去Micriμm的官网上下载。
移植uCOS-II,主要的移植工作是编写如下三个文件:
OS_CPU.H
OS_CPU_C.C
OS_CPU_A.ASM
下面就按照这三个文件的顺序来介绍。本文以STM32F107+RealView Compiler 开发环境为例。...
前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结。
根据我们的经验,最容易想到的大概通过计算指令周期来解决。该思路在Cortex上并不是很适用:一方面MCU从Flash取指是有延时的,另一方面Cortex的指令集不是固定周期的,特别从M3加入分支预测后,分支指令在Cortex-M不同型号上的结果都不相同。因此除了指令周期外,...
在上一篇文档中,我们向大家分享了如何使用IAR本身自带半主机(semihost)模式来调试程序,但是每10ms输出一个字符的速度实在让人难以接受。今天就向大家介绍一个输出速率更快的,使用同样方便的调试方法-SWO引脚的使用。
在Cortex-M3\M4系列MCU中,内核的调试组件都有一个仪器化跟踪单元(ITM)。ITM的一个主要的用途,就是支持调试信息的输出(例如,printf格式输出)。...
摘要:设计一款具有自主吸尘功能并且结构简单、成本低的小型家用吸尘机器人,实现了室内半自动或者全自动的清洁工作,从一定程度上代替人们做繁杂的家务。在硬件选型上,以ARM Cortex™⁃M3处理器为核心,设计了专门的电机驱动板,通过光电编码反馈电路实现行走模块的闭环控制。主要对传感器模块进行开发,通过合理布置传感器,采用多种传感器融合,使超声波和红外光电传感器协调工作实现对远近距离障碍物的精确检测...
WiFi物联网小车设计方案,采用电脑上位机软件通过无线WiFi 控制小车的运动,采集小车的信息。与传统的“智能小车”相比,主要特点在于使用32 位高性能单片机控制、互联网通信机制和电脑上位机软件控制。此方案融合了电脑软件、网络通信、图像处理、图形显示、运动控制、速度采集和温度采集等技术,具有“物联网”的相关特点。传统的小车控制大多使用红外通信,使用遥控器进行控制,不但受到距离的限制,...
一、uCOS II在ARM处理器上移植过程中的中断处理
uCOS II是一个源码公开、可移植、可固化、可剪裁和抢占式的实时多任务操作系统,其大部分源码是用ANSI C编写,与处理器硬件相关的部分使用汇编语言编写。总量约200行的汇编语言部分被压缩到最低限度,以便于移植到任何一种其它的CPU上。
uCOS II最多可支持56个任务,其内核为占先式,...
最近写一个程序,需要在用户模式下关中断,但ARM 7的体系结构决定了中断必须在特权模式下才可以更改,所以想到使用ARM的软中断来实现关中断和开中断。
使用软中断,首先要有硬件指令的支持,ARM有条指令是SWI。
SWI 指令的格式为:
SWI {条件} 24 位的立即数
SWI 指令用于产生软件中断,以便用户程序能调用操作系统的系统例程。操作系统在 SWI...
正如前文已经多次提到的,向量中断控制器,简称NVIC,是Cortex‐M3 不可分离的一部分,它与CM3 内核的逻辑紧密耦合,有一部分甚至水乳交融在一起。NVIC 与CM3 内核同声相应,同气相求,相辅相成,里应外合,共同完成对中断的响应。NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC 还包含了MPU的控制寄存器、SysTick...
要使用低成本的 32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。
1.ARM实现方法
ARM Cortex-M3是一种基于ARM V7架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线;...
一、Cortex M3的GPIO口特性
在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置。
Cortex M3结构框图
从图中可以看出,GPIO口都是接在APB总线上的,而且M3具有两个AHB到APB桥,GPIO则直接接在AHB矩阵上,这样可以减少CPU和DMA控制器之间的竞争冲入,获得较高性能。...
1、基本概念(CMSIS):
Cortex Micro-controller Software Interface Standard,微控制器软件接口标准。
2、CMSIS标准的文件结构:
a) core_cm.c (stdint.h)
b) system_.c (core_cm, system_)
c) startup_.s
其中core_cm....
keil MDK也是可以借助h-jtag进行单步调试,写出来与大家一起分享一下:
keil MDK编译器使用V4.01版本,下载地址:
http://www.embedinfo.com/down-list.asp?id=714 (需要注册一下)
h-jtag使用V1.0版本(请注意,一定要用V1.0或者以上版本才可以与mdk兼容),下载地址
http://www....
在项目处于调试期间,Fault处理程序可能只是一个断点指令,调试器遇到这个指令后停止程序的运行。默认情况下,由于非硬Fault被禁能,所有发生的非Fault都会上访成硬Fault,因此只要在硬Fault处理程序中设置一个断点,就可以观察所有Fault信息。当使用MDK-ARM的RealView编译器时,你可以用下面的C代码替代默认硬Fault处理程序,这段代码检测产品是否连接到一个调试器,...
1、摘要
Cortex-M内核实现了一个高效异常处理模块,可以捕获非法内存访问和数个程序错误条件。本应用笔记从程序员角度描述Cortex-M Fault异常,并且讲述在软件开发周期中的Fault用法。
2、简介
Cortex-M3(以下简称CM3)和Cortex-M4(以下简称CM4)内核的Fault异常可以捕获非法内存方法和非法编程行为。...
ARM Cortex-M3相比于ARM其他系列微控制器,具有以下优势或特点:
1、三级流水线+分支预测
ARM Cortex-M3与ARM7内核一样,采用适合于微控制器应用的三级流水线,但增加了分支预测功能。
现代处理器大多采用指令预取和流水线技术,以提高处理器的指令执行速度。流水线处理器在正常执行指令时,如果碰到分支(跳转)指令,由于指令执行的顺序可能会发生变化,...
一、什么是栈对齐?
栈的字节对齐,实际是指栈顶指针须是某字节的整数倍。因此下边对系统栈与MSP,任务栈与PSP,栈对齐与SP对齐 这三对概念不做区分。另外下文提到编译器的时候,实际上是对编译器汇编器连接器的统称。
之前对栈的8字节对齐理解的不透,就在网上查了好多有关栈字节对齐、还有一些ARM对齐伪指令的资料信息,又做了一些实验,把这些零碎的信息拼接在一起,...
CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种 CM3 单片机间的移植。
存储空间的一些位置用于调试组件等私有外设,这个地址段被称为“私有外设区”。私有外设区的组件包括:闪存地址重载及断点单元(FPB),数据观察点单元(DWT),仪器化跟踪宏单元(ITM),嵌入式跟踪宏单元(ETM),跟踪端口接口单元(TPIU), ROM 表。...
要使用低成本的32位处理器,开发人员面临两种选择,基于Cortex-M3内核或者ARM7TDMI内核的处理器。如何做出选择?选择标准又是什么?本文主要介绍了ARM Cortex-M3内核微控制器区别于ARM7的一些特点,帮助您快速选择。
1.ARM实现方法
ARM Cortex-M3是一种基于ARM7v架构的最新ARM嵌入式内核,它采用哈佛结构,使用分离的指令和数据总线(...
1、通用目的寄存器R0~R7
R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。
2、通用目的寄存器 R8-R12
R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32 位的thumb-2 指令则不受限制。它们也是 32 位字长...
最近在关注Cortex-M处理器,针对目前进入大众视野的M0、M3、M4做了如下简单对比,内容来自ARM等官网,这里仅仅是整理了下,看起来更直观点,
Cortex-M 系列针对成本和功耗敏感的 MCU 和终端应用(如智能测量、人机接口设备、汽车和工业控制系统、大型家用电器、消费性产品和医疗器械)的混合信号设备进行过优化。.
一、比较 Cortex-M 处理器...
一、NVIC概览 ——嵌套中断向量表控制器
NVIC 的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外, NVIC 还包含了 MPU、 SysTick 定时器以及调试控制相关的寄存器。
NVIC 共支持 1 至 240 个外部中断输入(通常外部中断写作 IRQs)。具体的数值由芯片厂商在设计芯片时决定。此外, NVIC 还支持一个“永垂不朽”的不可屏蔽中断...
一、工作模式
线程模式和手柄模式。
当处理器处在线程状态下时,既可以使用特权级,也可以使用用户级;另一方面, handler模式总是特权级的。在复位后,处理器进入线程模式+特权级。
二、异常和中断
Cortex-M3 支持大量异常,包括 16-4-1=11个系统异常,和最多 240 个外部中断——简称 IRQ。具体使用了这 240...
Cortex-M3的一些特性(一)
处理器状态的自动保存和恢复;
中断向量表读取与处理器状态保存并行处理;
支持尾链技术,当处理背靠背的中断时,不需在两个中断服务子程序之间进行入栈和出栈操作;
可动态重设中断优先级;
NVIC 和 Cortex-M3 处理器核紧密耦合,可尽早处理中断,尤其是晚到的高优先级中断;
Cortex-M3的一些特性(二)...
概览
在CM3 上编程,既可以使用C 也可以使用汇编。可能还有其它语言的编译器,但是大多数人还是会在C 与汇编的世界里游弋。C 与汇编都有尺短寸长,不能互相取代。使用C 能开发大型程序,而汇编则用于执行特种任务。
在使用不同的工具链和芯片时,有大量的用法和用量都随之不同。因此,本书不会深入讲解怎样精通一个具体的工具链,也不会大谈如何把程序烧到板子上。在后面的章节会提到一些入门知识,...
作者:dogsun88
一、进入异常之前处理器可能的状态有:
1、 handler
2、 线程,MSP
3、 线程,PSP
二、产生异常时:
1、 有一个压栈的过程,产生异常时使用PSP,就压入到PSP中,产生异常时使用MSP,就压入到MSP中
2、 会根据处理器的模式和使用的堆栈,设置LR的值(当然设置完的LR的值再压栈)
三、异常返回时...
关于Cortex-M3的中断优先级的描述
1、和之前的ARM7不同,Cortex-M3使用NVIC(嵌套向量中断管理器)来管理系统的中断。
2、每一个中断源的优先级由3个位来决定,这3个位就是中断优先级寄存器器里(PRIx)的INTn,这里的n 一般是A、B、C、D。
3、每个中断源的优先级由2部分组成,一部分表示中断组别,一部分表示同组的优先级编号。组别优先级高的中断源...
一、Cortex-M3环境介绍
Cortex-M3程序开发使用Keiluvision4软件,该软件是由KEIL(anARMcompany)公司开发的一个IDE开发环境,包括工程管理,链接设置等等。 Keiluvision4开发环境界面优美、功能强大、芯片种类多、仿真能力强,是众多工程师首选开发环境之一。
Keiluvision4开发环境中比较常用的菜单如下所示:
二、...
在项目开发的过程中,发现程序总是死在判断DMA一次传输是否完成这个标志位上。进一步回退分析,发现是在I2C读的过程中,有使用到DMA去取外部I2C设备的data。
但是data并没有读完,Data为32bits,DMA在读到18bits时,就出现读不到data bit了。导致I2C硬件模块不能进一步动作,SCK一直被拉低,没有clock输出,SDA也是如此。...
大部分采用Cortex-M3/M4 MCU的目标应用是便携式的,并且供电电源来自电池或能源收集系统,因此我们所探讨的大部分概念涉及如何减少系统整体能耗的技术。然而,在许多情况下,这些节能技术也是处理器应用设计的有力工具,可提供:
●更符合成本效益的解决方案
●更大的升级和采用新特性的设计冗余
●有助于产品在激烈竞争市场上脱颖而出的性能和特性
小知识:Cortex-...
作者:sunheshan
1、 异常
M3支持15个系统异常,240个外部异常IRQ,其中NMI,复位,hardfault三个异常的优先级固定不可更改且是负数,其余的都可编程。
M3的异常分为抢占优先级和子优先级。
2 、关于中断优先级
M3中,除了复位,NMI以及硬fault有固定的优先级,其他优先级都是可编程的。原则上,...
本文主要从M3和M4的MPU、DSP能力、debug调试和电源管理4个方面说明两者的区别。
1、内存保护单元MPU
与Cortex - M3的相同,MPU是一个Cortex - M4中用于内存保护的可选组件。处理器支持标准ARMv7内存保护系统结构模型。您可以使用在MPU执行 特权/访问 规则,或者独立的进程。这个MPU提供全面支持:
保护区
重叠保护区域,...
Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(...
第1章 介绍
一、ARM Cortex‐M3处理器初探
CM3处理器内核是单片机的中央处理单元(CPU)。完整的基于CM3的MCU还需要很多其它组件。在芯片制造商得到CM3处理器内核的使用授权后,它们就可以把CM3内核用在自己的硅片设计中,添加存储器,外设,I/O以及其它功能块。不同厂家设计出的单片机会有不同的配置,包括存储器容量、类型、外设等都各具特色。本书主讲处理器内核本身。...
;先在RAM 中分配系统使用的栈,RAM 的起始地址为0x2000_0000
;然后在RAM 中分配变量使用的堆
;然后在CODE 区(flash)分配中断向量表,flash 的起始地址为0x0800_0000,该中断向量表就从这个起始地址开始分配
;分配完成后,再定义和实现相应的中断函数,
;所有的中断函数全部带有[weak]特性,即弱定义,...
Cortex‐M3 是一个32 位处理器内核。内部的数据是32 位的,寄存器是32 位的,存储器接口也是32 位的。
CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行。这样一来数据访问不再占用指令总线,从而提升了性能。
内容提要
寄存器组
异常和中断
操作模式和特权极别
存储器映射
总线接口
指令集...
Cortex-M3是一个32位的核,在传统的单片机领域中,有一些不同于通用32位CPU应用的要求。在工控领域,用户要求具有更快的中断速度,Cortex-M3采用了Tail-Chaining中断技术,完全基于硬件进行中断处理,最多可减少12个时钟周期数,在实际应用中可减少70%中断。