LPC2468 启动代码设计和分析.docx

上传人:b****3 文档编号:3515550 上传时间:2022-11-23 格式:DOCX 页数:13 大小:17.45KB
下载 相关 举报
LPC2468 启动代码设计和分析.docx_第1页
第1页 / 共13页
LPC2468 启动代码设计和分析.docx_第2页
第2页 / 共13页
LPC2468 启动代码设计和分析.docx_第3页
第3页 / 共13页
LPC2468 启动代码设计和分析.docx_第4页
第4页 / 共13页
LPC2468 启动代码设计和分析.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

LPC2468 启动代码设计和分析.docx

《LPC2468 启动代码设计和分析.docx》由会员分享,可在线阅读,更多相关《LPC2468 启动代码设计和分析.docx(13页珍藏版)》请在冰豆网上搜索。

LPC2468 启动代码设计和分析.docx

LPC2468启动代码设计和分析

INCLUDELPC2400.INC;/*引入头文件*/

;/*定义堆栈的大小*/

SVC_STACK_LEGTHEQU1

FIQ_STACK_LEGTHEQU50

IRQ_STACK_LEGTHEQU9*256;/*每层嵌套需要256个字堆栈,*/

;/*允许9嵌套层*/

ABT_STACK_LEGTHEQU0

UND_STACK_LEGTHEQU0

NoIntEQU0x80;/*禁止IRQ中断宏定义*/

NoFIQEQU0x40;/*禁止FIQ中断宏定义*/

USR32ModeEQU0x10;/*用户模式宏定义*/

SVC32ModeEQU0x13;/*管理模式宏定义*/

SYS32ModeEQU0x1f;/*系统模式宏定义*/

IRQ32ModeEQU0x12;/*IRQ模式宏定义*/

FIQ32ModeEQU0x11;/*FIQ模式宏定义*/

;//静态RAM

WAITWEN0EQU0x0F;/*配置EMCStaticWaitWen0*/

WAITOEN0EQU0x08;/*配置EMCStaticWaitOen0*/

WAITRD0EQU0x04;/*配置EMCStaticWaitRd0*/

WAITPAGE0EQU0x1F;/*配置EMCStaticWaitPage0*/

WAITWR0EQU0x02;/*配置EMCStaticWaitWr0*/

WAITTURN0EQU0x0F;/*配置EMCStaticWaitTurn0*/

;//程序存储器

WAITWEN1EQU0x00;/*配置EMCStaticWaitWen1*/

WAITOEN1EQU0x02;/*配置EMCStaticWaitOen1*/

WAITRD1EQU0x03;/*配置EMCStaticWaitRd1*/

WAITPAGE1EQU0x1F;/*配置EMCStaticWaitPage1*/

WAITWR1EQU0x00;/*配置EMCStaticWaitWr1*/

WAITTURN1EQU0x00;/*配置EMCStaticWaitTurn1*/

;//液晶

WAITWEN2EQU0x00;/*配置EMCStaticWaitWen2*/

WAITOEN2EQU0x00;/*配置EMCStaticWaitOen2*/

WAITRD2EQU0x00;/*配置EMCStaticWaitRd2*/

WAITPAGE2EQU0x00;/*配置EMCStaticWaitPage2*/

WAITWR2EQU0x00;/*配置EMCStaticWaitWr2*/

WAITTURN2EQU0x00;/*配置EMCStaticWaitTurn2*/

;//未使用

WAITWEN3EQU0x0F;/*配置EMCStaticWaitWen3*/

WAITOEN3EQU0x0F;/*配置EMCStaticWaitOen3*/

WAITRD3EQU0x0F;/*配置EMCStaticWaitRd3*/

WAITPAGE3EQU0x1F;/*配置EMCStaticWaitPage3*/

WAITWR3EQU0x0F;/*配置EMCStaticWaitWr3*/

WAITTURN3EQU0x0F;/*配置EMCStaticWaitTurn3*/

