Flash与S3C44B0X连接时地址线为啥要偏移一位
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flash与S3C44B0X连接时地址线为啥要偏移一位相关的知识,希望对你有一定的参考价值。
参考技术A 进入ARM状态:当操作数寄存器的状态位为,0时,可以采用执行BX指令的方法,使微处理器从THUMB切换到ARM。此外,在处理器进行异常处理时,把PC指针放入异常模式的链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。3.R14也称作子程序连接寄存器SLR或连接寄存器LR,用来保存R15的返回值,可用R14保存子程序的返回地址。
寄存器R14常用在如下情况:
在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值复制给R14,执行完子程序后,又将R14的值复制回PC,即可完成子程序的调用返回。
4.程序计数器PC(R15)对其的使用有一些限制。
5.寄存器R16,用作当前程序状态寄存器CPSR,可在任何运行模式下被访问。
6.条件码标志:N,Z,C,V均为条件码标志位,他们的内容可被算术或逻辑运算的结果锁改变,并且可以决定某条指令是否被执行。
7.控制位:PSR的低八位为控制位,当发生异常时,这些位可以被修改,如果处理器运行在特权模式,这些位也可以由程序修改。
8.ARM体系所支持的异常类型:
1)复位(Reset):当处理器的复位电平有效时,产生复位异常,程序跳转到复位异常处理程序处执行。
2)未定义指令(Undefined):当ARM处理器或协处理器遇到不能处理的指令时,产生未定义指令异常。可使用该异常机制进行软件仿真。3)软件中断(SWT):该异常由执行SWT指令产生,可用于用户模式下的程序调用特权操作指令。可使用该异常机制实现系统功能调用。4)指令预取终止(Prefetch Abort):若处理器预取指令的地址不存在,或该地址不允许当前指令访问,存储器会向处理器发出终止信号,但当预取的指令被执行时,才会产生指令预取终止异常。5)数据终止(Data Abort):若处理器数据访问指令的地址不存在,或该地址不允许当前指令访问时,产生数据终止异常。6)外部中断请求(IRQ):当处理器的外部中断请求引脚有效,且CPSR中的I位为0时,产生IRQ异常。系统的外设可通过该异常请求中断服务。7)快速中断请求(FIQ):当处理器的快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常。
9.ARM体系结构可以用两种方法存储字数据,称之为大端模式和小端模式。
大端模式下,字数据的高地址是存储在低地址中。
小端模式下,字数据的低地址是存储在低地址中。
10.MMU(内存管理单元)通过硬件实现对内存管理,是ARM中最常见的协处理器,一般为CP15. MMU 内存管理单元 Memory Management Unit 在处理器中实现内存管理功能,完成物理地址到虚拟地址的映射
11.AMBA为先进控制器总线体系,它为ARM内核和外设提供了标准化接口。
12.内核后缀的含义:
E:代表支持增强DSP指令 T:代表支持Thumb指令集
J:代表支持Jazzlle技术 S:代表为可综合的内核(与其对应为赢家宏单元)
13.TDMI的基本含义:
T:支持16位指令集Thumb
D:支持片上调式Debug
M:内嵌硬件乘法器(Multiplier)
I:嵌入式ICE,支持片上断点和调试点。
14.ARM的寻址模式:
立即寻址:操作数本身就在指令中给出,只要取出指令也得到了操作数。这个操作数叫做立即数ADD R0,R0,#1; R0←R0+1 ADD R0,R0,#0x3f;R0←R0+0x3f
寄存器寻址:利用寄存器的数值作为操作数,是各类微处理器经常采用的一种方式
寄存器间接寻址:以寄存器中的值作为操作数的地址,而操作数本身存放在存储器中
基址变址寻址:就是将寄存器的内容和指令中给出的地址偏移量相加,从而得到的一个操作数的有效地址
多寄存器寻址:一条指令可以完成多个寄存器值的传送。这种寻址方式可以用一条指令传送最多16个通用寄存器的值。
跳转寻址:相对寻址以程序计数器PC的当前值为基地址,指令中的地址标号作为偏移量,将两者相加之后得到的操作数的有效地址。
堆栈寻址: 满堆栈:当堆栈指针指向最后压入的堆栈的数据时。空堆栈:当堆栈指针指向下一个将要放入数据的空位置。 递增堆栈:堆栈由低地址向高地址生成时 递减堆栈:堆栈由高地址向低地址生成
满递增堆栈: 堆栈指针指向最后压入的数据,且低地址向高地址生成
慢递减堆栈: 堆栈指针指向最后压入的数据,且高地址向低地址生成
空递增堆栈: 堆栈指针指向下一个将要放入的数据的空位置,且低地址向高地址生成
空递减推展: 堆栈指针指向下一个将要放入的数据的空位置,且高地址向低地址生成
15.ARM指令集分为:
数据处理指令:CMP比较指令(CMP R1,RO 将R0、R1的值减,并根据结果设置CPSR标志位)ADD加法指令
加载/存储指令:LDR字数据加载指令(LDR R0,[R1]),LDRB字节数据加载指令。
乘法指令:MUL32位乘法指令(MUL R0,R1,R2;R0=R1*R2),MLA32位乘加指令 (MLA R0,R1,R2,R3;R0=R1*R2+R3)
状态寄存器访问指令:MRS程序状态寄存器到通用寄存器的数据传送指令MRS R0,CPSR (传送CPSR的内容到R0),MSR通用寄存器到程序状态寄存器的数据传送指令。MSR SPSR,R0(传送R0的内容到SPSR)
跳转指令:B跳转指令,BL带返回的跳转指令 B LABEL(程序无条件跳转到标号LABEL处执行)
协处理器指令:CDP协处理器数操作指令CDP P3,2,C12,C10,C3,4(该指令完成协处理器P3的初始化,)LDC协处理器数据加载指令LDC P3,C4,[R0],STC协处理器数据存储指令.
处理器数据手册 包含以下内容:处理器特点概述,处理器的功能结构及其框架图,处理器的封装形式和引脚排列,处理器各个功能模块介绍,处理器的电气特性,处理器的机械特性
ARM处理器的常用模块:内存控制单元,中断控制单元,GPIO,定时器,UART。
PWM 定时器:包括6个16位基于中断或者DMA的定时器,可编程工作周期、频率和极性,其中5个定时器带有 脉宽调制 Pulse Width Modulation,另外一个无外部引脚,只能内部使用。
IIC 总线接口:IIC是一种串行总线 ,S3C44B0X的IIC是一个基于中断操作的多主IIC。
IIS 总线接口:IIS是一种音频接口,S3C44B0X的IIS是一个基于DMA操作的IIS。
GPIO 控制器:通用输入输出端口,是处理器上可编程的引脚。S3C44B0X的一共有7个通用端口,共71位:
S3C44B0X采用ARM7TDMI内核,最大速度可以达66MHZ。
S3C44B0X 地址空间:256MB 可访问区域 特殊功能寄存器 4MB,每个BANK32MBYTES,共有8个BANK256MB。
BANKCON0~BANKCON5是前6个固化区域的BANK的寄存器,后两个BANK支持SDRAM,由BANKCON6 和BANKCON7控制
S3C44B0X 的中断控制器有30个中断源,实际上的中断源共有26个。外部中断 4/5/6/7 共用一个中断源
7个通用端口,共71位:
A:10位输出端口 B: 11位输出端口 C:16位输入/输出端口 D: 8位输入/输出端口
E: 9位输入/输出端口 F: 9位输入/输出端口 G: 8位输入/输出端口
定时器:6个基于中断或DMA方式的PWM定时器 ,有6个PWM定时器,都可以工作在中断或者DMA方式。
1、嵌入式系统的硬件扩展包括三种类型:
内部模块扩展:通过增加外部电路,完成处理器内部模块提供的功能
总线扩展:利用处理器的外部总线控制器(又称内部控制器),扩展内存类芯片 地址总线、数据总线、控制信号、片选信号
GPIO扩展:GPIO是每个处理器都具有的功能部件,GPIO扩展非常灵活,因为每一个引脚都是可以编程的,理论上这种引脚可以通过程序完成任何一种功能。
2、S3C44B0X系统: 内存空间分为8个BANK 每个Bank的空间32M 地址空间总共256M
1、嵌入式软件的开发流程:
编译 Compile 是指从高级语言转换成汇编语言的过程。本质上编译是一个文本转换的过程 从一个文本文件到另一个文本文件
汇编 Assemble 是指从汇编语言程序生成目标系统的二进制代码(机器代码)的过程
链接 Link 将汇编成的多个机器代码组合成一个可执行的程序
加载程序 在嵌入式系统的开发初期,生成的二进制代码需要烧写到系统的只读存储器中,然后跳转到代码所在的地址才可以运行。将BootLoader的代码烧写到嵌入式系统中,然后使用BootLoader将Linux内核和文件系统烧入
2、嵌入式开发的常用调试方式
目标机 到 主机 打印调试信息 目标机向主机打印调试信息的调试方法,不需要对目标机的执行程序作出改动,但是需要一条主机到目标机的通信信道
JTAG 调试
远程 gdb 调试 调试是运行在主机(host,桌面电脑)的应用程序,被调试的程序运行在目标机(target)上
堆和栈的区别:
堆和栈都是系统管理的动态内存,在常见的体系结构和编译系统中,堆一般从低地址向高地址增长,栈一般从高地址向低地址增长。术语的“堆栈”则专指栈。
1、Binutils 工具集合
as GNU汇编器。用来以将处理器的汇编代码转换成可执行的代码,并存储到目标文件.o文件中
ld GNU链接器。用于将一个或多个目标文件.0、库组合成一个可执行程序;或者生成静态库和动态库
ar 归档工具,可以将多个文件组合成一个大文件,并且可以读取原始文件的内容
strip 去除文件中的符号
nm 用以显示目标文件中的符号
objcopy 转换二进制代码的工具
objdump 显示目标文件中的反汇编工具
readelf 显示ELF文件中的各种信息 string 显示文件中的可打印字符
ranlib 产生归档文件的索引,并将其保存到归档文件中,索引同时列出归档文件个成员所定义的可重分目标文件
addr2line 可以将一个可执行的程序地址映射到源文件的对应行
gprof 显示程序调用段的各种数据
2、执行编译分成4步:
预处理:生成.i的文件(预处理器 cpp) 编译:将预处理后的文件转换成汇编语言,生成文件.s(编译器 gcc) 汇编:由汇编代码生成的目标代码,即机器代码,生成.o(汇编器 as)
链接:由各个文件的目标代码,生成可执行程序(链接器 ld)
3、ELF 文件格式 可执行文件(应用程序) 可重定向文件(*.o)共享object文件(*.so)
4、GDB 调试基础 是一个强大的命令行调试工具(在嵌入式开发系统中的作用),GDB调试可以直接在嵌入式系统中使用,这与PC上一般LINUX的程序调试的区别仅仅是调试的宿主机是目标机,调试的结果可以通过串口等方式在主机上获取,此时主机在调试系统中的作用仅仅是显示的终端。
1、嵌入式linux的引导方式: 启动加载 Bootloader 模式 发布后内核已烧写到目标机中,可以脱离主机运行 下载 Downloading 模式 没有烧写到目标机中,调试操作系统用到,要先下载到目标机。
2、嵌入式linux的文件系统介绍:
EXT2/3 扩展文件系统2/3
ROMFS Read Only Memory File System,只读文件系统
CRAMFS Compress Read Access Memory File System 压缩只读文件系统
JFFS2 Jounaling FlashFilesystem 2 日志文件系统2
NFS Net File System 网络文件系统
YAFFS Yet Another FlashFile System 另一种FLASH文件系统
1、典型的Bootloader程序框架结构
Bootloader的stage1(一般用汇编语言实现) 1、硬件设备初始化 2、为加载Bootloader的stage2准备RAM空间 3、复制Bootloader的stage2到RAM空间中 4、设置好堆栈5、跳转到stage2的C入口点
Bootloader的stage2(一般用C实现)1、初始化本阶段要使用到的硬件设备2、检测系统内存映射3、将kernel影响和跟文件系统映像从flash上读到RAM空间中4、为内核社会资启动参数5、调用内核
2、Linux的内核组成 1、进程调度 2、进程间的通信 IPC 3、内存管理 MM 4、虚拟文件系统 VFS 5、网络
3、Clinux使用与各种无内存管理单元的处理器,包括无MMU的ARM处理器。
与标准linux的区别 1、虚拟内存 2、Flat扁平 3、位置无关的代码PIC 4、多进程管理
4、Clinux:是MICRO-CONTROL-LINUX的缩写,字面上的意思是针对微控制领域而设计的LINUX系统,适用于各种无内存管理单元的处理器,包括无MMU的ARM处理器。
1、嵌入式系统和PC机的区别和联系有哪些,从应用场合、系统结构、知识背景、开发方式等方面考虑。
从本质上看,嵌入式系统属于计算机系统的一种具体体现。但是它与通用的计算机系统存在差异。相比通用的计算机系统,嵌入式系统和主要具有一下一些特点。
特定设计、各学科结合的产物、高校的设计、与具体应用相结合、存储特性、交叉开发。
2、描述嵌入式系统的几个组成部分的层次结构,并总结他们与开发过程的关系。
嵌入式系统的组成:微处理器、外围硬件、嵌入式操作系统、应用程序、开发环境
嵌入式系统开发分为软件开发部分和硬件开发部分。嵌入式系统在开发过程一般都采用如“宿主机/目标板”开发模式,即利用宿主机(PC机)上丰富的软硬件资源及良好的开发环境和调试工具来开发目标板上的软件,然后通过交叉编译环境生成目标代码和可执行文件,通过串口/USB/以太网等方式下载到目标板上,利用交叉调试器在监控程序运行,实时分析,最后,将程序下载固化到目标机上,完成整个开发过程。
3、说出S3C44BOX内存控制器、中断控制器、GPIO、UART、定时器、LCD控制器、在系统中的作用。结合数据手册,了解处理器各个部件的作用
(1)内存控制器:S3C44B0X处理器无内部的RAM和FLASH,必须在外部增加。内存控制器完成功能包括:大小模式选择、总线宽度选择、内存刷新控制设置等功能。
(2)中断控制器:S3C44B0X的中断控制器主要功能是连接ARM7内核中断与S3C44B0X内部各个部件的中断,其特点是使用2级中断模式。
(3)GPIO控制器:S3C44B0X处理器I/O端口可以用于与外部连接,通用的端口可以根据程序完成相应的功能。
(4)UART:S3C44B0X的UART提供了2个独立通道的异步串口,每个通道均可以工作在DMA模式,也就是说UART能产生内部中断请求或者DMA请求,在CPU和串行I/O之间传送数据。
(5)定时器:S3C44B0X PWM定时器包括定时器和PWM2个方面的功能。一方面可以作为简单的定时器,可以通过中断或者DMA方式作为芯片内部使用的“定时时钟”;另一方面可以通过引脚输出,这些输出是占空比可调的方波
(6)LCD控制器:LCD控制器使用基于时间的抖动算法和帧速率FRC控制方法,同样也可作为每像素8位的彩色LCD显示屏的接口
另外,虚机团上产品团购,超级便宜
以上是关于Flash与S3C44B0X连接时地址线为啥要偏移一位的主要内容,如果未能解决你的问题,请参考以下文章
CAD为啥标注数字总在尺寸线中间,调不到尺寸线上面?不管设置成ISO还是与线平行都不行?