嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(上)
随着课内的学习,我想把每节课所学记录下来,以作查阅、以饲读者。由于我所上的是英文班课程,因此我将把关键术语的英文给出,甚至有些内容直接使用英文。
本次所介绍内容是关于Cortex-M3的基础内容。
------------------------------------------------------------------------------------------------------------------------------------------------
1、什么是嵌入式系统(Embedded System)
完全嵌入受控器件内部,为特定应用而设计的专用计算机系统,而平时咱们所用的个人计算机则属于通用计算机系统。
它只能实现一件或少量几件功能,同时还有很多限制,例如:电力较低,内存较小等。
2、微处理器(microprocessor,μP)和微控制器(microcontroller,μC)的区别
这个问题比较复杂,我只做简单解释,这里推荐百度知道上一个人的回答,比较详细准确地讲解了这两者的区别。
微处理器仅仅是一个单芯片CPU;而微控制器则是一块集成电路,上面集成了CPU与很多外围设备,例如:Memory、IO、Bus、Interrupt。
微处理器就是我们个人计算机中所说的CPU,而微控制器便是我们平时所说的“单片机”,所有智能设备上面都有单片机的存在。
3、嵌入式系统、通用计算机系统与微处理器、微控制器的关系
从上面的定义很容易看出,嵌入式系统必然包含微控制器,微控制器是嵌入式系统的核心;而通用计算机系统则必然包含微处理器,作为其CPU存在。
4、冯·诺依曼架构与哈佛架构
计算机的体系结构是指:其内部CPU、Memory、IO、Bus之类都是如何设计的。
而这两种架构,则是对计算机体系结构的一种分类——针对存储器所作的分类。
冯·诺依曼架构(又名普林斯顿结构):指令和数据存在一个存储器中。这种架构的中央处理器(CPU)或者微控制器有8086、ARM7、MIPS等。
哈佛架构:有两个存储器,指令存储器专门存指令, 数据存储器专门存数据。这种架构执行效率很高,非常方便流水线(Pipeline)的实现,目前使用这种架构的中央处理器或者微控制器有51单片机以及ARM9、ARM10、ARM11等。
5、什么是Cortex-M3
这是ARM公司所开发的一种计算机架构。ARM公司设计、维护这种架构,向其它公司出售版权(IPL,Intellectual Property Licensing),例如苹果。到2009年为之,ARM处理器已经占有了嵌入式32位RISC处理器大约90%的市场。而当ARM处理器开发至版本ARM7时,分为了三个方向:
| Application Cortex-A | 用于高性能计算 |
| Read-Time Cortex-R | 用于实时处理,例如数字信号处理 |
| Microcontroller Cortex-M | 用于嵌入式微处理器 |
而我这门课所学的Cortex-M3也就是ARM架构的嵌入式版本之一,不知道这样说,够不够清楚?
6、体系架构简介
图暂时还没有搞到,先仅给出文字说明。
核心是CPU,加上一个处理Interrupt的模块和一个处理Debug的模块。而外围,Interrupt使用前者处理,Debug则通过外围一个Debug模块与一个Debug接口配合核心的Debug模块协同工作。另外,CPU和Memory有两条总线(Bus),一个是Data Bus,另一个则是Inst Bus(Inst是Instruction的缩写,即指令)。Memory分为三部分:Code Memory、Memory System and Peripherals、Private Peripherals;而Bus则被一个Memory Protection Unit所监控,防止CPU访问没有权限的内存空间。
这架构听起来很乱,或许以后加上图会清晰些,但真正理解还是要在学完Cortex-M3之后才可以。
7、Cortex-M3概述
| 32-bit microprocessor | 32-bit data path, 32-bit registers, 32-bit memory interfaces |
| Harvard architecture | separate instruction bus and data bus, which allows instructions and data accesses to take place at the same time |
| 4GB Memory space | |
| Registers | Registers (R0 to R15) and special registers |
| Two operation modes | thread mode and handler mode |
| Two access levels | privileged level and user level |
| Interrupts and Exceptions | a built-in Nested Vectored Interrupt Controller, supporting 11 system exceptions plus 240 external IRQs |
| MPU(Memory Protection Unit) | an optional Memory Protection Unit allows access rules to be set up for privileged access and user program access |
| The Instruction Set | Thumb-2 instruction set allows 32-bit instructions and 16-bit instructions to be used together; no ARM instructions allowed |
| Fixed internal debugging components | provide debugging operation supports and features such as breakpoints, single step |
8、Cortex-M3优点
| Greater performance efficiency | allowing more work to be done without increasing the frequency or power requirements |
| Low power consumption | enabling longer battery life |
| Enhanced determinism | guaranteeing that critical tasks and interrupts are serviced in a known number of cycles |
| Improved code density | ensuring that code fits in even the smallest memory |
| Ease of use | providing easier programmability and debugging |
| Lower-cost solutions | reducing 32-bit-based system costs at less than US$1 for the first time |
| Wide choice of development tools | from low-cost or free compilers to full-featured development suites |
9、Cortex-M3 Processors和Cortex-M3-Based MCUs的区别

