DAR821_Linux_Makefile_txt(适合在编辑模式下看)

#包含 Rules.make 文件,如果没有包含 - 表示不会报警,继续运行
-include Rules.make
#MAKE_JOBS 在下面和 make -j 搭配使用,表示使用MAKE_JOBS个CPU进行编译,这个数值的设定与电脑性能有关,在Rules.make文件也有定义,如果没有包含Rules.make文件,这里为1核心,
#包含了Rules.make文件,在该文件中定义了多核数量为4,下文使用4代替MAKE_JOBS.
MAKE_JOBS ?= 1

#下面可以分成三组进行分析,make all,make clean,make install
all: linux arm-benchmarks am-sysinfo oprofile-example cryptodev linux-dtbs-jacinto u-boot-spl-j7200
clean: linux_clean arm-benchmarks_clean am-sysinfo_clean oprofile-example_clean cryptodev_clean linux-dtbs-jacinto_clean u-boot-spl-j7200_clean
install: linux_install arm-benchmarks_install am-sysinfo_install oprofile-example_install cryptodev_install linux-dtbs-jacinto_install u-boot-spl-j7200_install
#Kernel build targets
linux: linux-dtbs
#@表示在终端中不打印后面的信息,如果调试makefile,可以去掉@,查看makefile运行到哪一步出问题
@echo =================================
@echo Building the Linux Kernel
@echo =================================
#这里使用dir/代指 ( L I N U X K E R N E L I N S T A L L D I R ) 所代表的路径 , 此路径在 R u l e s . m a k e 定义为 " (LINUXKERNEL_INSTALL_DIR)所代表的路径,此路径在Rules.make定义为" (LINUXKERNELINSTALLDIR)所代表的路径,此路径在Rules.make定义为"(TI_SDK_PATH)/board-support/linux-5.10.100+gitAUTOINC+7a7a3af903-g7a7a3af903"
#make -c dir/ 表示跳转到dir目录下执行dir/makefile, 同时向dir/makefile传ARCH(板子的芯片架构) 和 CROSS_COMPILE(交叉编译工具链所在的路径)的参数
#make -c 运行完后,还会返回到之前的路径下
$(MAKE) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) $(DEFCONFIG)
#make -j4 -c dir/ 使用4核心编译dir/路径下的makefile,同时传入3个参数架构,交叉编译工具链,image
$(MAKE) -j $(MAKE_JOBS) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) Image
#make -j4 -c dir/ 使用4核心编译dir/路径下的makefile,同时传入3个参数架构,交叉编译工具链,modules
$(MAKE) -j $(MAKE_JOBS) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) modules

linux_install: linux-dtbs_install
@echo ===================================
@echo Installing the Linux Kernel
@echo ===================================
#if判断[]内条件是否成立, -d 判断路径是否为存在,存在为1,DESTDIR在Rules.make有定义,所以存在为1,同时 ! 表示取反, 即if[0],不执行选择程序.
@if [ ! -d $(DESTDIR) ] ; then
echo “The extracted target filesystem directory doesn’t exist.”;
echo “Please run setup.sh in the SDK’s root directory and then try again.”;
exit 1;
fi
#install -d 确认是否有后面的路径,没有自动新建一个
install -d KaTeX parse error: Expected 'EOF', got '#' at position 16: (DESTDIR)/boot #̲install a/ b/ 将…(DESTDIR)/boot 路径下
install $(LINUXKERNEL_INSTALL_DIR)/arch/arm64/boot/Image $(DESTDIR)/boot
install $(LINUXKERNEL_INSTALL_DIR)/vmlinux $(DESTDIR)/boot
install $(LINUXKERNEL_INSTALL_DIR)/System.map KaTeX parse error: Expected 'EOF', got '#' at position 16: (DESTDIR)/boot #̲跳转执行(LINUXKERNEL_INSTALL_DIR)路径下的makefile,并给它传入后面的参数,ARCH,CROSS_COMPILE,INSTALL_MOD_PATH,INSTALL_MOD_STRIP,modules_install
$(MAKE) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) INSTALL_MOD_PATH= ( D E S T D I R ) I N S T A L L M O D S T R I P = (DESTDIR) INSTALL_MOD_STRIP= (DESTDIR)INSTALLMODSTRIP=(INSTALL_MOD_STRIP) modules_install

