为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

2410初始化代码

2017-11-12 7页 doc 23KB 27阅读

用户头像

is_751406

暂无简介

举报
2410初始化代码2410初始化代码 实验目的 , 了解ARM初始化代码的编写( 实验设备 , 硬件:PC机。 , 软件:ADS1.2集成开发环境,Windows 2000/XP/2003。 实验步骤 1、启动ADS1.2,打开初始化项目文件. 2、编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。 3、在Startup.s的“B Main”处设置断点,然后全速运行程序。 4、程序在断点处停止,单步运行程序,判断程序是否跳转到C程序中运行。 5、选择Processor Views|Variables...
2410初始化代码
2410初始化代码 实验目的 , 了解ARM初始化代码的编写( 实验设备 , 硬件:PC机。 , 软件:ADS1.2集成开发环境,Windows 2000/XP/2003。 实验步骤 1、启动ADS1.2,打开初始化项目文件. 2、编译连接工程,选择Project|Debug,启动AXD进行软件仿真调试。 3、在Startup.s的“B Main”处设置断点,然后全速运行程序。 4、程序在断点处停止,单步运行程序,判断程序是否跳转到C程序中运行。 5、选择Processor Views|Variables打开变量观察窗口,观察全局变量的值,单步、全速运行 程序,判断程序的运算结果是否正确。 实验参考程序 2410初始化汇编程序代码: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; ;;; Copyright (c) 2004-2007 threewater@up-tech.com, All rights reserved. ;;; ;;; Startup Code for ;;; S3C2410 : Startup.s ;;;; by threewater 2005.2.22 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GET 2410addr.s ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Some ARM920 CPSR bit discriptions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Pre-defined constants USERMODE EQU 0x10 FIQMODE EQU 0x11 IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABORTMODE EQU 0x17 UNDEFMODE EQU 0x1b MODEMASK EQU 0x1f NOINT EQU 0xc0 I_Bit * 0x80 F_Bit * 0x40 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; MMU Register discription ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;p15 CP 15 ;c0 CN 0 ;c1 CN 1 ;c2 CN 2 ;c3 CN 3 CtrlMMU * 1 CtrlAlign * 2 CtrlCache * 4 CtrlWBuff * 8 CtrlBigEnd * 128 CtrlSystem * 256 CtrlROM * 512 ;initialization L0 is MMU FULL_ACCESS, DOMAIN, SECTION TLB_L0_INIT * 0x0C02 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Start here ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; AREA Init,CODE,READONLY IMPORT __use_no_semihosting_swi IMPORT Enter_UNDEF IMPORT Enter_SWI IMPORT Enter_PABORT IMPORT Enter_DABORT IMPORT Enter_FIQ ENTRY b ColdReset b Enter_UNDEF ;UndefinedInstruction b Enter_SWI ;syscall_handler or SWI b Enter_PABORT ;PrefetchAbort b Enter_DABORT ;DataAbort b . ;ReservedHandler b IRQ_Handler ;IRQHandler b Enter_FIQ ;FIQHandler ;deal with IRQ interrupt EXPORT IRQ_Handler IRQ_Handler IMPORT ISR_IrqHandler STMFD sp!, {r0-r12, lr} BL ISR_IrqHandler LDMFD sp!, {r0-r12, lr} SUBS pc, lr, #4 ;======= ; ENTRY ;======= EXPORT ColdReset ColdReset ldr r0,=WTCON ;watch dog disable ldr r1,=0x0 str r1,[r0] ldr r0,=INTMSK ldr r1,=0xffffffff ;all interrupt disable str r1,[r0] ldr r0,=INTSUBMSK ldr r1,=0x7ff ;all sub interrupt disable, 2002/04/10 str r1,[r0] ;**************************************************** ;* Initialize stacks * ;**************************************************** bl InitStacks ; Stack Setup for each MODE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; copy excption table to sram at 0x0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IMPORT |Load$$EXCEPTION_EXEC$$Base| IMPORT |Image$$EXCEPTION_EXEC$$Base| IMPORT |Image$$EXCEPTION_EXEC$$Length| ldr r0, =|Load$$EXCEPTION_EXEC$$Base| ;source data ldr r1, =|Image$$EXCEPTION_EXEC$$Base| ;place exception talbe at 0x0 ldr r2, =|Image$$EXCEPTION_EXEC$$Length| exception_cploop sub r2, r2, #4 ldmia r0!, {r3} stmia r1!, {r3} cmp r2, #0 bge exception_cploop ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; start main function in C language ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; IMPORT __main BL __main ;Don't use main() because ...... B . ;**************************************************** ;* The function for initializing stack * ;**************************************************** IMPORT UserStack IMPORT SVCStack IMPORT UndefStack IMPORT IRQStack IMPORT AbortStack IMPORT FIQStack InitStacks ;Don't 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,r1' mrs r0,cpsr bic r0,r0,#MODEMASK orr r1,r0,#UNDEFMODE|NOINT msr cpsr_cxsf,r1 ;UndefMode ldr sp,=UndefStack orr r1,r0,#ABORTMODE|NOINT msr cpsr_cxsf,r1 ;AbortMode ldr sp,=AbortStack orr r1,r0,#IRQMODE|NOINT msr cpsr_cxsf,r1 ;IRQMode ldr sp,=IRQStack orr r1,r0,#FIQMODE|NOINT msr cpsr_cxsf,r1 ;FIQMode ldr sp,=FIQStack ;bic r0,r0,#MODEMASK|NOINT orr r1,r0,#SVCMODE|NOINT msr cpsr_cxsf,r1 ;SVCMode ldr sp,=SVCStack ;USER mode is not initialized. mov pc,lr ;The LR register may be not valid for the mode changes. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;; End of Startup.c ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END 实验结论 实验总结及心得体会
/
本文档为【2410初始化代码】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索