• 核心初始化程序


    1.start.S

    .text
    .global _start
    _start:
        b reset
        ldr pc,_undefined_instruction
        ldr pc,_software_interrupt
        ldr pc,_prefetch_abort
        ldr pc,_data_abort
        ldr pc,_not_used
        ldr pc,_irq
        ldr pc,_fiq
    
    _undefined_instruction: .word undefined_instruction
    _software_interrupt: .word software_interrupt
    _prefetch_abort: .word prefetch_abort
    _data_abort: .word data_abort
    _not_used: .word not_used
    _irq: .word irq
    _fiq: .word fiq
    
    
    undefined_instruction:
        nop
    
    software_interrupt:
        nop
    
    prefetch_abort:
        nop
    
    data_abort:
        nop
    
    not_used:
        nop
    
    irq:
        nop
    
    fiq:
        nop
    
    reset:
        bl set_svc
        bl disable_watchdog
        bl disable_interrupt
        bl disable_mmu
    
    set_svc:
        mrs r0,cpsr
        bic r0,r0,#0x1f
        orr r0,r0,#0xd3
        msr cpsr,r0
        mov pc,lr
    
    #define pWACON    0x7e004000
    disable_watchdog:
        ldr r0,=pWACON
        mov r1,#0x0
        str r1,[r0]
        mov pc,lr
    
    disable_interrupt:
        mvn r1,#0x0
        ldr r0,=0x71200014
        str r1,[r0]
    
        ldr r0,=0x71300014
        str r1,[r0]
    
        mov pc,lr
    
    disable_mmu:
        mcr p15,0,r0,c7,c7,0
        
        mrc p15,0,r0,c1,c0,0
        bic r0,r0,#0x00000005
        mcr p15,0,r0,c1,c0,0
    
        mov pc,lr

    2.xboot.lds

    OUTPUT_ARCH(arm)
    ENTRY(_start)
    SECTIONS
    {
        . = 0X5000000;
    
        . = ALIGN(4);
        .text :
        {
            start.o(.text)
            *(.text)
        }
    
        . = ALIGN(4);
        .data :
        {
            *(.data)
        }
    
        . = ALIGN(4);
        bss_start = .;
        .bss :
        {
            *(.bss)
        }
        bss_end = .;
    }

    3.Makefile

    all : start.o
        arm-linux-ld -Txboot.lds -o xboot.elf $^
        arm-linux-objcopy -O binary xboot.elf xboot.bin
    
    %.o : %.c
        arm-linux-gcc -g -c $^
    
    %.o : %.S
        arm-linux-gcc -g -c $^
    
    .PHONY : clean
    clean:
            rm *.o *.bin *.elf
  • 相关阅读:
    杭电 搜索 1253 胜利大逃亡
    杭电 搜索 1258 Sum It Up
    杭电搜索 2612 Find a way
    杭电 搜索 水题1072 Nightmare
    杭电1175简单搜索 连连看
    杭电 1372 Knight Moves
    杭电 oj Rescue 1242
    杭电 1241 Oil Deposits
    杭电 2100 Children’s Queue
    杭电 1103 Flo's Restaurant
  • 原文地址:https://www.cnblogs.com/boyiliushui/p/5766171.html
Copyright © 2020-2023  润新知