前者是ARM公司开发的,可以简单看成两个模块:Cortex-M3 Core、Debug System。
而把前者通过Internal Bus与外围设备(Peripherals、Memory、Clock and Reset、I/O)相连,就组成了一个MCU(微控制器),这个集成电路是个Cortex-M3 Chip,是别的公司使用ARM架构开发的Cortex-M3-Based MCU。
10、指令集简介
ARM架构经过多年的发展,有三个指令集,分别是ARM instructions、Thumb instructions和Thumb-2 instructions。其中ARM set用于高性能计算,都是32位的指令;Thumb set则都是16位指令,性能较差,但更密级(节省空间);而Thumb-2 set则是32位指令,具有同ARM set般的高性能。
而Cortex-M3则包含所有的Thumb指令和部分的Thumb-2指令,因此指令便有16位和32位两种。
11、操作模式——两种工作阶段(processor mode)和两种权限级别(access level)简介

这里只对几个术语做出解释。
Cortex-M3中有两种工作阶段:Thread和Handler。前者是正常运行代码的阶段,而后者则是中断。
Cortex-M3中有两种权限级别(privilege level):Privilege和User。前者是默认的,相当用root,拥有所有权限;后者则对一些特殊内存空间没有读写权。
图中Exception是异常的意思,表示各种中断(Interrupt);Control Register则是一个寄存器,专门用来修改权限级别的。
嵌入式(Embedded System)笔记 —— Cortex-M3 Introduction and Basics(上)的更多相关文章
- ARM 架构、ARM7、ARM9、STM32、Cortex M3 M4 、51、AVR 之间有什么区别和联系?(转载自知乎)
ARM架构: 由英国ARM公司设计的一系列32位的RISC微处理器架构总称,现有ARMv1~ARMv8种类. ARM7: 一类采用ARMv3或ARMv4架构的,使用冯诺依曼结构的内核. ...
- ARM Cortex M3(V7-M架构)硬件启动程序 一
Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表 ...
- STM32学习之路入门篇之指令集及cortex——m3的存储系统
STM32学习之路入门篇之指令集及cortex——m3的存储系统 一.汇编语言基础 一).汇编语言:基本语法 1.汇编指令最典型的书写模式: 标号 操作码 操作数1, 操作数2,... ...
- Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
- 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...
- 【freertos】002-posix模拟器设计与cortex m3异常处理
目录 前言 posix 标准接口层设计 模拟器的系统心跳 模拟器的task底层实质 模拟器的任务切换原理 cortex M3/M4异常处理 双堆栈指针 双操作模式 栈帧 EXC_RETURN 前言 如 ...
- Embedded System.
Soc ( System on Chip) Soc is an integrated circuit (IC) that integrates all components of a computer ...
- ARM Cortex M3系列GPIO口介绍(工作方式探讨)
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
- 嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度
嵌入式OS入门笔记-以RTX为案例:六.RTX的任务调度 上一篇笔记介绍了一些绕开排程器(或调度程序,scheduler)来进行时间管理的一些小方法.这一篇详细介绍RTX的任务调度原理. RTX主要有 ...
随机推荐
- [原创][Windows] Win7安装visual c++ 2015 redistributable x64失败
在win7中安装visual c++ 2015 redistributable x64 时会卡住,原因是visual c++ 2015 redistributable x64 需要KB2999226, ...
- VScode中的golang代码规范太严格,怎么处理。
在vscode的配置文件settings.json中,加入下面的配置,一般设置为0.8即可. "go.lintFlags": [ "-min_confidence=.8& ...
- JS将unicode码转中文方法
原理,将unicode的 \u 先转为 %u,然后使用unescape方法转换为中文. ? 1 2 3 4 <script type="text/javascript"> ...
- npy数据的保存与读取
保存 利用这种方法,保存文件的后缀名字一定会被置为.npy x = numpy.save("data_x.npy",x) 读取 data = numpy.load("da ...
- Linux(二) - Unix&Linux 基本概念
主机 = 内核 + 实用工具 内核(kernel) 当计算机启动时,计算机要经历一系列动作,这些动作构成了引导过程.引导过程的最后一个动作是启动一个非常复杂的程序,该程序就被称为内核(Kernel) ...
- Redis 命令学习
每天不学习点新的东西,感觉就有点会被社会淘汰掉了.也许现在学习的知识会很快忘记,下次学习用到这个知识点的时候,再回来翻记录的笔记,我想这样会比从头再学,效率会高点吧. 闲话不多聊,回归正题.今天学习r ...
- B4260 Codechef REBXOR
真是6块钱cpu(笑 爆炸入口 踹树练习(汗 对于二进制异或和弹性,我们可以贪心的来做. 瓶颈在于快速贪心. 我们可以维护一个trie树,储存异或前缀和.每次在trie树上贪心的跑. 正向and反向跑 ...
- data-ng-app 指令
1.data-ng-app指令定义了一个AngularJS应用程序的根元素. 2.data-ng-app会在页面加载完毕后自动进行初始化应用程序. 3.data-ng-app可以通过一个值连接到代码模 ...
- Oracle必备知识.
一.基本数据类型 1.字符数据类型 char varchar2 long 三者区别: I.char固定长度字符串,存储字母数字值,列长度可以是 1 到 2000 个字节. II.varc ...
- ES6初识-函数扩展
默认值 function test(x,y='world'){ console.log('默认值'); } function test2(...arg){ for(let v of arg){ con ...