匯程式設計序:
#define config_periport_base 0x70000000
#define config_periport_size 0x13
#define wtcon 0x7e004000
.global _start
_start:
/*告訴cpu 外設的位址*/
ldr r0, =config_periport_base
orr r0, r0, #config_periport_size
mcr p15,0,r0,c15,c2,4
/*關閉看門狗*/
ldr r0, =wtcon
mov r1, #1
str r1,[r0]
mov sp,#(1024*8) //設定棧,用來儲存c函式的返回位址等等資訊
bl ***x //跳轉到c函式中執行
halt:
b halt
c程式:
#define gpmdat (volatile unsigned long *)0x7f008824
#define gpmcon (volatile unsigned long *)0x7f008820
void delay()
}int ***x()
return 0;
}
在編譯的時候會出現下面的錯誤:
arm-linux-gcc -c -o start.o start.s
arm-linux-gcc -c -o led.o led.c
arm-linux-ld -ttext 0 -o led.elf start.o led.o
led.o:(.arm.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr0'
led.o:(.arm.exidx+0x8): undefined reference to `__aeabi_unwind_cpp_pr1'
make: *** [led.bin] error 1
解決方法如下:
led.o:led.c
arm-linux-gcc-nostdlib -c -o led.o led.c
start.o:start.s
arm-linux-gcc-nostdlib -c -o start.o start.s
在編譯的選項中加入nostdlib 選項,不連線系統標準啟動檔案和標準庫檔案,只把指定的檔案傳遞給聯結器。這個選項常用於編譯核心、bootloader等程式,它們不需要啟動檔案、標準庫檔案。
6410之寫跳轉到c函式中執行
匯程式設計序 define config periport base 0x70000000 define config periport size 0x13 define wtcon 0x7e004000 global start start 告訴cpu 外設的位址 ldr r0,config pe...
關於keil中無法跳轉到函式 變數定義處的問題
keil中無法跳轉到定義的情況有多種情況 1 工程編譯不成功,這種情況肯定跳轉不到定義的,這時只能根據編譯提示資訊檢查程式直到程式正常通過編譯吧。2 工程未編譯或工程清空編譯資訊後未再進行編譯,肯定會跳轉不到定義處,這時一般再編譯一次工程就可以了。3 某些暫存器變數,列舉型別或結構體變數。4 定義的...
32k通過位址跳轉到函式 C語言結構化程式設計之函式
可重用性是一種編寫 並多次使用它的方法。使用結構化程式設計技術,我們編寫一次 並多次使用它。結構化程式設計還使程式易於理解,提高程式質量,易於實現並減少時間。在c語言中,可以使用函式概念來設計結構化程式設計。使用函式概念,我們可以將較大的程式劃分為較小的子程式,並且這些子程式是單獨實現的。c語言中的...