STM32F05x training in Prague - DAY1

Similar documents
STM32 for sensorless vector control

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

Cortex-M3体系结构与接口编程

Andes Technology PPT Temp

FM1935X智能非接触读写器芯片

STM32 STM3232ARM Cortex-M3 Cortex-M3 STM32Thumb-2 STM32MCU Cortex-M3ARM MCU STM32ARM 32 ARMCortex-M3 32 STM32 Cortex-M3 ARM Cortex-M3 ARM ARM

1 CPU

Microsoft PowerPoint - Application_HardFault的诊断_V2.1.ppt [Compatibility Mode]

PowerPoint template - Guidelines

Cortex-M Series-Lesson1

P4V88+_BIOS_CN.p65

P4i45GL_GV-R50-CN.p65

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

USB解决方案.ppt

P4VM800_BIOS_CN.p65

P4Dual-915GL_BIOS_CN.p65

投影片 1

目 录

Ch03_嵌入式作業系統建置_01

ARM JTAG实时仿真器安装使用指南

Cortex-M for Beginners

mvc

Abstract arm linux tool-chain root NET-Start! 2

一个开放源码的嵌入式仿真环境 ― SkyEye

Microsoft Word - freeRTOS移椊.docx

Microsoft PowerPoint - Webinar-STM32F3系列新.pptx

标题

Microsoft PowerPoint - Sens-Tech WCNDT [兼容模式]

<4D F736F F D20C7B6C8EBCABDCAB5D1E9CAD2B7BDB0B82E646F63>

solutions guide

PROFIBUS3.doc

第七章 中断

Microsoft PowerPoint - CA_03 Chapter5 Part-II_multi _V1.ppt

A Preliminary Implementation of Linux Kernel Virus and Process Hiding

学习MSP430单片机推荐参考书

FM1935X智能非接触读写器芯片

ICD ICD ICD ICD ICD

EK-STM32F

Microsoft PowerPoint - C15_LECTURE_NOTE_11

MICROCHIP EVM Board : APP APP001 PICmicro Microchip APP001 40pin PDIP PICmicro Design Tips Character LCM Temperature Sensor Application I/O Pi


第4章 系统设置

Support All Industrial Ethernet Standards on Your Next "Drive" Design White Paper

EFM8BB Microcontroller Family Highest Performance Value MCUs

幻灯片 1

AL-M200 Series

T

OSI OSI 15% 20% OSI OSI ISO International Standard Organization 1984 OSI Open-data System Interface Reference Model OSI OSI OSI OSI ISO Prototype Prot

User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2

Microsoft PowerPoint - Aqua-Sim.pptx

untitled

Microsoft PowerPoint - XMC4000系列开发环境介绍(DAVE3).pptx

The Software of Things

多核心CPU成長日記.doc

untitled

PROTEUS VSM

第五章 重叠、流水和现代处理器技术

SDP

邏輯分析儀的概念與原理-展示版

ch08.PDF

PCM-3386用户手册.doc

,,, PCB, AR M VxWorks DSP,,,,,,,,,,, (CIP) /,,.:,2005 ISBN TP36 CIP (2005) : ( 10 ) : : (010 ) : (010)

<4D F736F F D20A8CFA952A6A12DAED1ADB1B8EAAEC62E646F63>

穨control.PDF

员工签到录

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

TX-NR3030_BAS_Cs_ indd

STM32 in arm seminar

Section1_16bit Arc.ppt

计 算 机 系 统 应 用 年 第 25 卷 第 1 期 的 编 程 语 言 Giotto [9] 编 写 控 制 程 序, 可 以 方 便 的 控 制 程 序 的 逻 辑 执 行 时 间, 从 而 使 得 任 务 时 间 的 依 赖 关 系

Content.indd

1 TPIS TPIS 2 2

解 除 身 份 验 证 机 密 性 Wep 等 一 些 加 密 机 制 MSDU 传 递 (MAC Service Data Unit) 负 责 将 数 据 传 送 给 实 际 的 接 收 端 传 输 功 率 控 制 (Transmit Power Control 简 称 TPC) 欧 洲 标 准

