①MPLL和UPLL有何不同?
关于MPLL运用到MPLLCON,而UPLL运用到UPLLCON寄存器,同归于时钟电源办理单元。MPLLCON地址是0X4C000004,UPLL地址是0X4C000008。MPLL用于CPU及其他外围器材,这儿把他了解成单片机的主频就对了,UPLL用于USB。发生FCLK,HCLK,PCLK三种频率。
CLKDIVN时钟分配操控寄存器,地址是0X4C000014,对FCLK分频给UCLK,PCLK,不分频或2分频,CAMDIVN照相机时钟分配寄存器,地址是0X4C000018,也是做一个时钟分配。
②2440slib.s中呈现mrc,bic,mcr,MOV_PC_LR是什么意思,有什么材料学习和研讨?
前面三条是归于嵌入式汇编指令,
MRC 指令的格局为:MRC{条件} 协处理器编码,协处理器操作码1,意图寄存器,源寄存器1,源寄存器2,协处理器操作码2。
MRC 指令用于将协处理器寄存器中的数据传送到ARM 处理器寄存器中,若协处理器不能成功完结操作,则发生未界说指令反常。其间协处理器操作码1和协处理器操作码2 为协处理器即将履行的操作,意图寄存器为ARM 处理器的寄存器,源寄存器1 和源寄存器2 均为协处理器的寄存器。
指令示例:
MRC P3 , 3 , R0 , C4 , C5 , 6 ;该指令将协处理器 P3 的寄存器中的数据传送到 ARM 处理器寄存器中.
MCR 指令的格局为: MCR{条件} 协处理器编码,协处理器操作码1,源寄存器,意图寄存器1,意图寄存器2,协处理器操作码2。
MCR 指令用于将ARM 处理器寄存器中的数据传送到协处理器寄存器中,若协处理器不能成功完结操作,则发生未界说指令反常。其间协处理器操作码1 和协处理器操作码2为协处理器即将履行的操作,源寄存器为ARM 处理器的寄存器,意图寄存器1 和意图寄存器2 均为协处理器的寄存器。
指令示例:
MCR P3 , 3 , R0 , C4 , C5 , 6 ;该指令将 ARM 处理器寄存器 R0 中的数据传送到协处理器 P3 的寄存器 C4 和 C5 中。
CP15寄存器图概述
CP15界说了16个寄存器。CP15的寄存器图如下表所示
a.在方位0能够拜访两个寄存器。详细拜访哪一个寄存器取决于第二个操作码的值。
b.分指令寄存器和数据寄存器
Unpredictable(UNP):从这个当地读出的值能够是恣意的
Should be zero(SBZ):往这个当地写入的时分,这个域的一切位都应该清0
只能在特权形式下运用MRC和MCR指令拜访CP15的寄存器。MCR和MRC的指令位形式如下:
它们的汇编代码为:MCR/MRC{cond} p15,opcode_1,Rd,CRn,CRm,opcode_2
cond是条件码,bit20是L位,假如L=1就表明Load,从外面读到CPU核中,也便是MRC指令,假如L=0就表明Store,也便是MCR指令。[11:8]这四个位是协处理器编号,CP15编号是15,因此是4个1。CRn是CP15寄存器编号,Rd是CPU核寄存器编号,各占4位。关于CP15协处理器,规矩opcod1应该为0,opcode2和CRm是指令的选项,详细意义取决于不同的寄存器。
寄存器0,ID编码寄存器
这是一个用于回来设备ID编码的只读寄存器
你能够经过将opcode2设置为除1以外的值来拜访CP15的ID编码寄存器R0(CRm此刻应置为0)。例如:
MRC p15,0,Rd,c0,c0,0 ;回来ID寄存器的值
寄存器0,缓存类型寄存器
这是一个只读寄存器,它包含了缓存的架构和巨细的信息,这就答应操作体系来确定要怎么履行比如收拾缓存和确定缓存的操作。一切ARMv4T版别及今后的带缓存处理器都包含这个寄存器,答应实时操作体系的厂商出产他们的操作体系的实验版别。
你能够经过将opcode_2设置为1来拜访CP15的缓存类型寄存器R0。如:
MRC p15,0,Rd,c0,c0,1 ;回来关于缓存的详细信息
还有一个bic是铲除指令,BIC―――――位铲除指令指令格局:
BIC{cond}{S} Rd,Rn,operand2
BIC指令将Rn 的值与操作数operand2 的反码按位逻辑”与”,成果存放到意图寄存器Rd中。指令示例:BIC R0,R0,#0x0F ;将R0最低4位清零,其他位不变。
最终还有一个MOV_PC_LR,这个是用于子程序回来,代码剖析(这是自己在总结,将他人的东西经过概括收拾和剖析):
MACRO //这个是宏界说的关键字
MOV_PC_LR //作用是子程序回来
[ THUMBCODE
bx lr //当方针程序是Thumb时,就要用BX跳转回来,并转化形式
|
mov pc,lr //方针程序是ARM指令集,直接把lr赋给pc就能够了,是直接处理的(这个要查THUMB指令集)。
]
MEND //宏界说的完毕标志
③Main函数带了两个参数,有何不同,别离有什么用?
int Main(int argc, char **argv);这个句子是常用的程序开端接口函数,前面的int表明回来的类型,至于Main是经过发动引导的一个符号,能够对应的修正。至于里边的两个参数,argc的值表明后边argv数组传递了几个参数,能够使argv[0]、argv[1]…。
④关于GPIO怎么操控,IO有多少功用?
大致有三个寄存器,拿portB口来说吧,GPBCON用来操控整个B口的功用,GPBDAT用来确定是高电平仍是低电平,GPBUP便是要不要挑选上拉。第二第三功用后边再说。
⑤什么是协处理器?
协处理器,一种芯片,用于减轻体系微处理器的特定处理使命。超级CPU,PC机一般没有协处理器,速度高兴,不需求帮助了,ARM微处理器指令包含5条:一 CDP协处理器数操作指令,二 LDC协处理器数据加载指令,三 STC协处理器存储指令,四 MCR ARM处理器寄存器到协处理器的数据传送指令,五MRC协处理器寄存器到ARM处理器寄存器的数据传送指令。arm920T协处理器CP15。
⑥什么是影子寄存器?
一切的影子寄存器都是一个实践存在的物理寄存器,经过引进影子寄存器,指令能够重复运用相同的寄存器编码,可是在不同形式下,这些编码对应不同的物理寄存器。引进影子寄存器的别的一个意图是当中止或反常发生时,CPU会将当时“CPU的状况”保存在影子寄存器中。从CPU视点看,它的“状况”包含: (1) PC(也便是R15)值 (2) CPSR的值。您或许以为R0等通用寄存器也是状况,从某种意义上说您是对的。可是那些不是“CPU的状况”,它们是“运用的状况”。当中止或反常发生后,CPU并不关怀它们,CPU仅仅:(1) PC值被保存在当时形式下的R14中 (2)CPSR值被保存在当时形式下的影子寄存器中
保存CPU的状况是一种廉价的操作,可是要保存运用的状况可就很昂贵了,由于至少有13个寄存器(R0 ~ R12)需求保存,为了加速这种操作,ARM的内存拜访指令能够将一组寄存器的内容保存到内存中,反之亦然。(后边温习时再完全剖析)
⑦THUMB指令怎么对使PC作业?
本来ARM指令集是32位的,但是也兼容16位的THUMB指令集,Thumb指令集是ARM指令集的一个子集,是针对代码密度问题而提出的,它具有16位的代码宽度。当处理器在履行ARM程序段时,称ARM处理器处于ARM作业状况,当处理器在履行Thumb程序段时,称ARM处理器处于Thumb作业状况。Thumb指令集并没有改动ARM体系底层的编程模型,仅仅在该模型上增加了一些约束条件,只需遵从必定的调用规矩,Thumb子程序和ARM子程序就能够相互调用。Thumb指令与ARM指令的时刻功率和空间功率关系为:
Thumb代码所需的存储空间约为ARM代码的60%~70%。
Thumb代码运用的指令数比ARM代码多约30%~40%。
若运用32位的存储器,ARM代码比Thumb代码快约40%。
若运用16位的存储器,Thumb代码比ARM代码快约40%~50%。
与ARM代码相比较,运用Thumb代码,存储器的功耗会下降约30%。
明显,ARM指令集和Thumb指令集各有其长处,若对体系的功能有较高要求,应运用32位的存储体系和ARM指令集,若对体系的本钱及功耗有较高要求,则应运用16位的存储体系和Thumb指令集。当然,若两者结合运用,充分发挥其各自的长处,会获得更好的作用。
⑧留给后边的问题:一程序是怎么编译的,②程序是怎么变成机器码或许二进制代码,怎么烧录到方针板的,三硬件是依据内部电路和贮存电荷跑起来的,四程序是怎么编译和衔接的,五ucos-II和linux有何不同,两种有何好坏。