嵌入式Linux学习(四)用c语言点亮LED

2019-07-13 06:55发布

硬件初始化 1、关闭看门狗 2、初始化时钟 3、初始化SDRAM   启动文件需要完成的任务 1、设置main函数的返回地址 2、调用main函数           3、设置栈(将sp指针指向某块内存) 4、清理工作   自行编写启动文件 @************************************************ .text .global _start _start: LDR R0,=0x53000000 @WATCHDOG寄存器地址 MOV R1,#0x0 STR R1,[R0] @写入0,禁止看门狗,防止CPU不断重启 LDR sp,=1024*4 @设置堆栈 BL main @调用c程序中的main函数,并将返回地址保存在lr寄存器中 halt_loop: B halt_loop @死循环 编写.c文件 /* * p =( unsigned long *)0x56000050 * *p = (*(unsigned long *)0x56000050) 取得改地址处的值 * volatile告诉编译器不要优化该变量 */ #define GPFCON (*(volatile unsigned long *)0x56000050) #define GPFDAT (*(volatile unsigned long *)0x56000054) int main() { GPFCON = 0x00000100; //设置GPF4为输出口 GPFDAT = 0x00000000; //GPF4输出0,LED1点亮 return 0; }  编写makefile文件 led_on.bin :led.c start_up.s arm-linux-gcc -g -c -o led_on.o led.c arm-linux-gcc -g -c -o start_up.o start_up.s arm-linux-ld -Ttext 0x0000000 -g led_on.o start_up.o -o led_on_elf arm-linux-objcopy -O binary -S led_on_elf led_on.bin clean: rm -f led_on.bin led_on_elf *.o 烧写程序验证程序