linux_clean:
@echo =================================
@echo Cleaning the Linux Kernel
@echo =================================
#跳转执行$(LINUXKERNEL_INSTALL_DIR)路径下的makefile,并给它传入后面的参数,ARCH,CROSS_COMPILE,mrproper
$(MAKE) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) mrproper
#mrproper 在Linux内核下是这样定义的:
#@echo ‘Cleaning targets:’
#@echo ’ clean - 删除大多数生成的文件,但保留配置和足够的构建支持来构建外部模块’
#@echo ’ mrproper - 删除所有生成的文件+配置+各种备份文件’
#@echo ’ distclean - 删除编辑器备份和补丁文件’

#arm-benchmarks build targets
arm-benchmarks:
@echo =============================
@echo Building ARM Benchmarks
@echo =============================
#ARM Benchmarks ARM平台的性能测试工具 ,现在的路径是KaTeX parse error: Expected 'EOF', got '#' at position 58: …pplications文件夹 #̲''括起来表示shell命令,…(SDK_PATH_TARGET)进行编译, ( S D K P A T H T A R G E T ) 路径在 R u l e s . m a k e 定义为 " (SDK_PATH_TARGET)路径在Rules.make定义为" (SDKPATHTARGET)路径在Rules.make定义为"(TI_SDK_PATH)/linux-devkit/sysroots/aarch64-linux/"
@cd example-applications; cd find . -maxdepth 1 -type d -name "*arm-benchmarks*"; make CC=“$(CC)”

arm-benchmarks_clean:
@echo =============================
@echo Cleaning ARM Benchmarks
@echo =============================
#进入查找到的目录下,清理
@cd example-applications; cd find . -maxdepth 1 -type d -name "*arm-benchmarks*"; make clean

arm-benchmarks_install:
@echo ==============================================
@echo Installing ARM Benchmarks - Release version
@echo ==============================================
#进入查找到的目录下,安装
@cd example-applications; cd find . -maxdepth 1 -type d -name "*arm-benchmarks*"; make install

arm-benchmarks_install_debug:
@echo ============================================
@echo Installing ARM Benchmarks - Debug Version
@echo ============================================
#进入查找到的目录下,debug
@cd example-applications; cd find . -maxdepth 1 -type d -name "*arm-benchmarks*"; make install_debug
#am-sysinfo build targets
am-sysinfo:
@echo =============================
@echo Building AM Sysinfo
@echo =============================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*am-sysinfo*"; make CC=“$(CC)”

am-sysinfo_clean:
@echo =============================
@echo Cleaning AM Sysinfo
@echo =============================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*am-sysinfo*"; make clean

am-sysinfo_install:
@echo ===============================================
@echo Installing AM Sysinfo - Release version
@echo ===============================================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*am-sysinfo*"; make install

am-sysinfo_install_debug:
@echo =============================================
@echo Installing AM Sysinfo - Debug version
@echo =============================================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*am-sysinfo*"; make install_debug
#oprofile-example build targets
#OProfile是Linux内核支持的一种性能分析机制,是用于 Linux 评测和性能监控的工具。
oprofile-example:
@echo =============================
@echo Building OProfile Example
@echo =============================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*oprofile-example*"; make CC=“$(CC)”

oprofile-example_clean:
@echo =============================
@echo Cleaning OProfile Example
@echo =============================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*oprofile-example*"; make clean

oprofile-example_install:
@echo =============================================
@echo Installing OProfile Example - Debug version
@echo =============================================
@cd example-applications; cd find . -maxdepth 1 -type d -name "*oprofile-example*"; make install
#cryptodev是加密框架
cryptodev: linux
@echo ================================
@echo Building cryptodev-linux
@echo ================================
@cd board-support/extra-drivers;
cd find . -maxdepth 1 -type d -name "cryptodev*";
make ARCH=arm64 KERNEL_DIR=$(LINUXKERNEL_INSTALL_DIR)

cryptodev_clean:
@echo ================================
@echo Cleaning cryptodev-linux
@echo ================================
@cd board-support/extra-drivers;
cd find . -maxdepth 1 -type d -name "cryptodev*";
make ARCH=arm64 KERNEL_DIR=$(LINUXKERNEL_INSTALL_DIR) clean

