2440 裸機學習 點亮LED
阿新 • • 發佈:2018-03-15
反匯編 一個 執行 mage -o signed ret oba 配置
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