S3C2440学习二(基础资源的使用)
①ARM有多少个通用寄存器,有什么用?(让我们一个一个记录)
通用寄存器
通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。通用寄存器的长度取决于机器字长,汇编语言程序员必须熟悉每个寄存器的一般用途和特殊用途,只有这样,才能在程序中做到正确、合理地使用它们。16位cpu通用寄存器共有 8 个:AX,BX,CX,DX,BP,SP,SI,DI.
八个寄存器都可以作为普通的数据寄存器使用。
但有的有特殊的用途:AX为累加器,CX为计数器,BX,BP为基址寄存器,SI,DI为变址寄存器,BP还可以是基指针,SP为堆栈指针。
32位cpu通用寄存器共有 8 个: EAX,EBX,ECX,EDX,EBP,ESP,ESI,EDI功能和上面差不多
ARM通用寄存器
通用寄存器(R0-R15)可分为三类:不分组寄存器R0~R7;分组寄存器R8~R14;程序计数器PC。
1)不分组寄存器R0~R7
不分组寄存器R0~R7在所有处理器模式下,它们每一个都访问一样的32位寄存器。它们是真正的通用寄存器,没有体系结构所隐含的特殊用途。
2)分组寄存器R8~R14
分组寄存器R8~R14对应的物理寄存器取决于当前的处理器模式。若要访问特定的物理寄存器而不依赖当前的处理器模式,则要使用规定的名字。寄存器R8~R12各有两组物理寄存器:一组为FIQ模式,另一组为除了FIQ以外的所有模式。寄存器R8~R12没有任何指定的特殊用途,只是在作快速中断处理时使用。寄存器R13,R14各对应6个分组的物理寄存器,1个用于用户模式和系统模式,其它5个分别用于5种异常模式。寄存器R13通常用做堆栈指针,称为SP;寄存器R14用作子程序链接寄存器,也称为LR。
3)程序计数器PC
寄存器R15用做程序计数器(PC)。
②大概有多少资源模块?
ARM处理器共有37个寄存器:1) 31个通用寄存器,包括程序计数器(PC)。这些寄存器都是32位的;2)6个状态寄存器。这些寄存器也是32位的,但是只使用了其中的12位。
S3C2440的片内资源大概可分13类:一,1个LCD控制器(支持STN和TFT带有触摸屏的液晶显示器);二,SDRAM控制器;三,3个通道的UART;四,4个通道的DMA;五,4个具有PWM功能的计时器和1个内部时钟;六,触摸屏接口;七,I2C总线接口;八,2个USB主机接口,1个USB设备接口;九,2个SPI接口;十,SD接口和MMC卡接口;十一,看门狗计数器;十二,117位通用I/O口和24位外部中断源;十三,8通道10位AD控制器。
ARM9主要是一ARM920T为核心,进行上述外围的扩张,使其显示出强大的能力,主要是频率上去了,能做的事情就多了,重点ARM920T的内核稳定。
③对于ARM的寻址是指的RAM吗?对ROM如何寻址?
我理解的寻址是,CPU每部寄存器对立即数的处理,对内部寄存器的处理,如果需要运算的就把中间结果或状态放到RAM中,相当于打草稿,如果是需要使用数据就进入ROM调用,相当于ROM是资料库,如果运算的结果重要就存放到RAM中相当于存档。
其实寻址非常简单,RAM和ROM或FLASH都是对应不同的设备,有不同的驱动方式,还有就是有地址顺序,采用常用的命令,写入读出到相应的地址,一切就顺理成章了。
④有时候用ADS1.2编译程序会出错,但是将编译清楚后,重新编译后,可能会报警,但不会出错,这是预编译和连接中的问题吗?
据说是编译中有个*.O文件,可执行代码的生存,是编译后连接,大概编译后生成*.O文件,然后连接处理行不通了,前面编译大概是对每个文件每个文件的处理,得到许多中间文件,然后再系统性连接处理,说以从头再来过可以解决这个编译问题。
⑤程序中static的着用?
加static 是标明此函数为静态函数,即此函数只能在本文件中使用,不允许别的文件调用此函数.函数后面的const 关键字表示,这个函数的返回值是个常量类型。这个常量类型是有限制的。 他的生存期间就是在这个类中。
⑥我们知道最终在下载到硬件的是二进制代码,那么命令、数据、地址的区别和联系是什么?
对应硬件来说,每一行代码都是都有个存储顺序,可理解为按汇编的格式先装入操作命令,再是地址或寄存器,再是数据。虽然命令、数据、地址编译到最后就是二进制代码,但是他们有顺序,而且按照对应的命令就能自动分离了。再深入研究芯片的设计就能深入掌握了。
⑦RAM,ROM和flash的区别?
可以把他们看做不同的芯片、不同的设备,都能通过IO读写数据,他们都有各自的地址空间,但是RAM设计之初就是要求速度快,
S3C2440基础资 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)