cryptodev_install:
@echo ================================
@echo Installing cryptodev-linux
@echo ================================
@if [ ! -d KaTeX parse error: Expected 'EOF', got '#' at position 187: … exit 1; \ fi #̲makefile 运行正常应该…(LINUXKERNEL_INSTALL_DIR) INSTALL_MOD_PATH= ( D E S T D I R ) P R E F I X = (DESTDIR) PREFIX= (DESTDIR)PREFIX=(SDK_PATH_TARGET) INSTALL_MOD_STRIP=$(INSTALL_MOD_STRIP) install
#Kernel DTB build targets
linux-dtbs-jacinto: linux-dtbs
linux-dtbs-jacinto_clean: linux-dtbs_clean
linux-dtbs-jacinto_install: linux-dtbs_install

linux-dtbs:
@echo =====================================
@echo Building the Linux Kernel DTBs
@echo =====================================
$(MAKE) -C ( L I N U X K E R N E L I N S T A L L D I R ) A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) $(DEFCONFIG)
@for DTB in ti/k3-j7200-common-proc-board.dtb ; do
$(MAKE) -j $(MAKE_JOBS) -C ( L I N U X K E R N E L I N S T A L L D I R ) D T C F L A G S = − @ A R C H = a r m 64 C R O S S C O M P I L E = (LINUXKERNEL_INSTALL_DIR) DTC_FLAGS=-@ ARCH=arm64 CROSS_COMPILE= (LINUXKERNELINSTALLDIR)DTCFLAGS=@ARCH=arm64CROSSCOMPILE=(CROSS_COMPILE) $$DTB;
done
#makefile 是弱类型的语言, 在这里调用shell的循环逻辑
#时刻要清楚知道现在处的目录,MAKE -C 执行完后,会退回到之前的路径,ti/k3-j7200-common-proc-board.dtb是相对路径,但是在当前路径下并没有此文件夹,因此for的次数为0;

linux-dtbs_install:
@echo =======================================
@echo Installing the Linux Kernel DTBs
@echo =======================================
@if [ ! -d $(DESTDIR) ] ; then
echo “The extracted target filesystem directory doesn’t exist.”;
echo “Please run setup.sh in the SDK’s root directory and then try again.”;
exit 1;
fi
install -d $(DESTDIR)/boot
@for DTB in ti/k3-j7200-common-proc-board.dtb ; do
install -m 0644 ( L I N U X K E R N E L I N S T A L L D I R ) / a r c h / a r m 64 / b o o t / d t s / (LINUXKERNEL_INSTALL_DIR)/arch/arm64/boot/dts/ (LINUXKERNELINSTALLDIR)/arch/arm64/boot/dts/$DTB $(DESTDIR)/boot/;
done
#Linux文件属性是这样的结构 - — — —
#文件类型 主用户权限 组用户权限 其他用户权限
#权限为rwx,表示可读可写可执行,对应为111,二进制111转十进制是7 所以 chmod 777表示给这个文件所有用户,可读可写可执行的权限
#0644可以看成 0 6 4 4
#对应二进制为 0 rw- r-- r–
#在Linux下,使用ls -l 可以看到对应文件为 -rw-r–r–
#主用户可读可写,其余用户只读
linux-dtbs_clean:
@echo =======================================
@echo Cleaning the Linux Kernel DTBs
@echo =======================================
@echo “Nothing to do”

#u-boot build targets
u-boot-spl-j7200: u-boot
u-boot-spl-j7200_clean: u-boot_clean
u-boot-spl-j7200_install: u-boot_install

UBOOT_A72_BUILD_DIR= ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t b u i l d / a 72 U B O O T R 5 B U I L D D I R = (TI_SDK_PATH)/board-support/u-boot_build/a72 UBOOT_R5_BUILD_DIR= (TISDKPATH)/boardsupport/ubootbuild/a72UBOOTR5BUILDDIR=(TI_SDK_PATH)/board-support/u-boot_build/r5

