嵌入式系统实验报告

上传人:豆浆 文档编号:25744320 上传时间:2017-12-17 格式:DOC 页数:29 大小:10.31MB
返回 下载 相关 举报
嵌入式系统实验报告_第1页
第1页 / 共29页
嵌入式系统实验报告_第2页
第2页 / 共29页
嵌入式系统实验报告_第3页
第3页 / 共29页
嵌入式系统实验报告_第4页
第4页 / 共29页
嵌入式系统实验报告_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《嵌入式系统实验报告》由会员分享,可在线阅读,更多相关《嵌入式系统实验报告(29页珍藏版)》请在金锄头文库上搜索。

1、嵌入式系统实验报告班级_姓名_学号_王新华 编写信息与电子工程学院2008 年 4 月嵌入式系统实验报告 信息与电子工程学院1实验 1 S3C2410 启动程序实验一、试验目的:1、熟悉 ADS 软件的使用。2、熟悉汇编语言程序结构和 C 语言程序结构。3、掌握 ARM 的异常向量表和堆栈定义。3、掌握 ADS 环境中代码的调试方法。二、实验仪器及设备:安装有 ADS 软件的 PC 机一台。三、实验步骤:1. 点击 D 盘“Embedded system expEXP1”文件夹下的工程文件 exp1.mcp,打开工程进入“Metrowerks CodeWarrior for ARM Devel

2、oper Suite v1.2”调试界面。2. 找到 Startup.s 文件并打开,阅读汇编语言代码,理解其中的向量定义语句和各常量及变量定义语句。3. 按图 1-1 所示点击 Make 按钮编译工程,之后点击 Debug 按钮启动 AXD 调试界面,运行调试该代码,采用单步和设断点的方式,观察各指令的运行结果。图 1-14. 进入 AXD 调试环境后,在代码区域点击鼠标右键,显示图 1-2 的菜单项,选择其中的Disassembly 项,进入反汇编状态,可以查看各异常向量的向量地址、各程序标号的地址值、去除伪指令后的实际代码。以后每执行一条语句会自动切换回源代码状态,如果需要查看地址要按同

3、样的方法重新切换到反汇编状态。5. 选择菜单 Processor Views 中的 Registers 项,打开寄存器窗口,如图 1-3 所示,在代码执行过程中观察寄存器的值。嵌入式系统实验报告 信息与电子工程学院2图 1-2图 1-36. 选择菜单 Processor Views 中的 Memory 项,如图 1-4 所示,打开存储器窗口,如图 1-5 所示,该窗口将显示在界面的下端。如果想观察某一个存储地址的值,在地址栏输入地址(十六进制)后回车即可。注意存储器值的存放格式。7. 如果想关闭某一个窗口,只要在相应的窗口中点击鼠标右键,选择 Close 即可。8. 在代码调试时采用单步 st

4、ep (F10)、单步进入 step in(F8)及设置断点(F9)几种方式。在某一行代码位置设置断点时,用鼠标点击该行代码然后按 F9 即可,该行将显示红色标记,再按 F9 将取消断点。嵌入式系统实验报告 信息与电子工程学院3图 1-4图 1-59. 参考 Starup.s 程序代码,调试时完成所要求的内容。四、 Starup.s 参考代码; Some ARM920 CPSR bit discriptions;Pre-defined constantsUSERMODE EQU 0x10FIQMODE EQU 0x11IRQMODE EQU 0x12SVCMODE EQU 0x13ABORTM

5、ODE EQU 0x17UNDEFMODE EQU 0x1bMODEMASK EQU 0x1fNOINT EQU 0xc0I_Bit * 0x80F_Bit * 0x40嵌入式系统实验报告 信息与电子工程学院4; MMU Register discription;p15 CP 15;c0 CN 0;c1 CN 1;c2 CN 2;c3 CN 3CtrlMMU * 1CtrlAlign * 2CtrlCache * 4CtrlWBuff * 8CtrlBigEnd* 128CtrlSystem * 256CtrlROM * 512;initialization L0 is MMU FULL_AC

6、CESS, DOMAIN, SECTIONTLB_L0_INIT * 0x0C02; Start here;AREA Init,CODE,READONLYIMPORT _use_no_semihosting_swiIMPORT Enter_UNDEFIMPORT Enter_SWIIMPORT Enter_PABORTIMPORT Enter_DABORTIMPORT Enter_FIQENTRYb ColdResetb Enter_UNDEF ;UndefinedInstructionb Enter_SWI ;syscall_handler or SWIb Enter_PABORT ;Pre

7、fetchAbortb Enter_DABORT ;DataAbortb . ;ReservedHandlerb IRQ_Handler ;IRQHandlerb Enter_FIQ ;FIQHandler嵌入式系统实验报告 信息与电子工程学院5;deal with IRQ interruptEXPORT IRQ_HandlerIRQ_HandlerIMPORT ISR_IrqHandlerSTMFD sp!, r0-r12, lrBL ISR_IrqHandlerLDMFD sp!, r0-r12, lrSUBS pc, lr,#4;=; ENTRY ;=EXPORT ColdResetCo

8、ldResetldr r0,=WTCON ;watch dog disable ldr r1,=0x0str r1,r0ldr r0,=INTMSKldr r1,=0xffffffff ;all interrupt disablestr r1,r0ldr r0,=INTSUBMSKldr r1,=0x7ff ;all sub interrupt disable, 2002/04/10str r1,r0;*;* Initialize stacks * ;*bl InitStacks ; Stack Setup for each MODE; copy excption table to sram

9、at 0x0;IMPORT |Load$EXCEPTION_EXEC$Base|IMPORT |Image$EXCEPTION_EXEC$Base|IMPORT |Image$EXCEPTION_EXEC$Length|ldr r0, =|Load$EXCEPTION_EXEC$Base| ;source dataldr r1, =|Image$EXCEPTION_EXEC$Base| ;place exception talbe at 0x0ldr r2, =|Image$EXCEPTION_EXEC$Length|exception_cploopsub r2, r2, #4嵌入式系统实验报

10、告 信息与电子工程学院6ldmiar0!, r3stmia r1!, r3cmp r2, #0bge exception_cploop; start main function in C language;IMPORT _mainBL _main ;Dont use main() because .B .;*;* The function for initializing stack *;*IMPORT UserStackIMPORT SVCStackIMPORT UndefStackIMPORT IRQStackIMPORT AbortStackIMPORT FIQStackInitStac

11、ks;Dont use DRAM,such as stmfd,ldmfd.;SVCstack is initialized before;Under toolkit ver 2.50, msr cpsr,r1 can be used instead of msr cpsr_cxsf,r1mrs r0,cpsrbic r0,r0,#MODEMASKorr r1,r0,#UNDEFMODE|NOINTmsr cpsr_cxsf,r1 ;UndefModeldr sp,=UndefStackorr r1,r0,#ABORTMODE|NOINTmsr cpsr_cxsf,r1 ;AbortModeldr sp,=AbortStackorr r1,r0,#IRQMODE|NOINTmsr cpsr_cxsf,r1 ;IRQModeldr sp,=IRQStackorr r1,r0,#FIQMODE|NOINTmsr cpsr_cxsf,r1 ;FIQMode嵌入式系统实验报告 信息与电子工程学院7ldr sp,=FIQStack;bic r0,r0,#MODEMASK|NOINTorr r1,r0,#SVCMODE|NOINTmsr cpsr_cxsf,r1 ;SVCModeldr sp,=SVCStack;USER mode is not initialized.mov

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号