第十章 C 语言版 LED 灯实验

进入C语言环境,先初始化DDR、设置堆栈指针SP等等

1、 设置主控进入SVC模式,设置栈指针,DDR在IVT的DCD已经初始化好DDR

2、 编写C文件

3、编写Makefile

objs := start.o main.o

ledc.bin:$(objs)
    arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^
    arm-linux-gnueabihf-objcopy -O binary -S ledc.elf $@
    arm-linux-gnueabihf-objdump -D -m arm ledc.elf > ledc.dis
    
%.o:%.s
    arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $@ $<
    
%.o:%.S
    arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $@ $<
    
%.o:%.c
    arm-linux-gnueabihf-gcc -Wall -nostdlib -c -O2 -o $@ $<
    
clean:
    rm -rf *.o ledc.bin ledc.elf ledc.dis
    

4、编写链接脚本,.lds
. =0x87800000; 点和等号之间有个空格

SECTIONS{
    . =0x87800000;
    .text :
    {
        start.o
        main.o
        *(.text)
    }
    .rodata ALIGN(4) : {*(.rodata*)}
    .data ALIGN(4) : {*(.data)}
    __bss_start = .;
    .bss ALIGN(4) : {*(.bss) *(COMMON)}
    __bss_end = .;
}


5、 测试

你可能感兴趣的:(第十章 C 语言版 LED 灯实验)