主题 : mini2440裸奔led失败 求助 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 11832
精华: 0
发帖: 37
金钱: 185 两
威望: 37 点
贡献值: 0 点
综合积分: 74 分
注册时间: 2009-12-22
最后登录: 2017-03-13
楼主  发表于: 2014-11-15 23:58

 mini2440裸奔led失败 求助

用mini2440主板,mini2440提供的 arm-linux-gcc 编译代码 采用mini2440的superboot
裸机程序 download addr 0x30000000
编译通过 下载没有反应 led没有点亮
原来的makefile的连接地址是:-Ttext 0x00000000
我改为 -Ttext 0x30000000

代码如下:
@******************************************************************************
@ File:led_on.S
@ 功能:LED点灯程序,点亮LED1
@******************************************************************************      
            
.text
.global _start
_start:    
            LDR     R0,=0x56000010      @ R0设为GPBCON寄存器。此寄存器
                                        @ 用于选择端口B各引脚的功能:
                                        @ 是输出、是输入、还是其他
            MOV     R1,#0x00000400        
            STR     R1,[R0]             @ 设置GPB5为输出口, 位[10:9]=0b01
            LDR     R0,=0x56000014      @ R0设为GPBDAT寄存器。此寄存器
                                        @ 用于读/写端口B各引脚的数据
            MOV     R1,#0x00000000      @ 此值改为0x00000020,
                                        @ 可让LED1熄灭
            STR     R1,[R0]             @ GPB5输出0,LED1点亮
MAIN_LOOP:
            B       MAIN_LOOP

makefile如下:
led_on.bin : led_on.S
        arm-linux-gcc -g -c -o led_on.o led_on.S
        arm-linux-ld -Ttext 0x30000000 -g led_on.o -o led_on_elf
        arm-linux-objcopy -O binary -S led_on_elf led_on.bin
clean:
        rm -f   led_on.bin led_on_elf *.o
ucos 播放视频 TCPIP 都不会 呵呵
级别: 新手上路
UID: 11832
精华: 0
发帖: 37
金钱: 185 两
威望: 37 点
贡献值: 0 点
综合积分: 74 分
注册时间: 2009-12-22
最后登录: 2017-03-13
1楼  发表于: 2014-11-16 18:06
应该是 友善的 superboot 里面开了中断 看门狗 之类的,跳转过去没有关断,
我写入关断代码 放到我的程序的开头 成功点亮 led 了  
有点以前读大学的感觉了 ^_^
@******************************************************************************
@ File:led_on.S
@ 功能:LED点灯程序,点亮LED1
@******************************************************************************                  
.text
.global _start
_start:    
      
            @禁止看门狗定时器    
            LDR R0, =0x53000000  
            LDR R1, =0x0  
            STR R1, [R0]  
          
            @禁止中断  
            LDR R0, =0x4A000008  
            LDR R1, =0xFFFFFFFF  
            STR R1, [R0]  
          
            @禁止SUB中断  
            LDR R0, =0x4A00001C  
            LDR R1, =0x7FFF  
            STR R1, [R0]  
              

            LDR     R0,=0x56000010      @ R0设为GPBCON寄存器。此寄存器
                                        @ 用于选择端口B各引脚的功能:
                                        @ 是输出、是输入、还是其他
            MOV     R1,#0x00000400        
            STR     R1,[R0]             @ 设置GPB5为输出口, 位[10:9]=0b01
            
            LDR     R0,=0x56000014      @ R0设为GPBDAT寄存器。此寄存器
                                        @ 用于读/写端口B各引脚的数据
            MOV     R1,#0x00000000      @ 此值改为0x00000020,
                                        @ 可让LED1熄灭
            STR     R1,[R0]             @ GPB5输出0,LED1点亮
MAIN_LOOP:
            B       MAIN_LOOP
ucos 播放视频 TCPIP 都不会 呵呵
我艹
级别: 新手上路
UID: 104847
精华: 0
发帖: 46
金钱: 235 两
威望: 47 点
贡献值: 0 点
综合积分: 92 分
注册时间: 2014-06-06
最后登录: 2019-06-21
2楼  发表于: 2014-11-17 11:09
自问自答,赞