日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[ATF]-ATF makefile的导读

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [ATF]-ATF makefile的导读 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

快速鏈接:
.
👉👉👉 個人博客筆記導讀目錄(全部) 👈👈👈

根據BLx_SOURCE是否定義,來選擇編譯的鏡像. BLx_SOURCE的第一次定義一般在plat/xxx/platform.mk

ifdef BL1_SOURCES NEED_BL1 := yes include bl1/bl1.mk endififdef BL2_SOURCES NEED_BL2 := yes include bl2/bl2.mk endififdef BL2U_SOURCES NEED_BL2U := yes include bl2u/bl2u.mk endififdef BL31_SOURCES # When booting an EL3 payload, there is no need to compile the BL31 image nor # put it in the FIP. ifndef EL3_PAYLOAD_BASE NEED_BL31 := yes include bl31/bl31.mk endif endif

這里是平臺的定義,選擇哪一個SPD(secure payload dispatcher)
即當敲擊make -C $DIRPATH RESET_TO_BL31=1 PLAT=xxx all,傳過來的PLAT值

ifeq (${PLAT},xxx) SPD := opteed endififneq (${SPD},none) ifdef EL3_PAYLOAD_BASE$(warning "SPD and EL3_PAYLOAD_BASE are incompatible build options.")$(warning "The SPD and its BL32 companion will be present but ignored.") endif# We expect to locate an spd.mk under the specified SPD directorySPD_MAKE := $(shell m="services/spd/${SPD}/${SPD}.mk"; [ -f "$$m" ] && echo "$$m")ifeq (${SPD_MAKE},)$(error Error: No services/spd/${SPD}/${SPD}.mk located)endif$(info Including ${SPD_MAKE})include ${SPD_MAKE}# If there's BL32 companion for the chosen SPD, we expect that the SPD's# Makefile would set NEED_BL32 to "yes". In this case, the build system# supports two mutually exclusive options:# * BL32 is built from source: then BL32_SOURCES must contain the list# of source files to build BL32# * BL32 is a prebuilt binary: then BL32 must point to the image file# that will be included in the FIP# If both BL32_SOURCES and BL32 are defined, the binary takes precedence# over the sources. endif

給NEED_BL31宏賦值

ifdef BL31_SOURCES # When booting an EL3 payload, there is no need to compile the BL31 image nor # put it in the FIP. ifndef EL3_PAYLOAD_BASE NEED_BL31 := yes include bl31/bl31.mk endif endif

調用MAKE_BL(31,in_fip)編譯BL31

(Makefile) ifeq (${NEED_BL31},yes) BL31_SOURCES += ${SPD_SOURCES} $(if ${BL31}, $(eval $(call MAKE_TOOL_ARGS,31,${BL31},in_fip)),\$(eval $(call MAKE_BL,31,in_fip))) endif

MAKE_BL函數的實現:

(make_helpers/build_macros.mk) # MAKE_BL macro defines the targets and options to build each BL image. # Arguments: # $(1) = BL stage (2, 2u, 30, 31, 32, 33) # $(2) = In FIP (false if empty) define MAKE_BL$(eval BUILD_DIR := ${BUILD_PLAT}/bl$(1))$(eval BL_SOURCES := $(BL$(call uppercase,$(1))_SOURCES))$(eval SOURCES := $(BL_SOURCES) $(BL_COMMON_SOURCES) $(PLAT_BL_COMMON_SOURCES))$(eval OBJS := $(addprefix $(BUILD_DIR)/,$(call SOURCES_TO_OBJS,$(SOURCES))))$(eval LINKERFILE := $(call IMG_LINKERFILE,$(1)))$(eval MAPFILE := $(call IMG_MAPFILE,$(1)))$(eval ELF := $(call IMG_ELF,$(1)))$(eval DUMP := $(call IMG_DUMP,$(1)))$(eval BIN := $(call IMG_BIN,$(1)))$(eval BL_LINKERFILE := $(BL$(call uppercase,$(1))_LINKERFILE))$(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1)))$(eval $(call MAKE_LD,$(LINKERFILE),$(BL_LINKERFILE)))$(BUILD_DIR):$$(Q)mkdir -p "$$@"$(ELF): $(OBJS) $(LINKERFILE)@echo " LD $$@"@echo 'const char build_message[] = "Built : "__TIME__", "__DATE__; \const char version_string[] = "${VERSION_STRING}";' | \$$(CC) $$(CFLAGS) -xc - -o $(BUILD_DIR)/build_message.o$$(Q)$$(LD) -o $$@ $$(LDFLAGS) -Map=$(MAPFILE) --script $(LINKERFILE) \$(BUILD_DIR)/build_message.o $(OBJS)$(DUMP): $(ELF)@echo " OD $$@"$${Q}$${OD} -dx $$< > $$@$(BIN): $(ELF)@echo " BIN $$@"$$(Q)$$(OC) -O binary $$< $$@@echo@echo "Built $$@ successfully"@echo ifeq ($(1),31)cp $$@ $(BUILD_PLAT)/sloader.img endif.PHONY: bl$(1) bl$(1): $(BUILD_DIR) $(BIN) $(DUMP)all: bl$(1)$(eval $(call MAKE_TOOL_ARGS,$(1),$(BIN),$(2)))endef

