[stm32F4,0]zephyr镜像的入口函数--移置的第一步

本文旨在将Zephyr操作系统移植到stm32F4微控制器上。首先,从stm32f1的移植经验出发,通过分析Zephyr的Makefile和链接脚本(linker.ld),确定了入口点的查找过程。虽然了解到链接脚本的层级结构,但并未直接找到明确的入口函数。通过搜索源码,尝试ENTRY、start等方法,仍未成功。最后,指出.Zephyr源码中的可能线索,并提供了stm32f1编译生成的linker.cmd文件内容,为后续的入口函数定位提供参考。
摘要由CSDN通过智能技术生成

目的:将zephyr搬到我的stm32F4 soc上。


移置当然是有个base,所以这里是stm32f1。第一步当然是cpu上电后执行的第一个命令。

找到镜像程序被cpu执行的第一条语句,那需要知道镜像文件的组成结构,

那么根据根目录下的Makefile,其指明编译zephyr镜像文件需要的链接脚本。

ifdef CONFIG_HAVE_CUSTOM_LINKER_SCRIPT
KBUILD_LDS         := $(subst $(DQUOTE),,$(CONFIG_CUSTOM_LINKER_SCRIPT))
else
# Try a board specific linker file
KBUILD_LDS := $(srctree)/boards/$(BOARD_NAME)/linker.ld

# If not available, try an SoC specific linker file
ifeq ($(wildcard $(KBUILD_LDS)),)
KBUILD_LDS         := $(srctree)/arch/$(ARCH)/soc/$(SOC_PATH)/linker.ld
endif
endif

CONFIG_CUSTOM_LINKER_SCRIPT=""中定义的优先级最高,接着使用board目录下的,最后使用arch目录下的链接文件。

目前stm32f1使用的文件是arch/arm/soc/st_stm32/stm32f1->include/arch/arm/cortex_m/scripts/linker.ld

而实际上知道了这个并没有什么用,你不知道镜像的第一条指令是由那条代码提供的。

仔细查看根目录的makefile,可以得到如下的参数设定:

quiet_cmd_create-lnk = LINK    $@
      cmd_create-lnk =								\
(										\
	echo $(LDFLAGS_zephyr); 						\
	echo "$(LINKFLAGPREFIX)-Map=$(O)/$(KERNEL_NAME).map"; 			\
	echo "-L $(objtree)/include/generated";					\
	echo "-u _OffsetAbsSyms -u _ConfigAbsSyms"; 				\
	<span style="color:#003300;"><strong>echo "-e __start"; </strong></span>						 	\
	echo "$(LINKFLAGPREFIX)--start-group";					\
	echo "$(LINKFLAGPREFIX)--whole-archive";				\
	echo "$(KBUILD_ZEPHYR_APP)";						\
	echo "$(LINKFLAGPREFIX)--no-whole-archive";         			\
	echo "$(KBUILD_ZEPHYR_MAIN)";						\
	echo "$(objtree)/arch/$(ARCH)/core/offsets/offsets.o"; 			\
	echo "$(LINKFLAGPREFIX)--end-group"; 					\
	echo "$(LIB_INCLUDE_DIR) $(LINK_LIBS)";					\
) > $@
其中颜色突出的部分即为镜像文件的入口点&
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值