/* ========== start.s 启动汇编 ========== */
.global _start
_start:
ldr sp, =0xFFFF0000
bl main
halt:
b halt
/* ========== led.c 主C代码 ========== /
#define GPIOEOUTENB ( (volatile unsigned int )0xC001E004)
#define GPIOEOUT ((volatile unsigned int *)0xC001E000)
void delay(void)
{
volatile unsigned int i = 0xf00000;
for(; i > 0; i--);
}
int main(void)
{
unsigned int cnt = 0x2000;
GPIOEOUTENB |= (1U << 13);
while (cnt--)
{
GPIOEOUT &= ~(1U << 13);
delay();
GPIOEOUT |= (1U << 13);
delay();
}
while(1);
}
/* ========== led.lds 链接脚本 ========== */
SECTIONS
{
. = 0xC0000000;
.text : {
*(.text)
}
.rodata : {
*(.rodata)
}
.data : {
*(.data)
}
.bss : {
*( .bss )
}
}
========== 交叉编译命令 ==========
arm-linux-gnueabihf-as start.s -o start.o
arm-linux-gnueabihf-gcc -c led.c -o led.o -nostdlib
arm-linux-gnueabihf-ld start.o led.o -T led.lds -o led.elf
arm-linux-gnueabihf-objcopy -O binary led.elf led.bin