ELF的生成使用到了LINKERFILE,而LINKERFILE就等于bl31.ld.S

$(eval BL_LINKERFILE := $(BL$(call uppercase,$(1))_LINKERFILE)) $(eval $(call MAKE_LD,$(LINKERFILE),$(BL_LINKERFILE))) BL31_LINKERFILE := bl31/bl31.ld.S

總結

以上是生活随笔為你收集整理的[ATF]-ATF makefile的导读的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看jizz | 日韩综合av | 第一区免费在线观看 | 五月天激情婷婷 | 日日操天天操 | 日韩成人免费在线观看 | 韩国美女福利视频 | 欧美天天影院 | 9i在线看片成人免费 | 超碰国产在线观看 | 四虎4hu永久免费网站影院 | 猫咪av在线| 日韩欧美福利视频 | 国产日韩欧美激情 | 午夜xxxxx | 强睡邻居人妻中文字幕 | 岛国一区二区 | 成人久久视频 | 亚洲激情中文 | 国模无码大尺度一区二区三区 | 性生交生活片1 | 午夜裸体性播放 | av观看在线免费 | 中文字幕av高清片 | 少妇av片 | 国产aⅴ一区二区三区 | 精品国产亚洲一区二区麻豆 | 国产夫妻视频 | 亚洲视频免费观看 | 日韩精品成人一区 | 一本到av| www.日本黄 | 国产av剧情一区二区三区 | 性xxxxbbbb | 国内成人精品 | 亚洲一区久久久 | 激情导航 | 人人草网站 | 激情视频国产 | 91青青操| 免费无码肉片在线观看 | 国产精品porn | 色播激情| 免费人妻精品一区二区三区 | 性欧美video另类hd尤物 | 打屁股视频网站 | 男生和女生一起差差差很痛的视频 | a级欧美| 成人做爰视频www网站小优视频 | 久久久久久久伊人 | 黄色小视频免费观看 | 亚洲成人精品久久 | 国产精品成人免费精品自在线观看 | 国产97av | 成人午夜视频网站 | 麻豆av在线播放 | 精品人妻一区二区三区四区 | 特级西西人体444www高清 | 成人av在线网 | 日韩综合一区 | 黑人性生活视频 | www.国产黄色 | 亚洲色图88 | 久久久精品一区二区涩爱 | 阿娇全套94张未删图久久 | 欧美一级免费 | 日韩精品一区二区三区中文在线 | 日韩视频一二三区 | 麻豆视频在线免费观看 | 色综合免费视频 | japanese国产打屁股网站 | 日韩精品一区二区av | 男人天堂2019| 久久国产精品免费 | 日韩精品成人在线 | 色悠久久综合 | 丝袜老师扒开让我了一夜漫画 | 九九热视频这里只有精品 | 黄色日皮视频 | 久久午夜福利电影 | 综合视频一区 | 国产综合色视频 | 欧美成本人视频 | 久久人人超碰 | 久久久三级视频 | 亚洲成人基地 | 天天做日日做 | 天天干夜夜想 | 国产精品手机在线观看 | 国产卡一卡二卡三无线乱码新区 | 男人把女人捅爽 | 国产乱码精品一区二区三区五月婷 | 久久久888 | 在线国产视频一区 | 日本色网址 | 怡春院视频 | 一级爱爱片| 欧美日韩国产免费观看 | 欧美性大战久久久 |