01CP-WX3030WNetc_CO_ENG.indd

e-learning: TX03 Series

外围器件-new.cdr

Microsoft PowerPoint - C15_LAB_MTS86_INTRO

Microsoft Word - 3D手册2.doc

1 MTK 2 MTK 3 MTK

PTS7_Manual.PDF

海 南 冯 琳 峰 海 南 省 锅 炉 压 力 容 器 与 特 种 设 备 检 验 所 海 南 省 定 安 县 白 蒙 路 47 号 信 XC 内 蒙 古 冯 磊 赤 峰 市 特 种 设 备 检 验 所 内 蒙 古 赤 峰 市 红 山 区 八 里 铺 油 库 路

第 15 章 程 式 編 写 語 言 15.1 程 式 編 写 語 言 的 角 色 程 式 編 寫 語 言 是 程 式 編 寫 員 與 電 腦 溝 通 的 界 面 語 法 是 一 組 規 則 讓 程 式 編 寫 員 將 字 詞 集 合 起 來 電 腦 是 處 理 位 元 和 字 節 的 機 器, 與

iml v C / 0W EVM - pplication Notes. IC Description The iml8683 is a Three Terminal Current Controller (TTCC) for regulating the current flowin

Transcription:

Cortex-M0 内核

Cortex-M 系列处理器 跨越传统单片机 8/16/32 位的界限 跨越所用应用的无缝架构 每个产品都针对超低功耗做了优化, 且易于使用 Cortex-M0 Cortex-M3 Cortex-M4 8/16-bit applications 16/32-bit applications 32-bit/DSC applications 程序和开发工具都兼容

Cortex-M 内核共同特性 针对微控制器应用 对功耗和硅片面积进一步优化 更适合低成本和低功耗的应用 发生中断和异常时自动保存现场 进出异常处理的软件开销很小 确定的指令执行时间 从确定性存储器运行代码时, 指令执行的时间总是相同

Cortex-M 各系列内核特性比较 Cortex-M0 Cortex-M3 Cortex-M4 Architecture Version V6M v7m v7me Instruction set architecture Thumb, Thumb-2 System Instructions Thumb + Thumb-2 Thumb + Thumb-2, DSP, SIMD, FP DMIPS/MHz 0.84 1.25 1.25 Bus interfaces 1 3 3 Integrated NVIC Yes Yes Yes Number interrupts 1-32 + NMI 1-240 + NMI 1-240 + NMI Interrupt priorities 4 8-256 8-256 Breakpoints, Watchpoints 4/2/0, 2/1/0 8/4/0, 2/1/0 8/4/0, 2/1/0 Memory Protection Unit (MPU) No Yes (Option) Yes (Option) Integrated trace option (ETM) No Yes (Option) Yes (Option) Fault Robust Interface No Yes (Option) No Single Cycle Multiply Yes (Option) Yes Yes Hardware Divide No Yes Yes WIC Support Yes Yes Yes Bit banding support No Yes Yes Single cycle DSP/SIMD No No Yes Floating point hardware No No Yes (Option) Bus protocol AHB Lite AHB Lite, APB AHB Lite, APB CMSIS Support Yes Yes Yes

Cortex-M 系列各处理器的指令兼容性

Cortex-M 系列的软件兼容性 (1) 向上路径 (M0->M3->M4) 的移植直接了当 Cortex-Mx 内核的指令集是 Cortex-My 内核 (x<y) 指令集的子集 软件可以直接移植过去, 性能则随着 MCU 时钟频率的提高以及冯诺依曼到哈佛架构的改进而得到提升 推荐对代码进行重新编译 从 M0 内核升级到 M3 内核 : 重新编译可以充分利用更高效的指令, 比如硬件除法 从 M0/M3 内核升级到带 FPU 的 M4 内核 : 某些代码需要使用 intrinsic 重新编写, 以利用 M4 内核高级的 DSP/SIMD 指令 对于 STM32 家族内的产品, 丰富的外设也相互兼容以保证移植的顺畅

