嵌入式(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主要有 ...
随机推荐
- 类型构造器--高阶类型(构造器):Kind (type theory)--类型的元
元类型(0阶类型):nullary type, data types 一元类型(一阶类型):unary adj. [数] 一元的 二元类型: is the kind of a binary ty ...
- Pascal之Hello World
Pascal入门篇. 平台:Windows 7 ultimate x64 工具:Free Pascal 下载安装,界面如下: 右键属性,选择“437(OEM-美国)”,重新打开程序,乱码消失. ...
- node.js 练习2 (调用函数)
1. 调用本地 函数 (1) 创建 n2-1.js ,并输入代码 (2) 运行localhhost:8000 (3)在浏览器中 查看 (4)在cmd中查看 2.调用外部 函数 (1) 创建n2-2. ...
- 系统运行时间悬浮框(demo)
此项目基于.net framework 4.0 思路: 拖一个定时器控件,每秒执行一次,调用函数查询当前运行时间并更新到label控件. private void Form1_Load(object ...
- OpenMP常用函数
1.设置线程数目 定义如下: void omp_set_num_threads(int num_threads); 通过该函数来指定其后用于并行计算的线程数目,其中参数num_threads就是指定的 ...
- 字节流, FileOutputStream类,FileInputStream类,复制文件,字符流
字节输出流OutputStream OutputStream此抽象类,是表示输出字节流的所有类的超类.操作的数据都是字节 基本方法: 子类可继承调用以上方法 FileOutputStream类 构造方 ...
- 旧文备份:Python国际化支持
Python通过gettext模块支持国际化(i18n),可以实现程序的多语言界面的支持,下面是我的多语言支持实现: 在python安装目录下的./Tools/i18n/(windows下例 D:\P ...
- 第14章 启动文件详解—零死角玩转STM32-F429系列
第14章 启动文件详解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/firege ...
- print_Matrix(Python实现)
num = int(input("Please input a number:")) #矩阵最外层的值 n = num*2 Matrix = [([0] * n)for i in ...
- swiper轮播始终居中active图片
用的是vue-awesome-swiper 在vue项目中,参数方法与swiper一致.使用场景如下: 左侧小图一共八张,默认显示的是三张,始终保持activeimg在中间,提升用户体验度.swipe ...