BCFG_08DEFEQU0x00000000;/*8BitBus*/

BCFG_16DEFEQU0x00000001;/*16BitBus*/

BCFG_32DEFEQU0x00000002;/*32BitBus*/

;//|页模式|片选极性|字节定位状态|延长等待|写缓冲区|写保护|

;//|PM|PC|PB|EW|B|P|

;//|0:

禁能1:

使能|0:

低1:

高||0:

禁能1:

使能|0:

禁能1:

使能|0:

禁能1:

使能|

BCFG0EQU((0x01<<03):

OR:

(0x00<<06):

OR:

(0x01<<07):

OR:

(0x01<<8):

OR:

(0x00<<19):

OR:

(0x00<<20))

BCFG1EQU((0x00<<03):

OR:

(0x00<<06):

OR:

(0x01<<07):

OR:

(0x00<<8):

OR:

(0x00<<19):

OR:

(0x00<<20))

BCFG2EQU((0x00<<03):

OR:

(0x00<<06):

OR:

(0x01<<07):

OR:

(0x00<<8):

OR:

(0x00<<19):

OR:

(0x00<<20))

BCFG3EQU((0x00<<03):

OR:

(0x00<<06):

OR:

(0x01<<07):

OR:

(0x00<<8):

OR:

(0x00<<19):

OR:

(0x00<<20))

STATICCFG0EQU(BCFG_08DEF:

OR:

BCFG0)

STATICCFG1EQU(BCFG_16DEF:

OR:

BCFG1)

STATICCFG2EQU(BCFG_08DEF:

OR:

BCFG2)

STATICCFG3EQU(BCFG_16DEF:

OR:

BCFG3)

EMCC_CONTEQU0x01;禁止镜像

;//GPIO0

PINSEL0_ValEQU0xC05A8C50;GPIO,GPIO,TXD0,RXD0,GPIO,CAP2[1],GPIO,SCK1,MISO1,MOSI1,TXD2,RXD2,GPIO,GPIO,GPIO,SCK

PINSEL1_ValEQU0x0015403F;SSEL,MISO,MOSI,GPIO,GPIO,GPIO,GPIO,AD0[0],AD0[1],AD0[2],AD0[3],GPIO,GPIO,GPIO,GPIO,GPIO

;//GPIO1

PINSEL2_ValEQU0x000000C0;GPIO,GPIO,GPIO,PWM0[2],GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO

PINSEL3_ValEQU0x00030F00;GPIO,GPIO,GPIO,GPIO,SCK0,SSEL0,GPIO,GPIO,MOSI0,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO

;//GPIO2

PINSEL4_ValEQU0x1000000A;RXD1,TXD1,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,CS2,GPIO

PINSEL5_ValEQU0x05010115;CAS,RAS,CLKOUT0,GPIO,DYCS0,GPIO,GPIO,GPIO,CKEOUT0,GPIO,GPIO,GPIO,DQMOUT0,DQMOUT1,GPIO,GPIO

;//GPIO3

PINSEL6_ValEQU0x55555555;D0..D15

PINSEL7_ValEQU0x00008000;GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,CAP0[0],GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO,GPIO

;//GPIO4

PINSEL8_ValEQU0x55555555;A0..A15

PINSEL9_ValEQU0x5F050555;A16,A17,A18,A19,A20,A21,GPIO,GPIO,OE,WE,GPIO,GPIO,TXD3,TXD3,CS0,CS1

PINSEL10_ValEQU0x00000000;

;/********************************************************************************************************

;Theimportedlabels

;引入的外部标号在这声明

;********************************************************************************************************/

IMPORT__main;/*C语言主程序入口*/

IMPORTRunFirst

IMPORTSys_SDRAM_Init

IMPORTvicControl

IMPORTFIQ_Exception;/*快速中断异常处理程序*/

IMPORTSys_ResetInit;/*目标板基本初始化*/

IMPORTSoftwareInterrupt

IMPORT__use_two_region_memory

IMPORT__use_no_semihosting_swi