Cortex-M 系列的软件兼容性 (2) 向下路径 (M3->M0) 的移植需要注意 M0 内核的 NVIC 和 SCB 寄存器只能字访问,M3 可支持字 半字 字节访问 M3 内核的某些 NVIC 和 SCB 寄存器在 M0 中没有 Interrupt Active Status Register Software Trigger Interrupt Register Vector Table Offset Register 某些 fault status registers 如果使用了汇编, 某些指令不再被 M0 支持 ; 对于 C 代码, 某些指令如硬件除法, 编译器会自动调用 C 库函数来处理除法操作 M0 不支持非对齐数据传输 M0 不再具有 M3 所支持的位带操作 使用用户线程模式和 MPU 特性的应用则不能移植到 M0 内核上

Cortex-M0 处理器的微架构 ARMv6M 架构 Thumb-2 指令 集成可配置的 NVIC 和 Cortex-M3 兼容 微处理器架构 带跳转预测的 3 级流水线 1 条 AHB-Lite 总线接口 可配置的超低功耗模式 深度睡眠 唤醒中断控制器 针对广泛应用的灵活配置 可配置的中断控制器 ( 带优先级的最多 32 个中断 ) 不带内存保护单元 MPU 可选的调试 & 跟踪功能

M0 低成本的 Cortex-M 处理器 面向 低端 应用, 替换 8/16 位 MCU 和 16 位处理器差不多的门数 针对高端或处理密集型的应用, 由于高代码密度所占用的存储空间小, 而使得 MCU 价格比大多数 8/16 位处理器更低 高性能, 只比标准 Cortex-M3 架构的性能低 25-30%

NORMALISED TO CORTEX-M3 Cortex-M0 与 Cortex-M3 相辅相成 Cortex-M3 作为旗舰 MCU 处理器提供高性能 优势在于高效 高性能 Cortex-M0 更适合简单控制和通信 优势在于低功耗和低成本 注意 : 这里的功耗仅针对处理器本身 ; 在整个系统级别上功耗相差无几 CORTEX-M0 ENERGY EFFICIENCY CORTEX-M0 PERFORMANCE Normalised Cortex-M3 performance and energy efficiency vs. Cortex-M0 for algorithm types. Energy efficiency based on Cortex-M3 and Cortex-M0 processor power estimates ONLY reffers to CPU consumption, similar energy at system level

Cortex-M0 指令特性概览 属于 V6M 架构, 包含 56 条指令 其中 46 条通常由编译器产生 剩余 10 条通常用作系统和特殊用途 1 条指令可以传输 8/16/32 位数据 没有硬件除法, 但是具有单周期乘法指令 没有 IT( 如果 - 就 - 否则 ) 块来避免小范围跳转 大多数指令都是 16 位以节约空间, 只有 6 条指令 32 位 Load/Store 指令是双周期 大多数运算指令是单周期 MULS 则是单周期的 32 位乘法指令 跳转指令根据是否带条件及是否带返回占用 1~4 个周期 10

M0 和 M3 在其他特性上的区别 用于调试的断点和观察点数目减少, 分别占 4 个和 2 个 为节约调试引脚数目, 只支持串行单线调试 (SWD), 但是使用同样的 20 引脚插座 只有一条 AHB-lite 总线接口连到存储器 总线矩阵等 M0 内核不支持特权 - 非特权模式 软件总是处于特权模式可以访问处理器所有资源 不支持位带操作 不支持非对齐数据传输 11

简化的寄存器集合 所有寄存器都是 32 位 通用寄存器 R0 ~ R12 堆栈寄存器 R13(SP) 线程模式下,CONTROL[1] 指明使用哪个堆栈 0, 主堆栈指针 (MSP) 上电处理器从地址 0 处装载 MSP 1, 处理器堆栈指针 (PSP) 链接寄存器 R14(LR) 保存函数以及异常的返回地址 复位时, 该值不确定 程序计数器 R15(PC) 复位时从地址 0x04 处装载 PC[0] 的值被装载到 EPSR 的 T 位, 必需是 1

