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

2440 裸机学习 点亮LED

时间:2018-03-14 23:41:42      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:void   --   elf   ati   语言   fda   com   inux   文件   

1。首先需要知道 led 是受哪一个gpio口控制

技术分享图片

从上图可以看出,两个led灯是受GPF4 GPF5控制的,低电平有效。

2、怎么控制GPF4 GPF5

技术分享图片

技术分享图片

技术分享图片

 

通过2440的芯片手册可以看出,需要设置GPF的引脚只需要设置,两个寄存器就可以了。GPFCON  GPFDAT。

  C语言部分:

void delay(volatile int d)//延时函数
{
    while (d--);
}

int led_on(int which)
{
    unsigned int *pGPFCON = (unsigned int *)0x56000050;
    unsigned int *pGPFDAT = (unsigned int *)0x56000054;

    if (which == 4)
    {
        /* 配置GPF4为输出引脚 */
        *pGPFCON = 0x100;
    }
    else if (which == 5)
    {
        /* 配置GPF5为输出引脚 */
        *pGPFCON = 0x400;
    }
    
    /* 设置GPF4/5输出0 */
    *pGPFDAT = 0;

    return 0;
}

汇编代码部分:

.text
.global _start
_start:
ldr sp,=4096
mov r0,#4
bl led_on

ldr r0,=100000
bl delay

mov r0,#5
bl led_on


halt:
 b halt

gcc 交叉编译部分:

all:
    arm-linux-gcc -c -o led.o led.c //编译led.c
    arm-linux-gcc -c -o start.o start.S//编译strat.s
    arm-linux-ld -Ttext 0 start.o led.o -o led.elf//链接 两个文件
    arm-linux-objcopy -O binary -S led.elf led.bin//生成bin文件
    arm-linux-objdump -D led.elf > led.dis//生成反汇编文件
clean:
    rm *.bin *.o *.elf *.dis

通过上面三个文件就可以生成 一个.bin文件 然后就执行了。。。。。。

 

2440 裸机学习 点亮LED

标签:void   --   elf   ati   语言   fda   com   inux   文件   

原文地址:https://www.cnblogs.com/hjxzjp/p/8570690.html

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