8-3 基于S3C44B0X嵌入式系统应用开发实例_第1页
8-3 基于S3C44B0X嵌入式系统应用开发实例_第2页
8-3 基于S3C44B0X嵌入式系统应用开发实例_第3页
8-3 基于S3C44B0X嵌入式系统应用开发实例_第4页
8-3 基于S3C44B0X嵌入式系统应用开发实例_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章基于S3C44B0X嵌入式系统应用开发实例,6.1S3C44B0X处理器介绍6.2S3C44B0X存储控制器功能及应用开发6.3S3C44B0XI/O端口功能及应用开发6.5S3C44B0XUART接口功能及应用开发6.6S3C44B0X中断控制器功能及应用开发6.16基于S3C44B0X的S3CEV40开发介绍,6.1S3C44B0X处理器介绍,6.1.1SamsungS3C44B0X简介6.1.2SamsungS3C44B0X特点6.1.3S3C44B0X功能结构框图6.1.4S3C44B0X引脚信号描述,6.1.1SamsungS3C44B0X简介,SamsungS3C44B0X微处理器片内集成ARM7TDMI核,采用0.25mCMOS工艺制造,并在ARM7TDMI核基本功能的基础上集成了丰富的外围功能模块,便于低成本设计嵌入式应用系统。片上集成的主要功能如下:片上在ARM7TDMI基础上增加8KB的Cache;外部扩充存储器控制器(FP/EDO/SDRAM控制,片选逻辑);LCD控制器(最大支持256色的DSTN),并带有1个LCD专用DMA通道;2个通用DMA通道/2个带外部请求管脚的DMA通道;2个带有握手协议的UART,1个SIO;,1个多主的IIC总线控制器;1个IIS总线控制器;5个PWM定时器及1个内部定时器;看门狗定时器;71个通用可编程I/O口,8个外部中断源;功耗控制模式:正常、低、休眠和停止;8路10位ADC;具有日历功能的RTC(实时时钟);片上集成PLL时钟发生器。,6.1.2SamsungS3C44B0X特点,一、S3C44B0X体系结构S3C44B0X是基于ARM7TDMI的体系结构,ARM7TDMI是ARM公司最早为业界普遍认可且赢得了最为广泛的应用的处理器核。,二、系统(存储)管理支持大、小端模式(通过外部引脚来选择);地址空间:包含8个地址空间,每个地址空间的大小为32M字节,总共有256M字节的地址空间;所有地址空间都可以通过编程设置为8位、16位或32位宽数据对准访问;8个地址空间中,6个地址空间可以用于ROM、SRAM等存储器,2个用于ROM、SRAM、FP/EDO/SDRAM等存储器;7个起始地址固定及大小可编程的地址空间;1个起始地址及大小可变的地址空间;所有存储器空间的访问周期都可以通过编程配置;提供外部扩展总线的等待周期;在低功耗的情况下支持DRAM/SDARM自动刷新;支持地址对称或非地址对称的DRAM。,三、Cache和片内SRAM4路组相联统一的8KB指令/数据Cache;未作为Cache使用的0/4/8KbytesCache存储空间可作为片内SRAM使用;Cache伪LRU(最近最少使用)的替换算法;通过在主内存和缓冲区内容之间保持一致的方式写内存;具有四级深度的写缓冲;当缓冲区出错时,请求数据填充。,四、时钟和功耗管理低功耗;片上PLL使得MCU的工作时钟最高为66MHz;时钟可以通过软件选择性地反馈回每个功能块;功耗管理模式为:正常模式:正常运行模式;低速模式:不带PLL的低频时钟;休眠模式:只使CPU的时钟停止;停止模式:所有时钟都停止。EINT7:0或RTC警告中断可使功耗管理从停止模式中唤醒。,五、中断控制器30个中断源(1个看门狗定时器中断,6个定时器中断,6个UART中断,8个外部中断,4个DMA中断,2个RTC中断,1个ADC中断,1个IIC中断,1个SIO中断);矢量IRQ中断模式减少中断响应周期;外部中断源的电平边沿模式;可编程的电平边沿极性;支持紧急中断请求的FIQ(快速中断请求)。,六、带PWM的定时器(脉宽可调制)5个16位带PWM的定时器,1个16位基于DMA或基于中断的内部定时器;可编程的工作周期、频率和极性;死区(Dead-zone)产生器;支持外部时钟源。,七、实时时钟RTC全时钟特点:毫秒、秒、分、时、天、星期、月、年;运行于32.768KHz;CPU唤醒的警告中断;时间滴答(Timetick)中断。八、通用输入输出端口8个外部中断端口;71个(多功能)复用输入输出口。,九、UART2个基于DMA或基于中断的UART;支持5位、6位、7位、8位串行数据传送/接收;在传送/接收时支持硬件握手;波特率可编程;支持IrDA1.0(115.2kbps);用于回环测试模式;每个通道有2个用于接收和发送的内部32字节FIFO。,十、DMA控制器2路通用的无CPU干涉的DMA控制器;2路桥式DMA(外设DMA)控制器;支持I/O到内存、内存到IO、IO到IO的桥式DMA传送,有6种DMA请求方式:软件、4个内部功能块(UART、SIO、实时器、IIS)和外部管脚;DMA之间优先级次序可编程;突发传送模式提高了FPDRAM、EDODRAM和SDRAM的传送率;支持内存到外围设备的fly-by模式和外围设备到内存的传送模式。,十一、A/D转换8通道多路ADC;最大转换速率100KSPS/10位。十二、LCD控制器支持彩色单色灰度LCD;支持单扫描和双扫描显示;支持虚拟显示功能;系统内存可作为显示内存;专用DMA用于从系统内存中提取图像数据;可编程屏幕大小;灰度:16级;彩色模式:256色。,十三、看门狗定时器16位看门狗定时器;定时中断请求或系统超时复位。十四、IIC总线接口1个基于中断操作的多主的IIC总线;8位双向串行数据传送器能够工作于100Kbps的标准模式和400Kbps的快速模式。十五、IIS总线接口1路基于DMA操作的音频IIS总线接口;每通道8/16位串行数据传送;支持MSB可调整的数据格式。,十六、SIO(同步串行I/0)1路基于DMA或基于中断的SIO;波特率可编程;支持8位SIO的串行数据传送/接收操作。十七、操作电压范围内核:2.5V;I/O:3.0V3.6V。十八、运行频率最高达66MHz。十九、封装160LQFP/160FBGA。,6.1.3S3C44B0X功能结构框图,S3C44B0X的体系结构的功能框图如图6-1所示。图6-1S3C44B0微处理器体系结构框图,6.1.4S3C44B0X引脚信号描述,S3C44B0X引脚按以下几种功能详细列表描述信号功能。,一、总线控制信号S3C44B0的X总线控制信号的引脚,二、DRAM/SDRAM/SRAM,三、LCD控制信号,四、TIMER/PWM控制信号,五、中断控制信号,六、DMA控制信号的引脚,6.2S3C44B0X存储控制器功能及应用开发,6.2.1S3C44B0X存储控制器概6.2.2S3C44B0X存储器空间划分简述6.2.3S3C44B0X存储控制器功能描述6.2.4S3C44B0X存储控制器的特殊功能寄存器6.2.5S3C44B0X存储器应用编程,6.2.1S3C44B0X存储控制器概,在基于ARM核的嵌入式应用系统中可能包含多种类型的存储器件,如Flash、ROM、SRAM和SDRAM等。而且不同类型的存储器件要求不同的速度、数据宽度等,为了实现对这些不同速度、类型、总线宽度的存储器进行管理,存储器管理控制器是必不可少的。在基于S3C44B0X处理器的嵌入式系统开发中,也是通过存储控制器为片外存储器访问提供必要的控制信号,管理片外存储部件。,6.2.2S3C44B0X存储器空间划分简述,特殊功能寄存器位于0 x01C00000到0 x02000000的4M空间内;Bank0-Bank5的起始地址和空间大小都是固定的;Bank6的起始地址是固定的,空间可以配置为2/4/8/16/32M。参考表6-16可访问区域4M特殊功能寄存器Bank7的空间大小和Bank6一样是可变的,也可以配置为2/4/8/16/32M。,6.2.3S3C44B0X存储控制器功能描述,6.2.4S3C44B0X存储控制器的特殊功能寄存器,6.2.5S3C44B0X存储器应用编程,下面给出了存储器的几个编程实例,包括存储控制寄存器的配置、存储器的读写,通过一个简单例子,使学生对存储器的应用编程有一定的了解。,13个存储控制寄存器的配置示例,观察上面寄存器介绍中的寄存器地址可以发现,13个寄存器分布在从0 x01c80000开始的连续地址空间,所以上面的程序先将各个寄存器需要配置的值从起始地址为SMRDATA的区域取出来,然后可以利用指令“stmiar0,r1-r13”实现将配置好的寄存器的值依次写入到相应的寄存器中,这就完成了存储器13个控制寄存器的配置。,6.3S3C44B0XI/O端口功能及应用开发,6.3.1S3C444B0XI/O功能概述6.3.2S3C444B0X端口功能配置6.3.3S3C444B0X端口功能控制描述6.3.4S3C444B0XI/O端口的特殊功能寄存器6.3.5S3C444B0XI/O端口应用编程,6.3.1S3C444B0XI/O功能概述,S3C44B0X有71个通用可编程多功能输入输出引脚,可分为以下7类端口:两个9位输入输出端口(PortE和PortF);两个8位输入输出端口(PortD和PortG);一个16位输入输出端口(PortC);一个10位输出端口(PortA);一个11位的输出端口(PortB)。,6.3.2S3C444B0X端口功能配置,每个端口都可以通过软件设置来满足各种各样的系统设置和设计要求。每个端口的功能通常都要在主程序开始前被定义。如果一个引脚的多功能没有使用,那么这个引脚将被设置为I/O端口。在引脚配置以前,需要对引脚的初始化状态进行设定来避免一些问题的出现。,6.2.3S3C44B0X存储控制器功能描述,I/O端口的各种功能主要是通过对端口各个寄存器进行设置而实现的,下面通过对各个寄存器的说明来分别介绍I/O端口所能完成的功能。端口配置寄存器(PCONA-G):在S3C44B0X里,大多数的引脚都是多功能引脚。因此,应当为每个引脚选择功能。端口控制寄存器(PCONn)决定了每一个引脚的功能。如果PG0-PG7在掉电模式下被用做唤醒信号,则在中断模式里这些端口必须被设定。端口数据寄存器(PDATA-G):如果这些端口被设定为输出端口,输出数据可以被写入到PDATn的相应的位;如果被设定为输入端口,输入数据可以被读到PDATn的相应的位。端口上拉寄存器(PUPC-G):端口上拉寄存器控制着每一个端口组的上拉寄存器的使能端。当相应的位被设为0时,引脚接上拉电阻;当相应的位为1时,引脚不接上拉电阻。,特殊的上拉电阻控制寄存器(SPUCR)数据线D15:0引脚的上拉电阻能够通过SPUPCR寄存器控制。在STOP/SL-IDLE模式里,数据线(D31:0或D15:0)处于高阻状态(Hi-zstate)。由于I/O端口的特征,在STOP/SL-IDLE模式里,数据线上拉电阻可以降低功耗。D31:16引脚的上拉电阻能够通过PUPC寄存器来控制;D15:0引脚上拉电阻能够通过SPUCR寄存器来控制。在STOP模式中,为了保护存储器不出现错误功能(mal-function),存储器控制信号通过在特殊的上拉电阻控制寄存器里设置HZSTOP区域来选择高阻状态(Hi-zstate)或先前的状态。,外部中断控制寄存器:8个外部中断可以用各种信号所请求。外部中断寄存器为外部中断设置了信号触发方法选择位,也设置了触发信号的极性选择位。外部中断请求信号触发的方法有以下几种:低电平触发、高电平触发、下降沿触发、上升沿触发、双沿触发。8个外部中断寄存器的具体设置情况请详见I/O的特殊功能寄存器。因为每个外部中断引脚都有一个数字滤波器,这让中断控制器能够识别长于3个时钟周期的请求信号。,外部中断挂起寄存器(EXTINTPND)外部中断请求(4/5/6/7)对于中断控制器来说是“或”的关系。EINT4、EINT5、EINT6、EINT7共享在中断控制器里同一个中断请求队列。如果外部中断请求的4位中的任何一位被激活的话,那么EXTINPNDn将会被设置为1。外部挂起条件清除以后,中断服务程序必须清除中断挂起状态。通过EXTINPND对应位写1来清除挂起条件。,6.3.4S3C444B0XI/O端口的特殊功能寄存器,6.3.5S3C444B0XI/O端口应用编程,6.5S3C44B0XUART接口功能及应用开发,6.5.1S3C444B0XUART概述6.5.2S3C444B0XUART的操作6.5.3S3C444B0XUART的特殊功能寄存器6.5.4S3C444B0XUART应用编程,6.5.1S3C444B0XUART概述,S3C44B0X的UART单元提供两个独立的异步串行I/O口((AsynchronousSerialI/O,SIO)),每个通信口均可工作于中断和或DMA模式。也即UART能产生内部中断请求或DMA请求,在CPU和串行I/O口之间传送数据。它支持高达115.2Kbps的传输速率,每一个UART通道包含了两个16位的分别用于接收和发送信号的FIFO(先进先出)通道。S3C44B0X的UART单元特性包括:波特率可编程基于DMA或中断操作的RxD0、RxD1、TxD0、TxD1;UART通道0支持红外发送与接收;UART通道1支持红外发送与接收;支持握手方式传输与发送。,6.5.2S3C444B0XUART的操作,数据传输数据接收自动流控制AFC(AutoFlowControl)非自动流控制(nRTS和nCTS由S/W所控制)中断/DMA请求的产生UART错误状态FIFO波特率的产生回环(Loop-back)模式红外模式,6.5.3S3C444B0XUART的特殊功能寄存器,在UART操作中,主要是通过对UART特殊寄存器进行设置来对UART操作进行控制。UART的特殊功能寄存器包括UART的控制寄存器、状态寄存器、保持寄存器、波特率分频寄存器等等。,6.5.4S3C444B0XUART应用编程,6.6S3C44B0X中断控制器功能及应用开发,6.6.1S3C444B0X中断概述6.6.2S3C444B0X中断控制器的操作6.6.3S3C444B0X中断源6.6.4S3C444B0X矢量中断模式(仅针对IRQ)6.6.5S3C444B0X矢量中断模式的程序举例6.6.6S3C444B0X中断控制器的特殊功能寄存器6.6.7S3C444B0X中断控制器应用编程,6.6.1S3C444B0X中断概述,S3C44B0X的中断控制器可以接受接收来自30个中断源的中断请求。这些中断源来自DMA、UART、SIO等这样的芯片内部外围或接口芯片的外部引脚。在这些中断源中,有4个外部中断(EINT4/5/6/7)是逻辑或的关系,它们共用一条中断请求线。UART0和UART1的错误中断也是逻辑或的关系。中断控制器的任务是在片内外围和外部中断源组成的多重中断发生时,经过优先级判断选择其中一个中断通过FIQ或IRQ向ARM7TDMI内核发出FIQ或IRQ中断请求。实际上最初ARM7TDMI内核只有FIQ(快速中断请求)和IRQ(通用中断请求)两种中断,其它中断都是各个芯片厂家在设计芯片时定义的,这些中断根据中断的优先级高低来进行处理。例如,如果你定义所有的中断源为IRQ中断(通过中断模式设置),当同时有10个中断发出请求时,可以通过读中断优先级寄存器来确定哪一个中断将被优先执行。一般的中断模式在进入所需的服务程序前需要很长的中断反应时间,为了解决这个问题,S3C44B0X提供了一种新的中断模式叫做矢量中断模式,它具有CISC结构微控制器的特征,能够减少中断反应时间。换句话说S3C44B0X的中断控制器硬件本身直接提供了对矢量中断服务的支持。,6.6.2S3C444B0X中断控制器的操作,程序状态寄存器的F位和I位如果CPSR程序状态寄存器的F位被设置为1,那么CPU将不接受接收来自中断控制器的FIQ(快速中断请求);如果CPSR程序状态寄存器的I位被设置为1,那么CPU将不接受接收来自中断控制器的IRQ(中断请求)。因此,为了使能FIQ和IRQ,必须先将CPSR程序状态寄存器的F位和I位清零,并且中断屏蔽寄存器INTMSK中相应的位也要清零。中断模式(INTMOD)ARM7TDMI提供了2种中断模式:FIQ模式和IRQ模式。所有的中断源在中断请求时都要确定使用哪一种中断模式。,中断挂起寄存器(INTPND)用于指示对应的中断是否被激活。当中断挂起位被设置时,只要相应的标志I或标志F被清零,相应的中断服务程序都将会被执行。中断挂起寄存器是只读寄存器,所以在中断服务程序中必须加入对I_ISPC和F_ISPC写1的操作来清除挂起条件。中断屏蔽寄存器(INTMSK)当INTMSK寄存器的屏蔽位为1时,对应的中断被禁止;当INTMSK寄存器的屏蔽位为0时,则对应的中断正常执行。如果一个中断的屏蔽位为1,在该中断发出请求时挂起位还是会被设置为1。如果中断屏蔽寄存器的全局屏蔽位(globalbit)设置为1,那么在中断发出请求时相应的中断挂起位会被设置,但所有的中断请求都不被执行。,6.6.3S3C444B0X中断源,在30个中断源中,对于中断控制器来说有26个中断源是单独的,4个外部中断(EINT4/5/6/7)是逻辑或的关系,它们共用同一个中断源,另外两个UART错误中断(UERROR0/1)也是共用同一个中断控制器。,6.6.4S3C444B0X矢量中断模式(仅针对IRQ),S3C44B0X支持矢量中断模式,可以减少中断的反应时间。通常情况下ARM7TDMI内核收到来自中断控制器的IRQ中断请求,ARM7TDMI会在0 x00000018地址处执行一条指令。但是在矢量中断模式下,当ARM7TDMI从0 x00000018地址处取指令的时候,中断控制器会在数据总线上加载分支指令,这些分支指令使程序计数器能够对应到每一个中断源的向量地址。这些跳转到每一个中断源向量地址的分支指令可以由中断控制器产生。例如,假设EINT0是IRQ中断,EINT0的向量地址为0 x20,所以中断控制器必须产生从0 x18到0 x20的分支指令。因此,中断控制器产生的机器码为0 xea000000。在各个中断源对应的中断向量地址中,存放着跳转到相应中断服务程序的程序代码,在相应向量地址处分支指令的机器代码是这样计算的:,矢量中断模式的指令机器代码=0 xea000000+(-0 x8)2)例如,如果Timer0中断采用矢量中断模式,则跳转到对应中断服务程序的分支指令应该存放在向量地址0 x00000060处。中断服务程序的起始地址在0 x10000,下面就是计算出来放在0 x60处的机器代码:机器代码0 x00000060:0 xea000000+(0 x10000-0 x60-0 x8)2)0 xea000000+0 x3fe60 xea003fe6通常机器代码都是反汇编后自动产生的,因此不必真正象上面这样去计算。,6.7.2S3C444B0X时钟电源管理器功能描述,时钟发生器时钟源选择PLL(PHASE-LOCKED-LOOP锁相环)时钟控制逻辑电源管理,6.7.3S3C444B0X时钟发生器MDIV=59,PDIV=6,SDIV=1PLL值选择向导Fpllo*2s必须小于170MHz。S的值应该尽可能的大。(Fin/p)建议等于或大于1Mhz,但必须满足(Fin/p)2Mhz.,6.16基于S3C44B0的S3CEV40开发介绍,6.16.1S3CEV40基本功能介绍6.16.2S3CEV40X外围接口硬件资源简介,6.16.1WL-S3C44B0基本功能介绍,S3CEV40板的电源:由变压器或经由USB接PC,通过PC的5V电源供电,经稳压管输出3.3V、2.5V电压,分别给I/O口和CPU内核供电,同时设有电源指示LED.2个串口DB9,其中一个为简单接口,一个为全接线接口,可跳接RS232MODOM;一个复位开关;一个IDE接口;一个LCD;一个20针JTAG接口;一个USB接口;一个41键盘接口;,4个220针的CPU扩展接口;一个RJ45以太网接口,支持10MBps是传输速率;一个音频信号输出口,可接双声道扬声器(SPEAKER);一块1M16位的多功能(Multy-purpose)Flash;一块41M16位SDRM;支持IICBUS的4Kbit的串行EEPROMS;,6.16.2WL-S3C44B0外围接口硬件资源简介,片选信号设置,二.外围地址空间分配,三.44B0XI/O口分配及结构、地址。PortA:,PCONA地址:0 x01D20000PDATA地址:0 x01D20004PCONA复位值:0 x1FF,PortB:,PCONB地址:0 x01D20008PDATB地址:0 x01D2000CPCONB复位值:0 x04F,PortC,PCONC地址:0 x01D20010PDATC地址:0 x01D20014PUPC地址:0 x01D20018PCONC复位值:0 x0FF0FFFF,PortD,PCOND地址:0 x01D2001CPDATD地址:0 x01D20020PUPD地址:0 x01D20024PCOND复位值:0 xAAAA,PortE,PCONE地址:0 x01D20028PDATE地址:0 x01D2002CPUPE地址:0 x01D20030PCONE复位值:0 x25529,PortF,PCONF地址:0 x01D20034PDATF地址:0 x01D20038PUPF地址:0 x01D2003CPCONF复位值:0 x09256A,PortG,PCONG地址:0 x01D20040PDATG地址:0 x01D20044PUPG地址:0 x01D20048PCONG复位值:0 x5FFF,6.17S3C44B0启动程序设计,本节详细讲述S3C44B0启动程序设计。,下面的代码是S3C44B0的启动程序源代码及其解释,为节省篇幅,部分相似的中断入口定义和函数宏定义被省略,省略部分以代替并加上了注释,读者如果要使用下面的源代码作为启动程序必须自行添加省略部分。#*#文件名:INIT.S#说明:S3c44B0启动文件*#*,#=#寄存器定义及其位定义#=.equINTMSK,0 x01e0000c.equWTCON,0 x01d30000.equCLKCON,0 x01d80004.equLOCKTIME,0 x01d8000c.equFIQMODE,0 x11.equIRQMODE,0 x12.equSVCMODE,0 x13.equABORTMODE,0 x17.equUNDEFMODE,0 x1b.equMODEMASK,0 x1f.equNOINT,0 xc0,#=#中断处理宏#=.macroHANDLERHandleLabelsubsp,sp,#4栈空间递减保存跳转地址stmfdsp!,r0保存工作寄存器r0到栈ldrr0,=HandleLabel载入中断入口地址所在位置到r0ldrr0,r0载入中断入口地址到r0strr0,sp,#4保存中断入口地址到栈ldmfdsp!,r0,pc恢复工作寄存器并跳转到中断函数.endm#=,#设置ARM7中断和异常向量#=ENTRY:bResetHandlerS3C44B0复位后从此处执行bHandlerUndef未定义异常向量bHandlerSWI软中断向量bHandlerPabort取指异常向量bHandlerDabort取数据异常向量b.保留bHandlerIRQ中断向量bHandlerFIQ快速中断向量#=,#设置44B0中断向量表#=VECTOR_BRANCH:ldrpc,=HandlerEINT0mGAH/Winterruptvectortableldrpc,=HandlerEINT1省略ldrpc,=HandlerADCmGKB省略b.#=#中断向量处理宏,#=HandlerFIQ:HANDLERHandleFIQHandlerIRQ:HANDLERHandleIRQHandlerUndef:HANDLERHandleUndefHandlerSWI:HANDLERHandleSWIHandlerDabort:HANDLERHandleDabortHandlerPabort:HANDLERHandlePabortHandlerADC:HANDLERHandleADC省略HandlerEINT1:HANDLERHandleEINT1HandlerEINT0:HANDLERHandleEINT0,#=#中断向量处理宏#=ResetHandler:ldrr0,=WTCON看门狗禁止ldrr1,=0 x0strr1,r0ldrr0,=INTMSKldrr1,=0 x07ffffff所有中断禁止strr1,r0#=,#设置时钟控制控制器#=ldrr0,=LOCKTIMEldrr1,=0 xfffstrr1,r0ldrr0,=CLKCONldrr1,=0 x7ff8所有模块的时钟开启strr1,r0#=#设置存储区控制器#=ldrr0,=SMRDATAldmiar0,r1-r13ldrr0,=0 x01c80000stmiar0,r1-r13#=,#初始化栈空间#=ldrsp,=SVCStack切换到超级用户栈空间blInitStacks#=#引入外部符号,符号定义在链接脚本文件中#=.externImage_RO_Limit只读区域大小.externImage_RW_Base可读写存储区域起始地址.externImage_ZI_Base清零区域起始地址.externImage_ZI_Limit清零区域大小,#=#初始化C代码需要使用的存储区#=LDRr0,=Image_RO_Limit获取只读区域大小LDRr1,=Image_RW_Base获取可读写区域起始地址LDRr3,=Image_ZI_Base获取清零区域起始地址CMPr0,r1比较只读区域和可读写区域是否重叠BEQLOOP1LOOP0:CMPr1,r3拷贝程序中.data数据段内容到读写区域LDRCCr2,r0,#4STRCCr2,r1,#4BCCLOOP0LOOP1:LDRr1,=Image_ZI_Limit从清零区域顶部开始MOVr2,#0,LOOP2:CMPr3,r1清零STRCCr2,r3,#4BCCLOOP2#=#进入C语言程序入口#=#.extern_main#BL_main#=#初始化栈空间的函数#=,InitStacks:mrsr0,cpsrbicr0,r0,#MODEMASKorrr1,r0,#UNDEFMODE|NOINTmsrcpsr_cxsf,r1ldrsp,=UndefStack设置未定义异常栈空间orrr1,r0,#ABORTMODE|NOINTmsrcpsr_cxsf,r1ldrsp,=AbortStack设置异常栈空间orrr1,r0,#IRQMODE|NOINTmsrcpsr_cxsf,r1ldrsp,=IRQStack设置中断栈空间,orrr1,r0,#FIQMODE|NOINTmsrcpsr_cxsf,r1ldrsp,=FIQStack设置快速中断栈空间bicr0,r0,#MODEMASK|NOINT

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论