嵌入式学习-uboot-lesson5-点亮LED

来源:互联网 发布:monaco for windows 编辑:程序博客网 时间:2024/05/22 02:20

用于测试前面所写的代码的正确性

1.LED原理图

这里写图片描述

根据上面两幅图可以得知,4个LED的寄存器分别为GPM0 GPM1 GPM2 GPM3
查看GPM对应的寄存器
这里写图片描述
GPMCON 为配置寄存器 选择该端口作为输入还是输出
GPMDAT为数据寄存器,用于存放数据

2.配置GPMCON

配置其为输出模式,即GPM0 GPM1 GPM2 GPM3都配置为0b0001
这里写图片描述

3.配置GPMDAT

需要哪个LED亮时,根据电路图,则配置其为低电平

这里写图片描述

@****************************@name: start.S@by  : stone@time: 2016.6.24@function: 点亮LED@****************************.text.global _start  @将_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:  @处理未定义指令异常        nopsoftware_interrupt:     @软中断        nopprefetch_abort:         @预取指令异常        nopdata_abort:             @数据访问异常        nopnot_used:               @空位        nopirq:                    @中断        nopfiq:                    @快速中断        nopreset:                          @reset    bl set_svc              @设置为SVC模式    bl set_peri_port        @外设基地址初始化    bl disable_watchdog     @关闭看门狗    bl disable_interrupt    @关闭中断    bl disable_mmu          @关闭mmu    bl light_led            @点亮LEDset_svc:            mrs r0, cpsr        @将值取出cpsr寄存器    bic r0, r0, #0x1f   @将后5位 即M[4:0]清零     orr r0, r0, #0xd3   @0b10011 转化为16进制为0x13 同时为了屏蔽irq和fiq,可以将其设置为0b11010011即0xd3      msr cpsr, r0        @将值送回cpsr寄存器    mov pc, lr              @返回set_peri_port:    ldr r0, =0x70000000     @基地址    orr r0, r0, #0x13       @256MB    mcr p15,0,r0,c15,c2,4   @写入cp15    mov pc, lr#define pwTCON 0x7E004000       @WTCON寄存器disable_watchdog:         ldr r0, =pwTCON         @把地址装载到R0        mov r1, #0x0            @置0,关闭看门狗        str r1,[r0]             mov pc,lrdisable_interrupt:        mvn r1,#0x0             @0x0 取反,给r1        ldr r0,=0x71200014      @VIC0        str r1,[r0]        ldr r0,=0x71300014      @VIC1        str r1,[r0]        mov pc,lrdisable_mmu:        mcr p15,0,r0,c7,c7,0    @使ICACHE 和DCACHE 无效    mrc p15,0,r0,c1,c0,0    @read control register    bic r0,r0,#0x00000007   @mmu 和 dcache置零    mcr p15,0,r0,c1,c0,0    @write control register    mov pc,lr#define GPMCON 0x7F008820       @控制寄存器#define GPMDAT 0x7F008824   @数据寄存器  light_led:        ldr r0,=GPMCON        ldr r1,=0x1111  @输出模式        str r1,[r0]        ldr r0,=GPMDAT        ldr r1,=0x00    @低电平点亮        str r1,[r0]         mov pc,lr

菜鸟一枚,如有错误,多多指教。。。

0 0