/******************************************************************************************************************
参考:
说明:。
******************************************************************************************************************/
记一下概念的东西,有我自己的认识:
关于ARM THUMB两个状态,我自己的见解就是就像现在的电脑,新买的CPU都是64位的,但是也可以装成32位的系统xp或win7,这就是CPU工作的32位状态。而如果装了64位的win7那CPU就工作在64位了,那么是ARM状态就对应上边例子中的64位的,THUMB对应32位的,这应该是一个过度。我问过u-boot Linux都是一直工作在ARM状态,一直都没有一点THUMB状态,对于那种刚开始学这个,没做过项目的老师们一再讲这个就现在想想没有多大的意义了。对于PC机来说现在是32位到64位的过渡,但是对于已经是后32位的时代的,还要讲16的东西,就该往前看看多说说64位的事了。
关于汇编学习的程序,先说它在哪里用到了吧。在u-boot 或者Linux的起始时用的是汇编,至于为什么这样,可以想想飞机的原理,飞机就是要摆脱轮子的慢,但是在飞机的起飞阶段,飞机还是要用轮子的。这是为什么,因为轮子可以有它的优点。就想上边两种情况要用汇编一样,这样作用就明了了。真正造车的才会深入了解轮子的各种信息(这种就是指芯片公司的AP工程师)。嵌入式学习者就像说相声的各个方面都要学习,京剧,二人转。不过那都叫学唱,同样道理对于嵌入式学习者来说,汇编的作用也就是这了。
关于汇编中的标号就是一个内存地址的别名:
如下图的START其实就是30000000,但是你在跳转的时候还是记忆START是更容易的。
关于DCD和SPACE:
StackUsr DCD UsrStackSpace
AREA MyStacks,DATA,NOINIT,ALIGN = 2
UsrStackSpace SPACE USR_STACK_LEGTH*4
以上代码等价于C语言中的:
int *p = malloc(USR_STACK_LEGTH*4)
我个人认为汇编因为中不能将这样写,所以就找了UsrStackSpace来作中间量,它只是打酱油的,没有在历史上起到重要作用。
StackUsr DCD SPACE USR_STACK_LEGTH*4
也可以这么说,如果代码仅有上边的,那么:StackUsr DCD UsrStackSpace会显得多余了,因为好正力就可以看出直接中UsrStackSpace就可以了。
但是由于UsrStackSpace代表这一块内存的首地址了,我要是以后经常访问尾地址了怎么办,再来一个玩意来存着尾地址。就用StackUsr了。让StackUsr干活还要把它伺候好了,它本身也要占个位置,这就用到了DCD了,DCD给StackUsr找个位置,然后就开始给它任务了。如果把UsrStackSpace交给它,那么StackUsr 和UsrStackSpace就一个样了;如果把UsrStackSpace + (USR_STACK_LEGTH - 1)*4 给它,那么StackUsr指向了这个块的末地址。至于谁会这要求,那就是堆栈了!
关于堆栈,就是栈。我有我的看法,这就好比一个好师傅在拆一个录音机,螺丝大小不一。那么拆的时候一般会将它们按照顺序放着,这么做的目的就是为了一会儿修好了之后再装的时候能一个一个对应着装上去。慢慢引入解释就是说这个师傅把拆下的螺丝都放到了栈中,就是一个司空见惯的一个东西起了一个新名。师傅是靠各个螺丝的物理位置不同来安装的,但是对于计算机来说它是“平面”的,只有先后顺序没有物理位置,只能靠拆下每个螺丝的顺序来区别了,相当于画一个表,有1 2 3..顺序,然后将螺丝一一放入对应位置,装的时候就反序一个装上去。这样就不会有错了。说这么一大堆就是一个怕搞错了。
计算机什么时候这样做呢,就是用C语言编程在调用子函数时候,这个时候就相当于这个师傅要拆录音机了。子函数调用完后,就要回来继续运行主函数,这个时候就相当于师傅要装上录音机了。这时候就要看看在调用子函数时有没有做好善后工作了,有没有把主函数的状态保存下来,回来的时候好还原出来当初的状态。放状态的容器就是“栈”,为也还原时不出错,要状态所涉及的所有东西一一按照顺序放到这个容器里,到时候还原的时候再按时一定的顺序取出来,如果两个顺序都定死了,以后就不会出错了。关于制定这两个顺序大家想到了,规定一个这个容器只有一个口.....(关于这个顺序暂时还没有想到通俗的例子)
关键字:ARM基础 ARM知识
引用地址:
ARM基础:ARM知识通俗理解
推荐阅读最新更新时间:2024-03-16 15:45
【ARM】arm异常中断处理知识点
ARM处理器7种类型异常 按优先级从高到低的排列如下: 复位异常(Reset) 数据异常(Date Abort) 快速中断异常(FIQ) 外部中断异常(IRQ) 预取异常(Prefetch Abort) 软件中断异常(SWI) 未定义指令异常(Underfined instruction) 当异常发生时 处理器会把PC设置为一个特定的存储器地址。 这一地址放在被称为向量表(vector table)的特定地址范围内。 向量表的入口是一些跳转指令,跳转到专门处理某个异常或中断的子程序。 当异常发生时,分组寄存器r14和SPSR用于保存处理器状态。 ARM异常处理器模式 每一种异
[单片机]
ARM CPU的软件基础
ARM CPU的软件基础 从8位/16位单片机发展到以ARM?CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的由手工编制的监控程序或调度程序,成为重要的基础组件。更重要的是嵌入式操作系统对应用程序可以起到屏蔽的作用,使应用程序员面向操作系统级开发应用软件,并易于在不同的ARM核的嵌入式处理器上移植。嵌入式操作系统都具有一定的实时性,易于裁剪和伸缩,可以适合于从ARM7到Xscale各种ARM CPU和各种档次的应用,嵌入式操作系统可以使用广泛流行的ARM开发工具,如ARM公司的SDT/ADS和RealView等,也可以使用开发软件,如GCC/GDB、KDE或Eclipe开发环境,市场上还有专用的开发工具,
[嵌入式]
嵌入式系统设计师必备的在线ARM仿真器知识
一、嵌入式产品的开发周期 典型的嵌入式微控制器开发项目的第一个阶段是用C编译器从源程序生成目标代码,生成的目标代码将包括物理地址和一些调试信息。目前代码可以用软件模拟器、目标Monitor或在线仿真器来执行和调试。软件模拟器是在PC机或工作站平台上,以其CPU(如x86)及其系统资源来模拟目标CPU(如P51XA),并执行用户的目标代码;而目标Monitor则是将生成的目标代码下载到用户目标板的程序存储器中,并在下载的代码中增加一个Monitor任务软件,用来监视和控制用户目标代码的执行,用户通过目标板上的串行口或其它调试端口,利用桌面计算机来调试程序。 程序的调试是通过设置断点、使程序在指定的指令位置停止运行来实现的。在程序
[单片机]
推动5G和未来物联网发展,Arm推出全新基础设施平台
Arm 推出两款全新完整基础设施级平台,不仅能加快产品上市速度,并针对5G时代云端到边缘的应用提供优化的设计点 针对7纳米工艺技术优化的Arm Neoverse N1平台,在各种关键云端工作负载可实现2.5倍的性能提升 Arm Neoverse E1平台为高效吞吐量平台,其吞吐量性能较前几代提升达2.7倍 Arm宣布推出两款全新Arm Neoverse平台,即Neoverse N1平台和E1平台,以高度的可扩展性、高吞吐量和性能,推动5G和未来物联网的发展,推动下一波基础设施平台转型。 去年10月,Arm推出Arm Neoverse,为创建万亿联网设备的世界而打造云端到边缘的基础设施。此后,整个Arm生态系统见
[物联网]
ARM汇编关键知识点总结
1. LDR R1, =COUNT 意思是将 COUNT 变量的地址放到 R1中 LDR R1, COUNT 意思是将 COUNT 变量地址里面的内容赋给 R1 2. Load-Store 结构——这个应该是 RISC设计中比较有特点的一部分。在 RISC 中,CPU 并不会对内存中的数据进行操作, 所有的计算都要求在寄存器中完成。 而寄存器和内存的通信则由单独的指令来完成。而在 CSIC中,CPU是可以直接对内存进行操作的,这也是一个比较特别的地方。所以,在 ARM中,cpu只能通过寄存器来对内存的数据进行访问和更改。 LDR Rd,(地址) STR Rd, (地址) LDMIA Rn!, regist STMIA
[单片机]
ARM9(S3C2440)的LCD显示——理论知识
今天和大家一起讨论一下S3C2440的LCD显示的问题,希望大家能够多多指教,我说的不对的地方希望大家及时帮我改正,以使我可以增长知识,才能不至于给别人的学习带来不便,呵呵 下面先看一下我从别人那转过来的一篇文章,我觉得很有用,看完之后我再说一下自己对这一块的了解,也可以先看看我的理解(下面红字标出)再看开始的这篇文章,因为我说的更通俗,O( _ )O哈哈~。 1. LCD工作的硬件需求: 要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器。在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多
[单片机]
Ceva 加入 Arm Total Design 加速开发面向基础设施和非地面网络卫星的端到端 5G SoC
Ceva PentaG-RAN与Arm Neoverse计算子系统相结合,降低5G SoC开发成本并缩短上市时间,从而使双方客户受益 帮助智能边缘设备更可靠、更高效地连接、感知和推断数据的全球领先硅产品和软件IP授权许可厂商 Ceva公司宣布加入Arm Total Design ,旨在加速开发基于Arm® Neoverse™计算子系统(CSS)和Ceva PentaG-RAN 5G平台的端到端5G定制SoC,用于包括5G基站、Open RAN设备和5G非地面网络(NTN)卫星在内的无线基础设施。 Neoverse CSS 是经过优化、集成和验证的平台,能够以更低成本和更快上市时间实现定制硅片设计。 它与Ceva
[网络通信]