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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

44B0 Keil 启动代码详解.docx

1、44B0 Keil 启动代码详解;/*/;/* S3C2440A.S: Startup file for Samsung S3C440A */;/* This file is part of the uVision/ARM development tools. */;/* Copyright (c) 2005-2006 Keil Software. All rights reserved. */;/* This software may only be used under the terms of a valid, current, */;/* end user licence from K

2、EIL for a compatible version of KEIL software */;/* development tools. Nothing else gives you the right to use this software. */;/*/ ; 系统的工作模式设定Mode_USR EQU 0x10 ; 定义用户模式标志代码;/ 用户模式的CPSR代码Mode_FIQ EQU 0x11 ; 定义快速中断模式标志代码;/ 快中断模式的CPSR代码Mode_IRQ EQU 0x12 ; 定义普通中断模式标志代码;/ 中断模式的CPSR代码Mode_SVC EQU 0x13 ;

3、 定义管理模式标志代码;/ 管理模式的CPSR代码Mode_ABT EQU 0x17 ; 定义中止模式标志代码;/ 中止模式的CPSR代码Mode_UND EQU 0x1B ; 定义未定义模式标志代码 ;/ 未定义模式的CPSR代码Mode_SYS EQU 0x1F ; 定义系统模式(特权模式)标志代码;/ 系统(特权)模式的CPSR代码I_Bit EQU 0x80 ;/ 普通中断开关(080:打开;000:关闭)F_Bit EQU 0x40 ;/ 快速中断开关(040:打开;000:关闭);/栈配置();系统的栈空间设定UND_Stack_Size EQU 0x00000000 ;未定义SV

4、C_Stack_Size EQU 0x00000008 ;管理模式端栈长度ABT_Stack_Size EQU 0x00000000 ;中止模式端栈长度FIQ_Stack_Size EQU 0x00000000 ;快速中断模式端栈长度IRQ_Stack_Size EQU 0x00000080 ;普通中断模式模式端栈长度USR_Stack_Size EQU 0x00000400 ;用户模端栈长度ISR_Stack_Size EQU (UND_Stack_Size + SVC_Stack_Size + ABT_Stack_Size +FIQ_Stack_Size + IRQ_Stack_Size)

5、;所有的堆栈大小进行相加,得到总堆栈大小/*;/arm的汇编程序由段组成,段是相对独立的指令或数据单位,每个段由AREA伪指令定义,并定义段的属性:;/READWRITE(读写)READONLY(只读)* AREA STACK, NOINIT, READWRITE, ALIGN=3 ;开辟端栈段,段名(STACK)定义为可读可写,不初始化内存单元或将内存写0,字节对齐Stack_Mem SPACE USR_Stack_Size ;/申请栈内存空间_initial_sp SPACE ISR_Stack_SizeStack_Top EQU Stack_Mem + ISR_Stack_Size ;/

6、定义堆栈开始地址(最大地址,堆栈向下访问);/堆配置;/堆大小 (单位字节)/Heap_Size EQU 0x00000000 ;系统的堆空间设定/定义堆空间大小(配合最后的动态内存申请使用) AREA HEAP, NOINIT, READWRITE, ALIGN=3 ;/段名(HEAP)声明堆代码段(不初始化内存,可读写,字节对齐)Heap_Mem SPACE Heap_Size ;/申请堆的内存空间;时钟管理定义CLK_BASE EQU 0x4C000000 ; 时钟基地址LOCKTIME_OFS EQU 0x00 ; PLL锁定时间计数器对应基地址的偏移值MPLLCON_OFS EQU

7、0x04 ; MPLL控制 对应基地址的偏移值/认为MPLL分出三种模式:FCLK、HCLK、PCLKUPLLCON_OFS EQU 0X08 ; UPLL控制 对应基地址的偏移值/用于USB设备CLKCON_OFS EQU 0x0C ; 时钟生成控制 对应基地址的偏移值CLKSLOW_OFS EQU 0x10 ; 慢时钟控制 对应基地址的偏移值CLKDIVN_OFS EQU 0X14 ; 时钟除法器控制 对应基地址的偏移值CAMDIVN_OFS EQU 0X18 ; 摄象时钟除法器控制 对应基地址的偏移值/UPLL提供CLOCK_SETUP EQU 1 ; 时钟设置LOCKTIME_Val

8、EQU 0x0FFF0FFF ; PLL锁定时间计数器 值MPLLCON_Val EQU 0x00043011 ; MPLL控制 值UPLLCON_Val EQU 0x00038021 ; UPLL控制 值CLKCON_Val EQU 0x001FFFF0 ; 时钟生成控制 值CLKSLOW_Val EQU 0x00000004 ; 慢时钟控制 值CLKDIVN_Val EQU 0x0000000F ; 时钟除法器控制 值CAMDIVN_Val EQU 0x00000000 ; 摄象时钟除法器控制 值;Interrupt definitions ;中断定义INTOFFSET EQU 0X4A0

9、00014 ;中断请求源偏移 地址;/中断向量表;/ 中断向量地址 ;/ 中断向量表地址必须字对齐;/IntVT_SETUP EQU 1 ;中断向量设置IntVTAddress EQU 0x33ffff20 ;中断向量地址;- 存储器设定 -IRAM_BASE EQU 0x40000000 ; /内存基地址; /看门狗定义WT_BASE EQU 0x53000000 ; 看门狗基地址WTCON_OFS EQU 0x00 ; 看门狗控制 对应基地址的偏移值WTDAT_OFS EQU 0x04 ; 看门狗数据 对应基地址的偏移值WTCNT_OFS EQU 0x08 ; 看门狗记数 对应基地址的偏移

10、值WT_SETUP EQU 1 ; 看门狗设置WTCON_Val EQU 0x00000000 ; 看门狗控制WTDAT_Val EQU 0x00008000 ; 看门狗数据; 存储控制器设定MC_BASE EQU 0x48000000 ; 存储控制器基地址MC_SETUP EQU 0 ; 存储控制器设定BWSCON_Val EQU 0x22000000 ;总线宽度和等待控制BANKCON0_Val EQU 0x00000700 ;Boot ROM 控制BANKCON1_Val EQU 0x00000700 ;BANK1 控制BANKCON2_Val EQU 0x00000700 ;BANK2

11、 控制BANKCON3_Val EQU 0x00000700 ;BANK3 控制BANKCON4_Val EQU 0x00000700 ;BANK4 控制BANKCON5_Val EQU 0x00000700 ;BANK5 控制BANKCON6_Val EQU 0x00018005 ;BANK6 控制BANKCON7_Val EQU 0x00018005 ;BANK7 控制REFRESH_Val EQU 0x008404F3 ;DRAM/SDRAM 刷新 控制BANKSIZE_Val EQU 0x00000032 ;存储器大小 控制MRSRB6_Val EQU 0x00000020 ;SDRA

12、M 的模式设置寄存器 控制MRSRB7_Val EQU 0x00000020 ;SDRAM 的模式设置寄存器 控制; 存储控制器设定结束; I/O 口设定PIO_BASE EQU 0x56000000 ; 端口基地址PCONA_OFS EQU 0x00 ; 端口A控制 对应基地址的偏移值PCONB_OFS EQU 0x10 ; 端口B控制 对应基地址的偏移值PCONC_OFS EQU 0x20 ; 端口C控制 对应基地址的偏移值PCOND_OFS EQU 0x30 ; 端口D控制 对应基地址的偏移值PCONE_OFS EQU 0x40 ; 端口E控制 对应基地址的偏移值PCONF_OFS EQ

13、U 0x50 ; 端口F控制 对应基地址的偏移值PCONG_OFS EQU 0x60 ; 端口G控制 对应基地址的偏移值PCONH_OFS EQU 0x70 ; 端口H控制 对应基地址的偏移值PCONJ_OFS EQU 0xD0 ; 端口J控制 对应基地址的偏移值PUPB_OFS EQU 0x18 ; 端口B上拉控制 对应基地址的偏移值PUPC_OFS EQU 0x28 ; 端口C上拉控制 对应基地址的偏移值PUPD_OFS EQU 0x38 ; 端口D上拉控制 对应基地址的偏移值PUPE_OFS EQU 0x48 ; 端口E上拉控制 对应基地址的偏移值PUPF_OFS EQU 0x58 ;

14、端口F上拉控制 对应基地址的偏移值PUPG_OFS EQU 0x68 ; 端口G上拉控制 对应基地址的偏移值PUPH_OFS EQU 0x78 ; 端口H上拉控制 对应基地址的偏移值PUPJ_OFS EQU 0xD8 ; 端口J上拉控制 对应基地址的偏移值;-端口 配置-PIO_SETUP EQU 0;端口APIOA_SETUP EQU 0PCONA_Val EQU 0x000003FF;端口BPIOB_SETUP EQU 0PCONB_Val EQU 0x00000000 ;PUPB_Val EQU 0x00000000 ;端口B上拉开启;端口CPIOC_SETUP EQU 1PCONC_V

15、al EQU 0x00001401 ;PUPC_Val EQU 0x00000000 ;端口C上拉开启;端口DPIOD_SETUP EQU 0PCOND_Val EQU 0x00000000 ;PUPD_Val EQU 0x00000000 ;端口D上拉开启;端口EPIOE_SETUP EQU 0PCONE_Val EQU 0x00000000 ;PUPE_Val EQU 0x00000000 ;端口E上拉开启;端口FPIOF_SETUP EQU 0PCONF_Val EQU 0x00000000 ;PUPF_Val EQU 0x00000000 ;端口F上拉开启;端口GPIOG_SETUP

16、EQU 0PCONG_Val EQU 0x00000000 ;PUPG_Val EQU 0x00000000 ;端口G上拉开启;端口HPIOH_SETUP EQU 0PCONH_Val EQU 0x000007FFPUPH_Val EQU 0x00000000 ;端口H上拉开启;端口JPIOJ_SETUP EQU 0PCONJ_Val EQU 0x00000000 ;PUPJ_Val EQU 0x00000000 ;端口J上拉开启 ; 汇编程序数据 8 字节对齐 PRESERVE8 ;c和汇编有8位对齐的要求,这个伪指令可以满足此要求;/存储区设定和程序入口点;/启动代码必须连接到第一个地址才

17、能运行。 AREA RESET, CODE, READONLY ;/开辟端栈段,段名(RESET)定义RESET代码段为只读 ARM ;/ARM 模式运行程序;/异常向量;/影射到地址0;/必须使用,绝对寻址方式。;/虚处理(子程序)是用一个无限循环实现的, 它是可修改的./(11942295)翻译Vectors LDR PC, Reset_Addr ; 复位 LDR PC, Undef_Addr ; 未定义指令 LDR PC, SWI_Addr ; 软件中断 LDR PC, PAbt_Addr ; 中止(预取) LDR PC, DAbt_Addr ; 中止(数据) NOP ; 保留向量 LD

18、R PC, IRQ_Addr ; 普通 LDR PC, FIQ_Addr ; 快速中断 IF IntVT_SETUP 0;/中断向量表地址HandleEINT0 EQU IntVTAddressHandleEINT1 EQU IntVTAddress +4HandleEINT2 EQU IntVTAddress +4*2HandleEINT3 EQU IntVTAddress +4*3HandleEINT4_7 EQU IntVTAddress +4*4HandleEINT8_23 EQU IntVTAddress +4*5HandleCAM EQU IntVTAddress +4*6Hand

19、leBATFLT EQU IntVTAddress +4*7HandleTICK EQU IntVTAddress +4*8HandleWDT EQU IntVTAddress +4*9HandleTIMER0 EQU IntVTAddress +4*10HandleTIMER1 EQU IntVTAddress +4*11HandleTIMER2 EQU IntVTAddress +4*12HandleTIMER3 EQU IntVTAddress +4*13HandleTIMER4 EQU IntVTAddress +4*14HandleUART2 EQU IntVTAddress +4*

20、15HandleLCD EQU IntVTAddress +4*16HandleDMA0 EQU IntVTAddress +4*17HandleDMA1 EQU IntVTAddress +4*18HandleDMA2 EQU IntVTAddress +4*19HandleDMA3 EQU IntVTAddress +4*20HandleMMC EQU IntVTAddress +4*21HandleSPI0 EQU IntVTAddress +4*22HandleUART1 EQU IntVTAddress +4*23HandleNFCON EQU IntVTAddress +4*24H

21、andleUSBD EQU IntVTAddress +4*25HandleUSBH EQU IntVTAddress +4*26HandleIIC EQU IntVTAddress +4*27HandleUART0 EQU IntVTAddress +4*28HandleSPI1 EQU IntVTAddress +4*39HandleRTC EQU IntVTAddress +4*30HandleADC EQU IntVTAddress +4*31IRQ_Entry sub sp,sp,#4 ;/保留PC值 stmfd sp!,r8-r9 ldr r9,=INTOFFSET ldr r9,r9 ldr r8,=HandleEINT0 add r8,r8,r9,lsl #2 ldr r8,r8 str r8,sp,#8 ldmfd sp!,r8-r9,pc ENDIFReset_Addr DCD Reset_Handler ;定义中断的入口地址; 以Reset_Addr为Reset_Handler分配一段字对齐的内存单元Undef_Addr DCD

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

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