嵌入式开发的基础知识大揭秘
嵌入式开发的基础知识 大揭秘
// / 插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以 哦 ~ 点我头像黑色字体加我地球呺也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比 赛 ///
搜索了一些有关于对嵌入式开发的一些基础知识,分享给大家!
1.AR M 中一些常见英文缩写解释
MS B :最高有效位;
LS B :最低有效位;
AH B :先进的高性能总线;
VP B :连接片内外设功能 的 VLS I 外设总线;
EM C :外部存储器控制器;
MA M :存储器加速模块;
VI C :向量中断控制器;
SP I :全双工串行接口;
CA N :控制器局域网,一种串行通讯协议;
PW M :脉宽调制器;
ET M :嵌入式跟踪宏;
CPS R :当前程序状态寄存器;
SPS R :程序保护状态寄存器;
2.MAM 使用注意事项
答:当改 变 MAM 定时值时,必须先通过 向 MAMCR 写 入 0 来关 闭 MA M ,然后将新值写 入 MAMTI M 。最后,将需要的操作模式的对应值不能中 断 FI Q 。为了 使 FIQ 更快,所以这种模式有更多的影子寄存器 。 FIQ 不能调 用 SW I (软件中断) 。 FIQ 还必须禁用中断。如果一 个 FIQ 例程必须重新启用中断,则它太慢了,并应该 是 IRQ 而不 是 FI Q 。
6.AR M 处理器对异常中断的响应过程
答 : AR M 处理器对异常中断的响应过程如下所述:
保存处理器当前状态、中断屏蔽位以及各条件标志位;
设置当前程序状态寄存 器 CPS R 中的相应位;
将寄存 器 lr_mod e 设置成返回地址;
将程序计数器 值 P C ,设置成该异常中断的中断向量地址,跳转到相应异常中断处执行。
7.AR M 指令 与 Thum b 指令的区别
答: 在 AR M 体系结构中 , AR M 指令集中的指令 是 3 2 位的指令,其执行效率很高。对于存储系统数据总线 为 1 6 位的应用系统 , AR M 体系提供 了 Thum b 指令集 。 Thum b 指令集是 对 AR M 指令集的一个子集重新编码得到的,指令长度 为 1 6 位。通常在处理器执 行 AR M 程序时,称处理器处 于 AR M 状态;当处理器执 行 Thum b 程序时,称处理器处 于 Thum b 状态 。 Thum b 指令集并没有改 变 AR M 体系地层的程序设计模型,只是在该模型上加上了一些限制条件 。 Thum b 指令集中的数据处理指令的操作数仍然 为 3 2 位,指令寻址地址也 是 3 2 位的。
8 . 什么 是 ATPCS
答:为了使单独编译 的 C 语言程序和汇编程序之间能够相互调用,必须为子程序之间的调用规定一定的规则 。 ATPC S 就 是 AR M 程序 和 Thum b 程序中子程序调用的基本规则。这些规则包括寄存器使用规则,数据栈的使用规则,参数的传递规则等。
9.AR M 程序 和 Thum b 程序混合使用的场合
答:通常 , Thum b 程序 比 AR M 程序更加紧凑,而且对于内存 为 8 位 或 1 6 位的系统,使 用 Thum b 程序效率更高。但是,在下面一些场合下,程序必须运行 在 AR M 状态,这时就需要混合使 用 AR M 和 Thum b 程序。
强调速度的场合,应该使 用 AR M 程序;
有些功能只能 由 AR M 程序完成。如:使用或者禁止异常中断;
当处理器进入异常中断处理程序时,程序状态切换 到 AR M 状态,即在异常中断处理程序入口的一些指令 是 AR M 指令,然后根据需要程序可以切换 到 Thum b 状态,在异常中断程序返回前,程序再切换 到 AR M 状态。
AR M 处理器总是 从 AR M 状态开始执行。因而,如果要在调试器中运 行 Thum b 程序,必须为 该 Thum b 程序添加一 个 AR M 程序头,然后再切换 到 Thum b 状态,执 行 Thum b 程序。
10.AR M 处理器运行模式
答 : AR M 微处理器支 持 7 种运行模式,分别为:
用户模式 ( us r ) : AR M 处理器正常的程序执行状态;
快速中断模式 ( fi q ):用于高速数据传输或通道管理;
外部中断模式 ( ir q ):用于通用的中断处理;
管理模式 ( sv c ):操作系统使用的保护模式;
数据访问终止模式 ( ab t ):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护;
系统模式 ( sy s ):运行具有特权的操作系统任务;
未定义指令中止模式 ( un d ):当未定义指令执行时进入该模式,可用于支持硬件协处理器的软件仿真。
11.AR M 体系结构所支持的异常类型
答 : AR M 体系结构所支持的异常和具体含义如下(圈里面的数字表示优先级):
复 位 ① :当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处执行(异常向量 : 0x0000,000 0 );
未定义指 令 ⑥ : 当 AR M 处理器或协处理器遇到不能处理的指令时,产生为定义异常。可使用该异常机制进行软件仿真(异常向量 : 0x0000,000 4 );
软件中 断 ⑥ :有执 行 SW I 指令产生,可用于用户模式下程序调用特权操作指令。可使用该异常机制实现系统功能调用(异常向量 : 0x0000,000 8 );
指令预取中 止 ⑤ :若处理器的预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出中止信号,当预取指令被执行时,才会产生指令预取中止异常(异常向量 : 0x0000,000 C );
数据中 止 ② :若处理器数据访问的指令的地址不存在,或该地址不允许当前指令访问,产生数据中止异常(异常向量 : 0x0000,001 0 );
IR Q ④ (外部中断请求):当处理器的外部中断请求引脚有效, 且 CPS R 中 的 I 位 为 0 时,产 生 IR Q 异常。系统的外设可以该异常请求中断服务(异常向量 : 0x0000,001 8 );
FI Q ③ (快速中断请求):当处理器的快速中断请求引脚有效, 且 CPS R 中 的 F 位 为 0 时,产 生 FI Q 异常(异常向量 : 0x0000,001 C )。
其中异常向 量 0x0000,001 4 为保留的异常向量。
12.AR M 体系结构的存储器格式
答 : AR M 体系结构的存储器格式有如下两种:
大端格式:字数据的高字节存储在低地址中,字数据的低字节存放在高地址中;
小端格式:与大端存储格式相反,高地址存放数据的高字节,低地址存放数据的低字节。
13.AR M 寄存器总结:
AR M 有 1 6 个 3 2 位的寄存器 ( r 0 到 r1 5 )。
r1 5 充当程序寄存 器 P C , r1 4 ( link registe r )存储子程序的返回地址 , r1 3 存储的是堆栈地址。
AR M 有一个当前程序状态寄存器 : CPS R 。
一些寄存器 ( r1 3 , r1 4 )在异常发生时会产生新 的 instance s ,比 如 IR Q 处理器模式,这时处理器使 用 r13_ir q 和 r14_irq
AR M 的子程序调用是很快的,因为子程序的返回地址不需要存放在堆栈中。
14 . 存储器重新映射 ( Rema p )的原因:
使 Flas h 存储器中 的 FI Q 处理程序不必考虑因为重新映射所导致的存储器边界问题;
用来处理代码空间中段边界仲裁 的 SRA M 和 Boot Bloc k 向量的使用大大减少;
为超过单字转移指令范围的跳转提供空间来保存常量。
AR M 中的重映射是指在程序执行过程中通过写某个功能寄存器位操作达到重新分配其存储器地址空间的映射。一个典型的应用就是应用程序存储 在 Flash/RO M 中,初始这些存储器地址是 从 0 开始的,但这些存储器的读时间 比 SRAM/DRA M 长,造成其内部执行频率不高,故一般在前面一段程序将代码搬移 到 SRAM/DRA M 中去,然后重新映射存储器空间,将相 应 SRAM/DRA M 映射到地 址 0 ,重新执行程序可达到高速运行的目的。
15 . 存储异常向量表中程序跳转使 用 LD R 指令,而不使 用 B 指令的原因:
LD R 指令可以全地址范围跳转, 而 B 指令只能在前 后 32M B 范围内跳转;
芯片具 有 Rema p 功能。当向量表位于内 部 RA M 或外部存储器中, 用 B 指令不能跳转到正确的位置。
16 . 锁相环 ( PL L )注意要点:
PL L 在芯片复位或进入掉电模式时被关闭并旁路,在掉电唤醒后不会自动恢 复 PL L 的设定;
PL L 只能通过软件使能;
PL L 在激活后必须等待其锁定,然后才能连接;
PL L 如果设置不当将会导致芯片的错误操作。
17.ARM 7 与 ARM 9 的区别:
ARM 7 内核 是 0.9MIPS/MH z 的三级流水线和 冯 &S226 ; 诺伊曼结构 ; ARM 9 内核是五级流水线,提 供 1.1MIPS/MH z 的哈佛结构。
ARM 7 没 有 MM U , ARM720 T 是 MM U 的 ; ARM 9 是 有 MM U 的 , ARM940 T 只 有 Memory protection unit . 不是一个完整 的 MM U 。
ARM7TDM I 提供了非常好的性 能 — — 功耗比。它包含 了 Thum b 指令集快速乘法指令 和 IC E 调试技术的内核 。 ARM 9 的时钟频率 比 ARM 7 更高,采用哈佛结构区分了数据总线和指令总线。
18.VI C 的基本操作如下:
答:设 置 IRQ/FI Q 中断,若 是 IR Q 中断则可以设置为向量中断并分配中断优先级,否则为非向 量 IR Q 。然后可以设置中断允许,以及向量中断对应地址或非向量中断默认地址。当有中断后,若 是 IR Q 中断,则可以读取向量地址寄存器,然后跳转到相应的代码。当要退出中断时,对向量地址寄存器 写 0 ,通 知 VI C 中断结束。当发生中断时,处理器将会切换处理器模式,同时相关的寄存器也将会映射。
19 . 使用外部中断注意
把某个引脚设置为外部中断功能后,该引脚为输入模式,由于没有内部上拉电阻,所以必须外接一个上拉电阻,确保引脚不被悬空;
除了引脚连接模块的设置,还需要设 置 VI C 模块,才能产生外部中断,否则外部中断只能反映 在 EXTIN T 寄存器中;
要使器件进入掉电模式并通过外部中断唤醒,软件应该正确设置引脚的外部中断功能,再进入掉电模式。
20.UART 0 的基本操作方法
设 置 I/ O 连接 到 UART 0 ;
设置串口波特率 ( U0DL M 、 U0DL L );
设置串口工作模式 ( U0LC R 、 U0FC R );
发送或接收数据 ( U0TH R 、 U0RB R );
检查串口状态字或等待串口中断 ( U0LS R )。
21.I2 C 的基本操作方法
I2 C 主机基本操作方法:
设 置 I2 C 管脚连接;
设 置 I2 C 时钟速率 ( I2SCL H 、 I2SCL L );
设置为主机,并发送起始信号 ( I2CONSE T 的 I2E N 、 ST A 位 为 1 , A A 位 为 0 );
发送从机地址 ( I2DA T ),控 制 I2CONSE T 发送;
判断总线状态 ( I2STA T ),进行数据传输控制;
发送结束信号 ( I2CONSE T )。
I2 C 从机基本操作方法:
设 置 I2 C 管脚连接;
设置自身的从机地址 ( I2AD R );
使 能 I2 C ( I2CONSE T 的 I2E N 、 A A 位 为 1 );
判 断 S I 位或等 待 I2 C 中断,等待主机操作;
判断总线状 态 I2STA T ,进行数据传输控制。
22.PW M 基本操作方法:
连 接 PW M 功能管脚输出,即设 置 PINSEL 0 、 PINSEL 1 ;
设 置 PW M 定时器的时钟分频值 ( PWMP R ),得到所要的定时器时钟;
设置比较匹配控制 ( PWMMC R ),并设置相应比较值 ( PWMMR x );
设 置 PW M 输出方式并允 许 PW M 输出 ( PWMPC R )及锁存使能控制 ( PWMLE R );
设 置 PWMTC R ,启动定时器,使 能 PW M ;
运行过程中要更改比较值时,更改之后要设置锁存使能。
使用双边 沿 PW M 输出时,建议使 用 PWM 2 、 PWM 4 、 PWM 6 ;使用单 边 PW M 输出时, 在 PW M 周期开始时为高电平,匹配后为低电平,使 用 PWMMR 0 作 为 PW M 周期控制 , PWMMR x 作为占空比控制。