GPIO(二)C程序
@ File:crt0.S
@ 功能:通過它轉(zhuǎn)入C程序
@******************************************************************************
.text
.global _start
_start:
ldr r0, =0x53000000 @ WATCHDOG寄存器地址
mov r1, #0x0
str r1, [r0] @ 寫入0,禁止WATCHDOG,否則CPU會(huì)不斷重啟
ldr sp, =1024*4 @ 設(shè)置堆棧,注意:不能大于4k, 因?yàn)楝F(xiàn)在可用的內(nèi)存只有4K
@ nand flash中的代碼在復(fù)位后會(huì)移到內(nèi)部ram中,此ram只有4K
bl main @ 調(diào)用C程序中的main函數(shù)
halt_loop:
b halt_loop
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
int main()
{
GPBCON = 0x00015400; // 設(shè)置GPB5-8為輸出口
//[11:10]=0b01,[13:12]=0b01,
//[15:14]=0b01,[17:16]=0b01,
GPBDAT = 0x00000000; // GPB5-8輸出0,LED1點(diǎn)亮
return 0;
}
使用如下命令進(jìn)行編譯和連接
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -nostdlib -o led_on_c.o led_on_c.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_elf
arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin
評論