码迷,mamicode.com
首页 > 其他好文 > 详细

点亮指路灯led

时间:2018-01-25 00:29:04      阅读:203      评论:0      收藏:0      [点我收藏+]

标签:sed   ref   技术   com   开发板   ima   .com   rup   就是   

为什么要使用LED?

(bootloader,kernel)开发初期,由于串口等硬件尚未被初始化,因此调试手段相当有限,这时通常会采用LED来做为程序调试的重要手段。技术分享图片技术分享图片技术分享图片

技术分享图片

 

LED驱动设计:

1、设置GPIO控制寄存器,把引脚设置为输出功能

2、根据原理图设置GPIO数据寄存器,点亮LED

.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 reset

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
    bl light_led
        
set_svc:
    mrs r0, cpsr
    bic r0, r0, #0x1f
    orr r0, r0, #0xd3
    msr cpsr, r0
    mov pc, lr

#define pwTCON 0x53000000
disable_watchdog:
    ldr r0, =pwTCON
    mov r1, #0x0
    str r1, [r0]
    mov pc, lr

disable_interrupt:
    mvn r1, #0x0
    ldr r0, =0x4a000008
    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,#0x00000007
    mcr p15,0,r0,c1,c0,0
    mov pc, lr

#define GPBCON 0x56000010
#define GPBDAT 0x56000014
light_led:
    ldr r0, =GPBCON
    ldr r1, =0x15400
    str r1,[r0]
    
    ldr r0, =GPBDAT
    ldr r1, =0x6bf
    str r1, [r0]
    mov pc, lr

黄色部分就是点亮LED的程序,我之前学51、K60、stm32的时候,发现这些设置寄存器是惊人的相似,都是先选择模式,在选择怎么输出。

 

6410的LED就是这样,但是如果把这个代码下载到开发板里面去,发现不行,这是因为我之前有一篇博客讲的是bootloader架构设计中讲到

#define GPBCON 0x7f008800
#define GPBDAT 0x7f008808
light_led:
    ldr r0, =GPBCON
    ldr r1, =0x11110000
    str r1,[r0]
    
    ldr r0, =GPBDAT
    ldr r1, =0xa0
    str r1, [r0]
    mov pc, lr

技术分享图片

6410还需要外设基地址初始化,CP15寄存器里面有管理外设基地址的寄存器。

技术分享图片

外设基地址是0x70000000,这个在6410手册里面搜索70000000就行

 

对于210开发板,还需要一个加头程序,程序链接:https://pan.baidu.com/s/1gfVTFgf 密码:44ry 用的话就在Linux下执行这个程序   ./mkv210  gboot  goot-210

这样就生成了含有加头代码的gboot 

技术分享图片

 

点亮指路灯led

标签:sed   ref   技术   com   开发板   ima   .com   rup   就是   

原文地址:https://www.cnblogs.com/sanshijvshi/p/8343861.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!