UBOOT_ATF= ( T I S D K P A T H ) / b o a r d − s u p p o r t / p r e b u i l t − i m a g e s / b l 31. b i n U B O O T T E E = (TI_SDK_PATH)/board-support/prebuilt-images/bl31.bin UBOOT_TEE= (TISDKPATH)/boardsupport/prebuiltimages/bl31.binUBOOTTEE=(TI_SDK_PATH)/board-support/prebuilt-images/bl32.bin
UBOOT_SYSFW= ( T I S D K P A T H ) / b o a r d − s u p p o r t / p r e b u i l t − i m a g e s / s y s f w . b i n U B O O T D M = (TI_SDK_PATH)/board-support/prebuilt-images/sysfw.bin UBOOT_DM= (TISDKPATH)/boardsupport/prebuiltimages/sysfw.binUBOOTDM=(TI_SDK_PATH)/board-support/prebuilt-images/ipc_echo_testb_mcu1_0_release_strip.xer5f

UBOOT_SOC=j7200

u-boot: u-boot-a72 u-boot-r5
u-boot_clean: u-boot-a72_clean u-boot-r5_clean

u-boot-a72:
@echo ===================================
@echo Building U-boot for A72
@echo ===================================
#跳转到$(TI_SDK_PATH)/board-support/路径下,编译所有名为u-boot-的文件,输入参数为交叉工具链,UBOOT_MACHINE(在Rules.make文件中定义)以及出路径为UBOOT_A72_BUILD_DIR
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE)
( U B O O T M A C H I N E ) O = (UBOOT_MACHINE) O= (UBOOTMACHINE)O=(UBOOT_A72_BUILD_DIR)
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE)
CONFIG_MKIMAGE_DTC_PATH= ( U B O O T A 7 2 B U I L D D I R ) / s c r i p t s / d t c / d t c   A T F = (UBOOT_A72_BUILD_DIR)/scripts/dtc/dtc \ ATF= (UBOOTA72BUILDDIR)/scripts/dtc/dtc ATF=(UBOOT_ATF) TEE= ( U B O O T T E E ) D M = (UBOOT_TEE) DM= (UBOOTTEE)DM=(UBOOT_DM)
O=$(UBOOT_A72_BUILD_DIR)

u-boot-a72_clean:
@echo ===================================
@echo Cleaining U-boot for A72
@echo ===================================
$(MAKE) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE)
O=$(UBOOT_A72_BUILD_DIR) distclean
@rm -rf $(UBOOT_A72_BUILD_DIR)

u-boot-r5:
@echo ===================================
@echo Building U-boot for R5
@echo ===================================
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE_ARMV7)
( U B O O T M A C H I N E R 5 ) O = (UBOOT_MACHINE_R5) O= (UBOOTMACHINER5)O=(UBOOT_R5_BUILD_DIR)
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE_ARMV7)
O=$(UBOOT_R5_BUILD_DIR)
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / k 3 − i m a g e − g e n − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/k3-image-gen-* CROSS_COMPILE= (TISDKPATH)/boardsupport/k3imagegenCROSSCOMPILE=(CROSS_COMPILE_ARMV7)
SOC= ( U B O O T S O C ) S B L = (UBOOT_SOC) SBL= (UBOOTSOC)SBL=(UBOOT_R5_BUILD_DIR)/spl/u-boot-spl.bin

u-boot-r5_clean:
@echo ===================================
@echo Cleaining U-boot for R5
@echo ===================================
$(MAKE) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / u − b o o t − ∗ C R O S S C O M P I L E = (TI_SDK_PATH)/board-support/u-boot-* CROSS_COMPILE= (TISDKPATH)/boardsupport/ubootCROSSCOMPILE=(CROSS_COMPILE_ARMV7)
O=$(UBOOT_R5_BUILD_DIR) distclean
$(MAKE) -j $(MAKE_JOBS) -C ( T I S D K P A T H ) / b o a r d − s u p p o r t / k 3 − i m a g e − g e n − ∗ c l e a n S O C = (TI_SDK_PATH)/board-support/k3-image-gen-* clean SOC= (TISDKPATH)/boardsupport/k3imagegencleanSOC=(UBOOT_SOC)
@rm -rf $(UBOOT_R5_BUILD_DIR)

u-boot_install:
@echo ===================================
@echo Installing U-boot
@echo ===================================
@echo “Nothing to do”
#uboot编译之后,直接拷贝到分区好的SD卡中,按照SBL,SPL的要求存放,即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Btobk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值