<strong>data</strong>
固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码也最小。
<strong>idata</strong>
固定指前面0x00-0xff的256个RAM,其中前128和data的128完全相同,只是因为访问的方式不同。idata是用类似C中的指针方式访问的。汇编中的语句为:mox ACC,@Rx.(不重要的补充:c中idata做指针式的访问效果很好)
<strong>xdata</strong>
作为嵌入式软件工程师认为世界上最可悲的事情是你愉快的敲完代码等待验证,而编译器却提示你No space or unable to allocate space…,顿时心中一万只草泥马在奔腾有没有。好吧没有办法,由于成本和项目需求的限制,不得不选择小Flash的MCU,这就导致了我们为了缩减Flash的空间打开各种优化、一字节一字节的裁剪、各种map文件对比分析,只为省出一点空间,接下来总结一下遇到这种问题时的优化步骤,当然这是在程序设计后期发现Flash的限制从而进行优化,如果你有一个好的编程习惯,应该从构建初期就应该注意资源受限的问题,合理安排驱动函数实现方式、变量类型的定义、标准库的使用等等。So what should I do ?
资源受限MCU Flash空间占用优化步骤:
<br>MM32F103使用高性能的ARM® Cortex®-M3 32位的RISC内核,最高工作频率为96MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、2个12位的DAC、2个电压比较器、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个UART接口、一个 USB接口和一个CAN接口。</br>
MM32F103产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
<br>MM32F103使用高性能的ARM® Cortex®-M3 32位的RISC内核,最高工作频率为96MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、2个12位的DAC、2个电压比较器、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C接口和SPI接口、3个UART接口、一个 USB接口和一个CAN接口。</br>
MM32F103产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
<br>本手册介绍了32位基于ARM Cortex M3微控制器MM32F103xx的固件函数库。</br>
该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface应用编程界面)驱动,API对该驱动程序的结构,函数和参数名称都进行了标准化。
本文将以目前流行的ARM嵌入式微处理器、嵌入式Linux作为主要内容,从嵌入式系统基本原理、系统设计,到抽象出研究嵌入式系统的技术途径进行了较深入阐述。其内容包括了嵌入式处理器原理、汇编语言、系统设计与软件开发、计算机接口技术与应用等方面的知识,并通过实例讲解嵌入式系统设计过程和原理。
<strong>章节目录</strong>
第1章:嵌入式系统的基础知识
第2章:ARM处理器技术
第3章:ARM指令集Thumb指令集
第4章:ARM汇编程序设计技术
第5章:介绍实用的外围接口设计与开发技术
第6章:介绍嵌入式系统的设计流程和设计方法
第7章:介绍基于S3C44B0X的嵌入式实验开发系统
本文将详细介绍ARM 指令集,其中包括:寄存器和处理器模式(26-bit 体系)、寄存器和处理器模式(32-bit 体系)、程序状态寄存器和操纵它的指令、寄存器装载和存储指令、算术和逻辑指令、移位操作、乘法指令、比较指令、分支指令、条件执行、软件中断指令、APCS (ARM 过程调用标准)、编写安全的 32-bit 代码的基本规则、IEEE 浮点指令、汇编器伪指令、指令快速查找、ARM 指令格式,等等。
<strong>寄存器和处理器模式</strong>
ARM 处理器有二十七个寄存器,其中一些是在一定条件下使用的,所以一次只能使用十六个······
Cortex‐M3 是一个32 位处理器内核。内部的数据是32 位的,寄存器是32 位的,存储器接口也是32 位的。
CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行。这样一来数据访问不再占用指令总线,从而提升了性能。
<strong> 内容提要</strong>
<li>寄存器组</li>
<li>异常和中断</li>
<li>操作模式和特权极别</li>
<li>存储器映射</li>
<li>总线接口</li>
<li>指令集</li>
本文将详细为大家介绍并讲解ARM的指令集。
比如:
ADC :带进位的加法
(Addition with Carry)
ADC{条件}{S} <dest>, <op 1>,<op 2>
dest = op_1 + op_2 + carry
ADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。
128 位结果:寄存器 0、1、2、和 3
第一个 128 位数: 寄存器 4、5、6、和 7
第二个 128 位:寄存器 8、9、10、和 11。
<strong>Thumb-2指令集</strong>
同时支持16位和32位指令系统
Bit[15:11]
0b11101
0b11110
0b11111 紧邻的两个半字构成一条32位指令
其他:皆为16位指令
<strong>Thumb指令</strong>
Thumb指令集可以看作是ARM指令压缩形式的子集,它是为减小代码量而提出的,具有16位的代码密度。Thumb指令体系不完整,只支持通用功能。必要时仍需要使用ARM指令,如进入异常时。
说明:Thumb指令的格式与使用方式与ARM指令集类似,而且使用并不是很频繁,建议这部分内容选修。
<strong>简单的Thumb程序</strong>
Cortex-M3是一个32位处理器内核。内部的数据路径是32位的,寄存器是32位的,存储器接口也是32位的。CM3采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性,CM3内部含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两条总线,可寻址空间就变成8GB了。
比较复杂的应用可能需要更多的存储系统功能,为此CM3提供一个可选的MPU,而且在需要的情况下也可以使用外部的cache。另外在CM3中,Both小端模式和大端模式都是支持的。
<strong><font size="5">概述</font></strong>
MM32F103 使用高性能的 ARM® Cortex®-M3 32 位的 RISC 内核,最高工作频率 96MHz,内置高速存储器,丰富的增强 I/O 端口和联接到两条 APB 总线的外设。所有型号的器件都包含 2 个 12 位的 ADC、2个 12 位的 DAC、2 个电压比较器、3 个通用 16 位定时器和 1 个 PWM 高级定时器,还包含标准和先进的通信接口:2 个 I2C 接口和 SPI 接口、3 个 UART 接口、一个 USB 接口和一个 CAN 接口。
概述
MM32F031 使用高性能的 ARM® Cortex®-M0 32 位的 RISC 内核,最高工作频率 48MHz,内置高速存储器,丰富的增强 I/O 端口和联接到两条 APB 总线的外设。所有型号的器件都包含 1 个 12 位的 ADC、5 个通用 16 位定时器、1 个高级 PWM 定时器,还包含标准和先进的通信接口:1 个 I2C 接口和 SPI 接口、1 个UART 接口。
MM32F031 产品供电电压为 2.5V 至 5.5V,包含-40°C 至+85°C 温度范围和 -40°C 至+105°C 的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
本手册介绍了 32 位基于 ARM Cortex M0 微控制器 MM32F031xx 的固件函数库。
该函数库是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。
该函数库还包括每一个外设的驱动描述和应用实例。通过使用本固件函数库,无需深入掌握细节,用户也可以轻松应用每一个外设。因此,使用本固态函数库可以大大减少用户的程序编写时间,进而降低开发成本。
每个外设驱动都由一组函数组成,这组函数覆盖了该外设所有功能。每个器件的开发都由一个通用API(applicationprogramminginterface 应用编程界面)驱动,API 对该驱动程序的结构,函数和参数名称都进行了标准化。
MM32F103 使用高性能的 ARM® Cortex®-M3 32 位的 RISC 内核,最高工作频率 96MHz,内置高速存储器,丰富的增强 I/O 端口和联接到两条 APB 总线的外设。所有型号的器件都包含 2 个 12 位的 ADC、2个 12 位的 DAC、2 个电压比较器、3 个通用 16 位定时器和 1 个 PWM 高级定时器,还包含标准和先进的通信接口:2 个 I2C 接口和 SPI 接口、3 个 UART 接口、一个 USB 接口和一个 CAN 接口。
MM32F103 产品供电电压为 2.5V 至 5.5V,包含-40°C 至+85°C 温度范围和 -40°C 至+105°C 的
扩展温度范围。一系列的省电模式保证低功耗应用的要求。
MM32F031使用高性能的ARM® Cortex®-M0 32位的RISC内核,最高工作频率为48MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含1个12位的ADC、5个通用16位定时器、1个高级PWM定时器,还包含标准和先进的通信接口:1个I2C接口和SPI接口、1个UART接口。
MM32F031产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
MM32F031产品提供包括32脚与48脚共2种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
MM32F031使用高性能的ARM® Cortex®-M0 32位的RISC内核,最高工作频率为48MHz,内置高速存储器,丰富的增强I/O端口和联接到两条APB总线的外设。所有型号的器件都包含1个12位的ADC、5个通用16位定时器、1个高级PWM定时器,还包含标准和先进的通信接口:1个I2C接口和SPI接口、1个UART接口。
MM32F031产品供电电压为2.5V至5.5V,包含-40°C至+85°C温度范围和-40°C至+105°C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。
MM32F031产品提供包括32脚与48脚共2种不同封装形式;根据不同的封装形式,器件中的外设配置不尽相同。下面给出了该系列产品中所有外设的基本介绍。
这些丰富的外设配置,使得MM32F031产品微控制器适合于多种应用场合:
本文介绍ARM的9种寻址方式,基础知识,需要牢固掌握,快来看一下吧。
<strong> ARM的9种寻址方式</strong>
<strong> 1)立即寻址</strong>
操作数是立即数,以“#”为前缀,表示 16 进制数值时以“0x”表示。
例:
MOV R0,#0xFF00 ;0xFF00 -> R0
SUBS R0,R0,#1 ;R0 – 1 -> R0
<strong> 2)寄存器寻址</strong>
操作数的值在寄存器中,指令执行时直接取出寄存器值操作。
例:
MOV R1,R2 ;R2 -> R1
几十年前,8位单片机(MCU)席卷业界,但现在8位MCU有让位32位架构的趋势,有行业分析师指出,32位和8位单片机还在在不断成长。不过,最早使用MCU的人对BASIC以及Microchip PIC还念念不忘,不过以最新Arduino Uno来说,这就是一个从8位到32位架构转变的典型案例。即使你现在的应用程序只需要一个8位架构,但因为所谓的“智能”设备需求增长过些日子8位就不够用了,值得庆幸的是,现在有大量开源开发工具可以让那些渴望“冒险”的激进工程师使用。





