ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:29.91KB ,
资源ID:7886295      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7886295.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一 ARM汇编程序的编写以及启动代码的分析.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验一 ARM汇编程序的编写以及启动代码的分析.docx

1、实验一 ARM汇编程序的编写以及启动代码的分析实验 ARM汇编程序的编写以及启动代码的分析一、实验目的:练习ARM汇编程序的编写,对提供的程序的启动代码进行分析,了解S3C2410初始化过程, 初始化代码主要是包含在start.s中。二、实验原理: 启动程序要完成的任务包括:硬件初始化,系统存储系统的配置,复制二级中断向量表。启动程序过程 系统硬件初始化 系统上电或复位后,程序从位于地址0x0的Reset Exception Vector处开始执行,因此需要在这里放置Bootloader的第一条指令:b ResetHandler,跳转到标号为ResetHandler处进行第一阶段的硬件初始化,

2、执行完,系统进行堆栈和存储器的初始化。使用了外设,则需要设置相关的寄存器,确定其刷新频率、总线宽度等信息。 代码段复制到RAM中运行 需要把系统的代码复制到RAM中运行。映像文件内部共有三种输出段:RO段、RW段和ZI段。ARMLink同时还产生了这三种输出段的起始和终止定位信息:Image$RO$Base、Image$RO$Limit、Image$RW$Base、Image$RW$Limit、Image$ZI$Base和Image$ZI$Limit。可以在程序中使用这些定位信息。将ROM中的代码和数据搬移到RAM中。 建立二级中断向量表 在ARM系统中,中断向量表位于0X0开始的地址处,意味

3、着无论运行什么样的上层软件,一旦发生中断,程序就得到Flash存储器中的中断向量表里去,降低系统的运行效率。因此在RAM中建立自己的二级中断向量表,当中断发生后,程序直接从RAM中取中断向量进入中断子程序。尤其是在中断频繁发生的系统里,这种方法可以大大提高系统的运行效率。三、实验内容:1运行一个简单的串口程序,单步执行初始化代码,观察寄存器变化。2分析系统上电后的初始化工作包括哪些内容。3分析中断的处理过程,包括中断向量表的建立、中断源的识别及中断IRQ服务程序是如何进入的。4分析应用程序的结构。四、实验代码:在系统上电后,初始化部分的工作注意包含以下部分:1、 关看门狗定时器2、 屏蔽所有中

4、断3、 设置CPU时钟频率。4、 设置存储器控制寄存器,对外部存储器的参数进行设置。5、 初始化各模式下的堆栈6、 建立IRQ中断的总的入口地址7、 初始化应用程序的执行环境8、 跳入Main函数,进入C程序;= ; NAME: 2410INIT.S ; DESC: C start up codes ; Configure memory, ISR ,stacks ; Initialize C-variables ; HISTORY: ; 2002.02.25:kwtark: ver 0.0 ; 2002.03.20:purnnamu: Add some functions for testin

5、g STOP,POWER_OFF mode ;= GET option.s ;GET相当INCLUDE 将一个源文件包含到当前源文件,这里表示包含option.s,并在当前位置进行汇编 GET memcfg.s GET 2410addr.s BIT_SELFREFRESH EQU (1 mrc p15,0,r0,c1,c0,0 DCD 0xe3800080 ;0xe3800080 = orr r0,r0,#0x80; /Big-endian DCD 0xee010f10 ;0xee010f10 = mcr p15,0,r0,c1,c0,0 ENTRY_BUS_WIDTH=16 ;if ENTR

6、Y_BUS_WIDTH=16 DCD 0x0f10ee11 DCD 0x0080e380 DCD 0x0f10ee01 ENTRY_BUS_WIDTH=8 ;if ENTRY_BUS_WIDTH=8 DCD 0x100f11ee DCD 0x800080e3 DCD 0x100f01ee DCD 0xffffffff ;swinv 0xffffff is similar with NOP and run well in both endian mode. DCD 0xffffffff DCD 0xffffffff DCD 0xffffffff DCD 0xffffffff b ResetHan

7、dler ;复位处理程式 ;Function for entering power down mode; 1. SDRAM should be in self-refresh mode.; 2. All interrupt should be maksked for SDRAM/DRAM self-refresh.; 3. LCD controller should be disabled for SDRAM/DRAM self-refresh.; 4. The I-cache may have to be turned on. ; 5. The location of the followi

8、ng code may have not to be changed. ;进入掉电模式功能; 1. SDRAM 必须在自刷新模式.; 2. 所有中断必须屏蔽 for SDRAM/DRAM self-refresh.; 3. LCD 关闭for SDRAM/DRAM self-refresh.; 4. The I-cache 可能需要开启. ; 5. The location of the following code may have not to be changed.;void EnterPWDN(int CLKCON); ;进入掉电模式 EnterPWDN mov r2,r0 ;r2=r

9、CLKCON CLKCON3掉电模式控制位 0:关闭 1:进入掉电模式 tst r0,#0x8 ; POWER_OFF mode?判断POWER_OFF 是否为0 。r0和#0X8相与,更新CPSR位 bne ENTER_POWER_OFF ;NE 不相等(则表示power_off不为O) 标志位Z=0 ENTER_STOP ;不进入掉电模式 ldr r0,=REFRESH ;0x48000024 ;DRAM/SDRAM refresh DRAM/SDRAM 刷新控制器,刷新DRAM/SDRAM ldr r3,r0 ;r3=rREFRESH mov r1, r3 ;r1=r3 orr r1,

10、r1, #BIT_SELFREFRESH ;BIT_SELFREFRESH EQU (1R0 Enable SDRAM self-refresh ;B是向后搜索局部标号, %F是向前搜索局部标号。 mov r1,#16 ;延时 wait until self-refresh is issued. may not be needed. 0 subs r1,r1,#1 ;0为局部标号(延时) bne %B0 ldr r0,=CLKCON ;enter STOP mode. CLKCON ;Clock generator control str r2,r0 mov r1,#32 0 subs r1,

11、r1,#1 ;1)延时 wait until the STOP mode is in effect. bne %B0 ;2) Or wait here until the CPU&Peripherals will be turned-off ; Entering POWER_OFF mode, only the reset by wake-up is available. ldr r0,=REFRESH ;exit from SDRAM self refresh mode. str r3,r0 MOV_PC_LR ;调用宏MOV_PC_LR ENTER_POWER_OFF ;进入掉电模式 ;N

12、OTE. ;1) rGSTATUS3 should have the return address after wake-up from POWER_OFF mode. ldr r0,=REFRESH ldr r1,r0 ;r1=rREFRESH orr r1, r1, #BIT_SELFREFRESH str r1, r0 ;Enable SDRAM self-refresh mov r1,#16 ;Wait until self-refresh is issued,which may not be needed. 0 subs r1,r1,#1 ;延时 bne %B0 ldr r1,=MISCCR ; ;Miscellaneous control,混杂控制模式 ldr r0,r1 orr r0,r0,#(70, SCL

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1