主题 : tiny6410 u boot点灯不亮 向大家请教 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 27812
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2010-09-01
最后登录: 2012-08-09
楼主  发表于: 2012-08-01 16:39

 tiny6410 u boot点灯不亮 向大家请教

LDR r15 , =0x7F008804    
LDR r14 , =0x11111111

STR r14 , [r15]      
LDR r15 , =0x7F00880C
LDR r14 , =0xffffffff
STR r14 , [ r15 ]
LDR r15 , =0x7F008808    
LDR r14 , =0x0
STR r14, [r15]
loopwhile:
    bl loopwhile
将这段代码放在转换svc32模式以前以后都不行 放在禁止mmu之前也不行 放在lowlevel也不行 同样的代码裸机跑灯就会亮
级别: 新手上路
UID: 68292
精华: 0
发帖: 19
金钱: 100 两
威望: 20 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2012-04-21
最后登录: 2015-07-16
1楼  发表于: 2012-08-02 00:34
简单看了下,你怎么用r14 r15 作为通用寄存器使用了  ,r13是堆栈指针(SP),用于堆栈的。,r14是连接寄存器(LR),用于存储调用子程序前的pc,用于子程序返回,r15是程序计数器(PC),用于指示程序运行到哪个地址的。  把r14 15 改为 r0 r1 就好了  ~  看看介绍arm的文章仔细看看这块,基本功~
级别: 新手上路
UID: 27812
精华: 0
发帖: 7
金钱: 35 两
威望: 7 点
贡献值: 0 点
综合积分: 14 分
注册时间: 2010-09-01
最后登录: 2012-08-09
2楼  发表于: 2012-08-02 10:28
LDR r0 , =0x7F008804  
LDR r1 , =0x11111111
STR r1 , [r0]  
LDR r0, =0x7F00880C
LDR r1 , =0xffffffff
STR r1 , [ r0 ]
LDR r2 , =0x7F008808  
mov r1 , #0x0
STR r1, [r2]  
mov r1 , #0x0
STR r1 , [r2 ]  
loopwhile:  
bl loopwhile
改成这样也不行 反汇编
  64:    e59f034c ldr    r0, [pc, #844]    ; 0x3b8
  68:    e59f134c ldr    r1, [pc, #844]    ; 0x3bc
  6c:    e5801000 str    r1, [r0]
  70:    e59f0348 ldr    r0, [pc, #840]    ; 0x3c0
  74:    e3e01000 mvn    r1, #0    ; 0x0
  78:    e5801000 str    r1, [r0]
  7c:    e59f2340 ldr    r2, [pc, #832]    ; 0x3c4
  80:    e3a01000 mov    r1, #0    ; 0x0
  84:    e5821000 str    r1, [r2]
  88:    e3a01000 mov    r1, #0    ; 0x0
  8c:    e5821000 str    r1, [r2]
  90:    ebfffffe bl    0x90
。。。
3b8:    7f008804 swivc    0x00008804
  3bc:    11111111 tstne    r1, r1, lsl r1
  3c0:    7f00880c swivc    0x0000880c
  3c4:    7f008808 swivc    0x00008808
级别: 新手上路
UID: 68292
精华: 0
发帖: 19
金钱: 100 两
威望: 20 点
贡献值: 0 点
综合积分: 38 分
注册时间: 2012-04-21
最后登录: 2015-07-16
3楼  发表于: 2012-08-02 22:30
如果你的板子是tiny6410的话,应该是gpk 4-7吧~ 控制寄存器  应该是  0x7f008800, CON0 不是 CON1,改下试试  如果还不行的话 把上下拉的值赋为0.