2440 裸机学习 点亮LED
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文件 然后就执行了。。。。。。