简化的寄存器集合 (2) 程序状态寄存器 PSR, 可以分成 3 个寄存器 应用 PSR(APSR), 包含前一条指令执行后的条件标志 中断 PSR(IPSR), 包含当前 ISR 的异常编号 执行 PSR(EPSR), 包含 Thumb 状态位 T=0 时执行程序会产生 HardFault 使用 MSR 和 MRS 对它们进行访问 异常掩码寄存器 PRIMASK 使用 MSR MRS 或 CPS 指令改变寄存器的值, 以关闭或使能异常 PRIMASK=1, 可关闭所有优先级可配置的异常 ( 除 NMI 和 Hard Fault) CONTROL 寄存器 控制处理器处于线程模式是, 使用哪个堆栈 =0, 使用 MSP =1, 使用 PSP 处理器模式时, 固定使用 MSP 13

矢量表 矢量表固定位于地址 0, 处于代码区 ;ARMV6 没有 V7 中的 VTOR 矢量表包含的是异常处理或中断处理程序 ISR 的地址, 而非跳转指令 矢量表大小 ( 以 32 位字为单位 ) = IRQ 的个数 + 16 最小占用空间 ( 仅包含 1 个 IRQ 时 ) :17 个字 最大占用空间 ( 包含 32 个 IRQ 时 ) :48 个字 主堆栈指针的初值放在地址 0 系统复位时由硬件指定其初值 Address M0 M3 0x00 0x04 0x08 0x0C Initial Main SP Reset NMI Hard Fault 0x10 Reserved Memory Manage 0x14 Reserved Bus Fault 0x18 Reserved Usage Fault 0x1C-0x28 0x2C Reserved SVCall 0x30 Reserved Debug Monitor 0x34 0x38 0x3C Reserved PendSV Systick 40 IRQ0 IRQ0 IRQ1~IRQ31 IRQ1~IRQ239

异常模型 异常编号 IRQ 编号 异常类型优先级备注 1 - Reset -3, 最高异步 2-14 NMI -2 异步永远被使能 3-13 Hard Fault -1 同步 4-10 - - - - 11-5 SVCall 可配置 (1) 同步由 SVC 指令触发 12-13 - - - - 14-2 PendSV 15-1 SysTick 可配置 (1) Fault handler system handler 16 即以上 0 即以上 IRQ 可配置 (2) 异步 来自外设或软件请求的 IRQ; 都是异步于指令的执行 ISR (1)(2):System Handler 和 ISR 的优先级配置使用不同内核配置寄存器, 见下页 15

优先级配置 固定负优先级数值的异常优先级总是比可配置优先级异常的高 Reset NMI HardFault System Handler 优先级的设置 SVCall 的优先级 @SHPR2[31:24] PendSV 的优先级 @SHPR3[23:16] 处理器只实现了高 2 位 SysTick 的优先级 @SHPR3[31:24] IRQ 中断优先级的设置 @IPRx x=0~7 每个寄存器设置 4 个 IRQ 的优先级 每个 IRQ 优先级占 8 个位, 但处理器只实现了高 2 位 优先级掩码寄存器 PRIMASK 关闭所有优先级可配置的异常 / 中断 16

不同优先级中断的响应 多个挂起的中断具有相同优先级 处理器从异常编号最小的开始执行 处理器正在执行某优先级中断, 另一个更高级优先级的中断到来 低优先级中断的执行被抢占 中断嵌套 处理器正在执行某优先级中断, 另一个优先级相同的中断到来 正在被处理的中断不受影响 新来的中断被挂起 17

异常和中断处理特性 低延迟的中断处理 多数据的装载 / 存储 (LDM/STM) 令可被中断 处理器自动保存和恢复现场 中断处理程序可以全部使用 C 语言编写 内核集成先进的嵌入式矢量中断控制器 (NVIC) 支持 32 个可动态配置优先级的中断 4 个中断优先级 支持以下高级特性 挂起中断的咬尾操作 晚到中断的及时处理 18

中断进出时的处理 进入中断 处理器自动保存现场到堆栈里 {PC, xpsr, R0-R3, R12, LR} 一旦入栈结束,ISR 便可开始执行 晚到的中断会重新取 ISR 地址, 但无需再次保存现场 退出中断 中断前的现场被自动从堆栈中恢复 一旦出栈完成, 继续执行被中断打断的指令 出栈的过程也可被打断, 使得随时可以响应新的中断, 而不再进行现场保存 19

