歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> TX2440 裸跑實驗-LED燈閃爍(ADS1.2編譯) 進階(一)

TX2440 裸跑實驗-LED燈閃爍(ADS1.2編譯) 進階(一)

日期:2017/3/1 9:58:18   编辑:Linux編程

一.實驗目的:

理解匯編的編程結構,了解arm匯編的子程序調用.

二.實驗環境:

TX2440平台

三.實驗工具:

ADS1.2 + AXD + JLINK調試

四.實驗步驟:

1.在ads 上建立新工程,增加源文件init.s

init.s源碼:

;我的LED程序,EastonWoo procedure

LED_CONFIG equ 0x56000050
LED_SWITCH equ 0x56000054
LED_UP equ (1<<1) ;第二個燈 ,我的第1個燈壞了

DELAY_TIME equ 0x70010000 ;這個時間像是沒有效果,但是單步調試,燈還是會閃的.

area init,code,readonly

entry ;一個進程中至少有一個.

start
ldr sp,=0x33ff8000 ;程序有效開始指令地址:0x30000000,,堆棧設在內存裡面,也就是大於0x30000000,注意不要跟代碼區沖突;
;如果設成0x1000,是寫不進棧的,讀出來是0xFFFFFFFF.
bl initial ;子程序 ;在內存中的地址為0x30000004

loop ;主循環

;關燈
ldr r0,=LED_SWITCH
ldr r1,[r0]
orr r1,r1,#LED_UP
str r1,[r0]

;延時DELAY_TIME
ldr r0,=DELAY_TIME
bl delay_here

;開燈
ldr r0,=LED_SWITCH
ldr r1,[r0]
mvn r2,#LED_UP
and r1,r1,r2
str r1,[r0]

;延時DELAY_TIME
ldr r0,=DELAY_TIME
bl delay_here

b loop ;類似於goto

initial

ldr r0,=LED_CONFIG ;控制內容給r0
ldr r1,[r0]
and r1,r1,#0xffffff00 ;控制內容清低8位
orr r1,r1,#0x55 ;控制內容低8位賦值.
str r1,[r0]
mov pc,lr

delay_here

sub r1,r1,#1
cmp r1,#0
bne delay_here
mov pc,lr

end

相關閱讀:http://www.linuxidc.com/search.aspx?where=nkey&keyword=21080

Copyright © Linux教程網 All Rights Reserved