;/********************************************************************************************************

;Theemportedlabels

;给外部使用的标号在这声明

;********************************************************************************************************/

PRESERVE8

EXPORTReset

EXPORTStackUsr

EXPORTInitStack

EXPORTbottom_of_heap

EXPORTSoftwareInterruptAdd

EXPORT__user_initial_stackheap

CODE32

AREAvectors,CODE,READONLY

ENTRY

Reset;/*中断向量表*/

LDRPC,ResetAddr

LDRPC,UndefinedAddr

LDRPC,SWI_Addr

LDRPC,PrefetchAddr

LDRPC,DataAbortAddr

DCD0xb9206e50

LDRPC,[PC,#-0x120]

LDRPC,FIQ_Addr

ResetAddrDCDResetInit

UndefinedAddrDCDUndefined

SWI_AddrDCDSoftwareInterruptAdd

PrefetchAddrDCDPrefetchAbort

DataAbortAddrDCDDataAbort

NouseDCD0

IRQ_AddrDCD0

FIQ_AddrDCDFIQ_Handler

Undefined

B.

PrefetchAbort

B.

DataAbort

B.

SoftwareInterruptAdd

CMPR0,#0x100

BLOSoftwareInterrupt

BvicControl

;/********************************************************************************************************

;快速中断

;********************************************************************************************************/

FIQ_Handler

STMFDSP!

{R0-R3,LR}

BLFIQ_Exception

LDMFDSP!

{R0-R3,LR}

SUBSPC,LR,#4

;/********************************************************************************************************

;**Functionname:

ResetInit

;**

;**Descriptions:

复位处理

;********************************************************************************************************/

ResetInit

BLRunFirst

;配置IO口,2011-6-1816:

58:

16

LDRR2,=PINSEL0

LDRR4,=PINSEL0_Val

STRR4,[R2]

LDRR2,=PINSEL1

LDRR4,=PINSEL1_Val

STRR4,[R2]

LDRR2,=PINSEL2

LDRR4,=PINSEL2_Val

STRR4,[R2]

LDRR2,=PINSEL3

LDRR4,=PINSEL3_Val

STRR4,[R2]

LDRR2,=PINSEL4

LDRR4,=PINSEL4_Val

STRR4,[R2]

LDRR2,=PINSEL5

LDRR4,=PINSEL5_Val

STRR4,[R2]

LDRR2,=PINSEL6

LDRR4,=PINSEL6_Val

STRR4,[R2]

LDRR2,=PINSEL7

LDRR4,=PINSEL7_Val

STRR4,[R2]

LDRR2,=PINSEL8

LDRR4,=PINSEL8_Val

STRR4,[R2]

LDRR2,=PINSEL9

LDRR4,=PINSEL9_Val

STRR4,[R2]

LDRR2,=PINSEL10

LDRR4,=PINSEL10_Val

STRR4,[R2]

;EMC配置,2011-6-209:

21:

00

LDRR2,=EMCControl

LDRR4,=EMCC_CONT

STRR4,[R2]

;静态存储器配置,2011-6-2015:

49:

41

LDRR1,=STATICCFG0;/*配置EMCStaticConfig0*/

LDRR2,=WAITWEN0;/*配置EMCStaticWaitWen0*/

LDRR3,=WAITOEN0;/*配置EMCStaticWaitOen0*/

LDRR4,=WAITRD0;/*配置EMCStaticWaitRd0*/

LDRR5,=WAITPAGE0;/*配置EMCStaticWaitPage0*/

LDRR6,=WAITWR0;/*配置EMCStaticWaitWr0*/

LDRR7,=WAITTURN0;/*配置EMCStaticWaitTurn0*/

LDRR0,=EMCStaticConfig0

STMIAR0!

{R1-R7}

LDRR1,=STATICCFG1;/*配置EMCStaticConfig1*/

LDRR2,=WAITWEN1;/*配置EMCStaticWaitWen1*/

LDRR3,=WAITOEN1;/*配置EMCStaticWaitOen1*/

LDRR4,=WAITRD1;/*配置EMCStaticWaitRd1*/

LDRR5,=WAITPAGE1;/*配置EMCStaticWaitPage1*/

LDRR6,=WAITWR1;/*配置EMCStaticWaitWr1*/

LDRR7,=WAITTURN1;/*配置EMCStaticWaitTurn1*/

LDRR0,=EMCStaticConfig1

STMIAR0!

{R1-R7}

LDRR1,=STATICCFG2;/*配置EMCStaticConfig2*/

LDRR2,=WAITWEN2;/*配置EMCStaticWaitWen2*/

LDRR3,=WAITOEN2;/*配置EMCStaticWaitOen2*/

LDRR4,=WAITRD2;/*配置EMCStaticWaitRd2*/

LDRR5,=WAITPAGE2;/*配置EMCStaticWaitPage2*/

LDRR6,=WAITWR2;/*配置EMCStaticWaitWr2*/

LDRR7,=WAITTURN2;/*配置EMCStaticWaitTurn2*/

LDRR0,=EMCStaticConfig2

STMIAR0!

{R1-R7}

BLInitStack;/*初始化堆栈*/

BLSys_ResetInit;/*目标板基本初始化*/

B__main;/*跳转到c语言入口*/

;/********************************************************************************************************

;**Functionname:

__user_initial_stackheap

;**

;**Descriptions:

库函数初始化堆和栈,不能删除

;********************************************************************************************************/

__user_initial_stackheap

LDRR0,=bottom_of_heap

LDRR2,=top_of_heap

LDRR3,=bottom_of_Stacks

BXLR

EXPORT_sys_exit

_sys_exit

B.

EXPORT__rt_div0

EXPORTfputc

EXPORTfgetc

EXPORT_sys_close

EXPORT_sys_write

EXPORT_sys_read

EXPORT_sys_istty

EXPORT_sys_seek

EXPORT_sys_ensure

EXPORT_sys_flen

EXPORT_sys_tmpnam

EXPORT_sys_command_string

__rt_div0

fputc

fgetc

_sys_close

_sys_write

_sys_read

_sys_istty

_sys_seek

_sys_ensure

_sys_flen

_sys_tmpnam

_sys_command_string

NOP

MOVR0,#0

BXLR

;/********************************************************************************************************

;**Functionname:

CrpData

;**

;**Descriptions:

加密芯片

;********************************************************************************************************/

IF:

DEF:

EN_CRP

IF.>=0x1fc

INFO1,"\nThedataat0x000001fcmustbe0x87654321.\nPleasedeletesomesourcebeforethisline."

ENDIF

CrpData

WHILE.<0x1fc

NOP

WEND

CrpData1

DCD0x87654321;/*当此数为0x87654321时,用户*/

;/*程序被保护*/

ENDIF

InitStack

MOVR0,LR

;BuildtheSVCstack

;设置管理模式堆栈

MSRCPSR_c,#0xd3

LDRSP,StackSvc

;BuildtheIRQstack

;设置中断模式堆栈

MSRCPSR_c,#0xd2

LDRSP,StackIrq

;BuildtheFIQstack

;设置快速中断模式堆栈

MSRCPSR_c,#0xd1

LDRSP,StackFiq

;BuildtheDATAABORTstack

;设置中止模式堆栈

MSRCPSR_c,#0xd7

LDRSP,StackAbt

;BuildtheUDFstack

;设置未定义模式堆栈

MSRCPSR_c,#0xdb

LDRSP,StackUnd

;BuildtheSYSstack

;设置系统模式堆栈

MSRCPSR_c,#SYS32Mode

LDRSP,=StackUsr

BXR0

LTORG

StackSvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4

StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4

StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4

StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4

StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4

AREAMyStacks,DATA,NOINIT,ALIGN=2;

;/*分配堆栈空间*/

SvcStackSpaceSPACESVC_STA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

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

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