×
单片机 > 单片机程序设计 > 详情

在ubuntu下开发ARM裸机程序--S3C6410—LED

发布时间:2020-05-26 发布时间:
|
很多人都是在ads或者rvds或keil中开发ARM裸机程序,使用此类的开发工具虽然简单但是却不能使开发者很好的掌握更多程序原理,要想更好的掌握更多程序细节,感觉还是最好使用arm-linux-进行开发。

转载请注明出处,谢谢,张同浩: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
 
关键字:ubuntu  ARM裸机程序  S3C6410  LED 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈AVR中定时器几种工作模式