在ubuntu下開發(fā)ARM裸機(jī)程序--S3C6410—LED
轉(zhuǎn)載請(qǐng)注明出處,謝謝,張同浩:http://blog.csdn.net/muge0913/article/details/15016959
本文引用地址:http://m.butianyuan.cn/article/201611/318229.htm郵箱:muge0913@sina.com
下面是一個(gè)簡(jiǎn)單的點(diǎn)亮led燈的程序,在tiny6410上運(yùn)行。其中set_peri_port函數(shù)是必須要添加的,這樣才能訪問到s3c6410的外設(shè)空間。
@@ File:led_on.S@ 功能:LED點(diǎn)燈程序,點(diǎn)亮LED1@ .equ WATCHDOGCON, 0x7e004000.equ LEDCON, 0x7f008800.equ LEDDAT, 0X7f008808.text.global _start_start: bl setup_peri_portbl disable_watch_dogbl setup_spbl display_ledMAIN_LOOP:b MAIN_LOOPdisable_watch_dog:@往WATCHDOG寄存器寫0即可ldr r0,=WATCHDOGCONmov r1,#0x0str r1,[r0]mov pc,lrsetup_sp:@目前堆棧大小不能超過8kldr sp,=1024*8mov pc,lrsetup_peri_port:ldr r0,=0x70000013 @base addres:0x70000000,size:256MBmcr p15,0,r0,c15,c2,4mov pc,lrdisplay_led:ldr r0,=LEDCON @ R0設(shè)為LEDCON,即GPKCON0寄存器。此寄存器@ 用于選擇端口K各引腳的功能:@ 是輸出、是輸入、還是其他mov r1,#0x110000 str r1,[r0] @ 設(shè)置GPK4,5為輸出口ldr r0,=LEDDAT @ R0設(shè)為GPKDAT寄存器。此寄存器@ 用于讀/寫端口B各引腳的數(shù)據(jù)mov r1,#0x00000000 @ 此值為0x000000,低電平點(diǎn)亮ledstr r1,[r0] @ GPK4,5輸出0,LED4,5點(diǎn)亮mov pc,lr
Makefile文件如下:
led_on.bin : led_on.sarm-linux-gcc -g -O0 -c -o led_on.o led_on.sarm-linux-ld -Ttext 0x0000000 -g led_on.o -o led_on_elfarm-linux-objcopy -O binary -S led_on_elf led_on.binclean:rm -f led_on.bin led_on_elf *.o
評(píng)論