⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 in_reset.s

📁 uC/OS 使用gcc进行开发的例子,可以参考一下
💻 S
📖 第 1 页 / 共 2 页
字号:
                adr         r0, irqvec                  @  @ where to read values                ldmia       r0!, {r1-r2}                @  read the vectors                mov         r0, #(6*4)                  @  @ of the interrupt vector                stmia       r0!, {r1-r2}                @  store them    ENDIF*//*    IF  :DEF: AT91EB01@ - | -- Get the top of the SRAM@ - | top <- InitMainSram()*/                stmfd       r13!, {lr}                ldr         r0, =InitMainSram                mov         lr, pc                bx          r0                ldmfd       r13!, {lr}/*    ENDIF    IF  :DEF: AT91DB01@ - | -- Get the top of the SSRAM@ - | top <- SSRAM_BASE                ldr         r0, =SSRAM_LIMIT    ENDIF@ - | -- Save current CPSR and work registers*/                mrs         r12, cpsr/* @ - | Get the size of the stacks */                ldr         r2, =InitTableStack/* @ - | Reserve debugger stack size */                ldr         r3, [r2, #0]                sub         r0, r0, r3/*    IF  :LNOT::DEF:AT91_DEBUG_ANGEL@ - | If (FIQ size defined)*/                ldr         r3, [r2, #0]                teq         r3, #0/* @ - | Then */                beq         InitFiqEnd/* @ - | | -- Set up Fast Interrupt mode and set FIQ stack */                mov         r1, #ARM_MODE_FIQ | I_BIT | F_BIT                msr         cpsr, r1/* @ - | | FIQ_r13 <- top */                mov         r13, r0/* @ - | | top <- top - size_FIQ */                sub         r0, r0, r3/* @ - | Endif */InitFiqEnd:/*@ - | If (IRQ size defined)*/                ldr         r3, [r2, #4]                teq         r3, #0/* @ - | Then */                beq         InitIrqEnd/* @ - | | -- Set up Interrupt mode and set IRQ stack */                mov         r1, #ARM_MODE_IRQ | I_BIT | F_BIT                msr         cpsr, r1/* @ - | | IRQ_r13 <- top */                mov         r13, r0/* @ - | | top <- top - size_IRQ */                sub         r0, r0, r3/* @ - | Endif */InitIrqEnd:/*    IF  :LNOT::DEF:AT91_DEBUG_ICE@ - | If (SVC size defined)*/                ldr         r3, [r2, #8]                teq         r3, #0/* @ - | Then */                beq         InitSvcEnd/* @ - | | -- Set up Supervisor mode and set SVC stack */                mov         r1, #ARM_MODE_SVC | I_BIT | F_BIT                msr         cpsr, r1/* @ - | | SVC_r13 <- top */                mov         r13, r0/* @ - | | top <- top - size_SVC */                sub         r0, r0, r3/* @ - | Endif */InitSvcEnd:/*    ENDIF    ENDIF@ - | If (ABORT size defined)*/                ldr         r3, [r2, #12]                teq         r3, #0/* @ - | Then */                beq         InitAbortEnd/* @ - | | -- Set up Abort mode and set ABORT stack */                mov         r1, #ARM_MODE_ABORT | I_BIT | F_BIT                msr         cpsr, r1/* @ - | | Abort_r13 <- top */                mov         r13, r0/* @ - | | top <- top - size_ABORT */                sub         r0, r0, r3/* @ - | Endif */InitAbortEnd:/* @ - | If (UNDEF size defined) */                ldr         r3, [r2, #16]                teq         r3, #0/* @ - | Then */                beq         InitUndefEnd/* @ - | | -- Set up Undefined mode and set UNDEF stack */                mov         r1, #ARM_MODE_UNDEF | I_BIT | F_BIT                msr         cpsr, r1/* @ - | | UNDEF_r13 <- top */                mov         r13, r0/* @ - | | top <- top - size_UNDEF */                sub         r0, r0, r3/* @ - | Endif */InitUndefEnd:/* @ - | -- Set up USER/SYStem mode and set USER/SYStem stack */                mov         r1, #ARM_MODE_SYS | I_BIT | F_BIT                msr         cpsr, r1/* @ - | r13 <- top */                mov         r13, r0/* @ - | -- Restore current CPSR enabling interrupt and fast interrupt */                bic         r12, r12, #I_BIT | F_BIT                msr         cpsr, r12/* @ - | return */                bx          lr/*@ ------------------------------------------------------------------------------@ -    ATMEL Microcontroller Software Support  -   ROUSSET -@ ------------------------------------------------------------------------------@  The software is delivered "AS IS" without warranty or condition of any@  kind, either express, implied or statutory. This includes without@  limitation any warranty or condition with respect to merchantability or@  fitness for any particular purpose, or against the infringements of@  intellectual property rights of others.@ -----------------------------------------------------------------------------@ - File source          : in_eb01.s@ - Object               : table for AT91EB01 initialization@ - Translator           : ARM Software Development Toolkit V2.11a@ -@ - Exported Resources   : InitTableEBI - InitTableStack@ - Imported Resources   : None@ -@ - 1.0 15/09/98 JLV     : Creation@ - 2.0 21/10/98 JCZ     : Clean up.@ - 2.1 16/03/99 JCZ     : SDT V2.5@ -                      : Reserve stack space on top of memory for ICE Debug.@ ------------------------------------------------------------------------------            AREA        Init, CODE, READONLY@  -------------------------- List of Included Files ---------------------------@             INCLUDE     Include/ebi.inc*/	EBI_BASE        =     0xFFE00000/* @  -------------------------- List of Macro definitions ------------------------ *//*            MACRO            STACK_SIZE  $debug, $fiq, $irq, $svc, $abort, $undef            DCD     $debug*4            DCD     $fiq*4            DCD     $irq*4            DCD     $svc*4            DCD     $abort*4            DCD     $undef*4            MEND*/                        .macro	STACK_SIZE  debug, fiq, irq, svc, abort, undef            .word     \debug*4            .word     \fiq*4            .word     \irq*4            .word     \svc*4            .word     \abort*4            .word     \undef*4            .endm            /*@  ------------------------ List of constants and types ------------------------@  None@  ------------------------ List of Imported resources -------------------------@  None@  ------------------------ List of Internal resources -------------------------@  None@  ------------------------ List of Exported resources -------------------------    IF  :DEF:AT91_DEBUG_NONE@ ------------------------------------------------------------------------------@ - Function             : InitTableEBI@ - Treatments           : Table for EBI initialization@ - Input Parameters     : None@ - Output Parameters    : None@ - Registers lost       : None@ - Called Functions     : None@ - Called Macros        : None@ ------------------------------------------------------------------------------@                 .global      InitTableEBI@  32,768 MHz master clock assumed*/InitTableEBI:            .word         0x01002535  @  0x01000000, 16MB, 2 hold, 16 bits, 6 WS            .word         0x02002121  @  0x02000000, 16MB, 0 hold, 16 bits, 1 WS            .word         0x20000000  @  unused            .word         0x30000000  @  unused            .word         0x40000000  @  unused            .word         0x50000000  @  unused            .word         0x60000000  @  unused            .word         0x70000000  @  unused            .word         0x00000001  @  REMAP command            .word         0x00000006  @  7 memory regions, standard read            .word         EBI_BASE    @  EBI Base address/*    ENDIF @ ------------------------------------------------------------------------------@ - Function             : InitTableStack@ - Treatments           : Table for stack initialization ( stack sizes)@ - Input Parameters     : None@ - Output Parameters    : None@ - Registers lost       : None@ - Called Functions     : None@ - Called Macros        : None@ ------------------------------------------------------------------------------@                 .global      InitTableStack*/InitTableStack:/*    IF  :DEF:AT91_DEBUG_NONE*/            STACK_SIZE  0, 3, 3*8, 256, 3, 3/*    ENDIF    IF  :DEF:AT91_DEBUG_ANGEL            STACK_SIZE  0, 0, 0, 0, 0, 0    ENDIF    IF  :DEF:AT91_DEBUG_ICE            STACK_SIZE  1024, 3, 3*8, 0, 3, 3    ENDIF            END*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -