转载请注明出处,谢谢,张同浩:http://blog.csdn.net/muge0913/article/details/15016959
邮箱:muge0913@sina.com
下面是一个简单的点亮led灯的程序,在tiny6410上运行。其中set_peri_port函数是必须要添加的,这样才能访问到s3c6410的外设空间。
@ @ File:led_on.S @ 功能:LED点灯程序,点亮LED1 @ .equ WATCHDOGCON, 0x7e004000 .equ LEDCON, 0x7f008800 .equ LEDDAT, 0X7f008808 .text .global _start _start: bl setup_peri_port bl disable_watch_dog bl setup_sp bl display_led MAIN_LOOP: b MAIN_LOOP disable_watch_dog: @往WATCHDOG寄存器写0即可 ldr r0,=WATCHDOGCON mov r1,#0x0 str r1,[r0] mov pc,lr setup_sp: @目前堆栈大小不能超过8k ldr sp,=1024*8 mov pc,lr setup_peri_port: ldr r0,=0x70000013 @base addres:0x70000000,size:256MB mcr p15,0,r0,c15,c2,4 mov pc,lr display_led: ldr r0,=LEDCON @ R0设为LEDCON,即GPKCON0寄存器。此寄存器 @ 用于选择端口K各引脚的功能: @ 是输出、是输入、还是其他 mov r1,#0x110000 str r1,[r0] @ 设置GPK4,5为输出口 ldr r0,=LEDDAT @ R0设为GPKDAT寄存器。此寄存器 @ 用于读/写端口B各引脚的数据 mov r1,#0x00000000 @ 此值为0x000000,低电平点亮led str r1,[r0] @ GPK4,5输出0,LED4,5点亮 mov pc,lr
Makefile文件如下:
led_on.bin : led_on.s arm-linux-gcc -g -O0 -c -o led_on.o led_on.s arm-linux-ld -Ttext 0x0000000 -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
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』