树莓派裸核程序开发 —— 工程管理Makefile

本文介绍了一种针对裸核环境下驱动开发的Makefile配置方案。该方案详细展示了如何通过设置交叉编译工具链、编译选项及链接参数来构建适用于Raspberry Pi平台的驱动程序。此外,还提供了如何管理源代码文件以及执行编译和清理操作的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.源码结构

  dir目录:   --------- bin:可执行文件生成目录

                    --------- src:源文件目录------main.c   主程序文件

                                                          ------start.s    汇编启动文件

                     -------- Makefile   编译脚本

                     -------- raspi.lds   链接文件

2.Makefile文件

ARCH = arm-none-eabi          #声明交叉编译工具链
CC = ${ARCH}-gcc              #交叉编译c文件
CPP = ${ARCH}-g++             #交叉编译c++文件
AS = ${ARCH}-as               #交叉编译汇编文件
LD = ${ARCH}-ld               #链接工具
AR = ${ARCH}-ar
OBJCOPY = ${ARCH}-objcopy     #格式转化工具

PLATFORM = raspi


CFLAGS = -O0 -g -std=gnu99 -Werror -D__$(PLATFORM)__ -DRASPBERRY_PI -fno-builtin 
ASFLAGS = -g

CFLAGS_FOR_TARGET = -mcpu=arm1176jzf-s          #内核参数
ASFLAGS_FOR_TARGET = -mcpu=arm1176jzf-s
LDFLAGS = -nostdlib -static --error-unresolved-symbols  #链接参数


SRC_DIR := src                                  #源文件
INC_DIR := $(addsuffix /include,$(SRC_DIR))     #头文件
BUILD_DIR := $(addsuffix /build,$(SRC_DIR))

ASRC     := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.s))
AOBJ     := $(ASRC:.s=.o)
CSRC     := $(foreach sdir,$(SRC_DIR),$(wildcard $(sdir)/*.c))
COBJ     := $(CSRC:.c=.o)

INCLUDES := -Isrc $(addprefix -I,$(SRC_DIR) $(INC_DIR))

vpath %.c $(SRC_DIR)           #获取所有c文件列表
vpath %.cpp $(SRC_DIR)         #获取所有c++文件列表
vpath %.s $(SRC_DIR)           #获取所有汇编文件列表

%.o: %.c
	$(CC) $(CFLAGS_FOR_TARGET) $(INCLUDES) $(CFLAGS) -c -o $*.o $<

%.o: %.s
	$(AS) $(ASFLAGS_FOR_TARGET) $(INCLUDES) $(ASFLAGS) -o $*.o $<

OBJ = $(AOBJ) $(COBJ)

bin/kernel.img: bin/kernel.elf      #转化kernel.img
	${OBJCOPY} -O binary $< $@

bin/kernel.elf: raspi.ld $(OBJ) 
	${LD} ${LDFLAGS}  $(OBJ) -Map bin/kernel.map -o $@ -T raspi.ld  #链接kernel.elf

clean:
	rm -f bin/*.elf bin/*.img bin/*.map $(OBJ)                      #make clean

上面是裸核驱动开发工程进行管理的Makefile模板,

可以向src目录下添加新的驱动c文件,汇编s文件,Makefile不用做修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值