处理背靠背中断时的咬尾示意图 Highest IRQ1 IRQ2 42 CYCLES ARM7 Interrupt handling in assembler code PUSH ISR 1 POP PUSH ISR 2 POP 26 16 26 16 Tail-chaining Cortex-M0 Interrupt handling in HW PUSH ISR 1 16 ISR 2 POP 16 ARM7 26 cycles from IRQ1 to ISR1 entered Up to 42 cycles if LSM 42 cycles from ISR1 exit to ISR2 entry 16 cycles to return from ISR2 Cortex-M0 16 cycles from IRQ1 to ISR1 entered? cycles from ISR1 exit to ISR2 entry 16 cycles to return from ISR2

对晚到中断处理的示意图 IRQ1 Highest IRQ2 ARM7 PUSH PUSH ISR 1 POP ISR 2 POP 26 26 16 16 Cortex-M0 PUSH ISR 1 ISR 2 POP? Tail- Chaining 16 ARM7 26 cycles to ISR2 entered Immediately pre-empted by IRQ1 and takes a further 26 cycles to enter ISR 1. ISR 1 completes and then takes 16 cycles to return to ISR 2. Cortex-M0 Stack push to ISR 2 is interrupted Stacking continues but new vector address is fetched in parallel? cycles from late-arrival to ISR1 entry. Tail-chain into ISR 2

STM32F0x5 的中断源映射 (1) Position Acronym Description 0 WWDG Window watchdog interrupt 1 PVD Power voltage detector interrupt (EXTI line 16) 2 RTC RTC interrupts (combined EXTI lines 17, 19 & 20) 3 FLASH Flash global interrupt 4 RCC RCC global interrupt 5 EXTI0_1 EXTI line 0 & 1 interrupt 6 EXTI2_3 EXTI line 2 & 3 interrupt 7 EXTI4_15 EXTI line 4 to 15 interrupt 8 RI Routing Interface (Touch-Sense controller) interrupt 9 DMA_Channel1 DMA channel 1 interrupt 10 DMA_Channel2_3 DMA channel 2 & 3 interrupts 11 DMA_Channel4_5 DMA channel 4 & 5 interrupts 12 ADC_COMP ADC and COMP interrupts (ADC combined with EXTI 21 & 22) 13 TIM1_BRK_UP_TRG_COM TIM1 break, update, trigger and commutation interrupts 14 TIM1_CC TIM1 Capture Compare interrupt 15 TIM2 TIM2 global interrupt 16 TIM3 TIM3 global interrupt

STM32F0x5 的中断源映射 (2) Position Acronym Description 17 TIM6_DAC TIM6 global interrupt 18 ----------- >> Reserved for future extension 19 TIM14 TIM14 global interrupt 20 TIM15 TIM15 global interrupt 21 TIM16 TIM16 global interrupt 22 TIM17 TIM17 global interrupt 23 I2C1 I2C1 global interrupt (combined with EXTI 23) 24 I2C2 I2C2 global interrupt 25 SPI1 SPI1 global interrupt 26 SPI2 SPI2 global interrupt 27 USART1 USART1 global interrupt (combined with EXTI 24) 28 USART2 USART2 global interrupt (combined with EXTI 25) 29 ----------- >> Reserved for future extension 30 CEC CEC global interrupt (combined with EXTI 26) 31 ----------- >> Reserved for future extension

系统滴答定时器 (SysTick) 和 Cortex-M3 的内核滴答定时器一样 24 位自装载向下计数器, 计数到 0 自动回卷并产生中断 内核调试暂停时, 计数器也相应停止 2 个时钟源可供配置选择 寄存器组 SYST_CSR, 选择时钟源 使能中断和计数器 SYST_CVR, 计数器当前值, 计数到 0 时置位 COUNTFLAG 并重装载 SYST_RVR 到 CVR 中 ; 复位值未知 SYST_RVR, 计数器重装载值 SYST_CALIB, 产生 10ms 定时间隔的预装载值 常见用途 适用于 RTOS 或其他调度任务 简单定时器, 软件用来做定时的延迟