这里做了编译日期的功能;生成的固件会有编译日期;
上效果:
这里有update.img和ota包的md5;还有版本日期;
首先上代码:(build.sh)
kernel_version=`grep -rnHI "LB_KERNEL_VERSION" ../sysdrv/source/kernel/include/generated/compile.h | awk -F\" '{print $2}'`
uboot_version=`grep -rnHI "U_BOOT_TIMESTAMP" ../sysdrv/source/uboot/u-boot/include/generated/timestamp_autogenerated.h | awk -F\" '{print $2}'`
rootfs_version=$(cat ../sysdrv/out/rootfs_glibc_rv1126/lonbon/local/sbin/FS_VERSION)
pushd $RK_PROJECT_OUTPUT_IMAGES
md5sum $usb_pkg | awk '{print " - USB Image: "$2" [MD5:"$1"]"}' > version.txt
md5sum $ota_pkg | awk '{print " - OTA Package: "$2" [MD5:"$1"]"}' >> version.txt
echo " - Version: U-boot[$uboot_version], Kernel[$kernel_version], Rootfs[${rootfs_version}]" >> version.txt
mv version.txt ../
popd
kernel直接过去LB_KERNEL_VERSION获取
uboot需要自己添加
然后会生成在
然后就是rootfs
生成一个FS_VERSION
编译到rootfs的时候就会更新;
然后在通过脚本弄过来;就实现
这样以后在代码里面就可以看到日期来确认你的板子日期版本
==========================================================================
串口打印如下
uboot:
kernel:
rootfs:
=========================================================================
下面是补丁:
commit 333e9f034aa0f8accbee918cc7365c6166e7b4ae (HEAD -> master)
Author: longmin <1938049502@qq.com>
Date: Mon Jul 1 15:26:19 2024 +0800
update uboot version time
diff --git a/Makefile b/Makefile
index 35713e5bd4..9504f90946 100644
--- a/Makefile
+++ b/Makefile
@@ -1417,6 +1417,7 @@ define filechk_timestamp.h
LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
+ LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIMESTAMP "%Y-%m-%d_%T"'; \
else \
return 42; \
fi; \
@@ -1426,6 +1427,7 @@ define filechk_timestamp.h
LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \
LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
+ LC_ALL=C date +'#define U_BOOT_TIMESTAMP "%Y-%m-%d_%T"'; \
fi)
endef
commit 86dd0e2f314119ea13fb21ff692a35aef35c656f (HEAD -> rk/master)
Author: longmin <1938049502@qq.com>
Date: Mon Jul 1 15:25:26 2024 +0800
update rootfs version time
diff --git a/Makefile b/Makefile
index 0562688..1de70ea 100644
--- a/Makefile
+++ b/Makefile
@@ -624,7 +624,7 @@ ifeq ($(SYSDRV_BUILD_VERSION),RELEASE)
##########################################################################################
# build rootfs
##########################################################################################
rootfs: rootfs_prepare pctools busybox boardtools drv
@echo -e "$(C_GREEN) ==sysdrv== build rootfs $(C_NORMAL)"
make -C $(SYSDRV_DIR) strip
make -C $(SYSDRV_DIR) dataro
make -C $(SYSDRV_DIR) datarw
@test ! -d $(SYSDRV_DIR)/tools/bin/* ||cp -fv $(SYSDRV_DIR)/tools/bin/* $(SYSDRV_DIR_OUT_ROOTFS)/bin
pushd $(SYSDRV_DIR)/out;tar cf $(OUT_ROOTFS).tar $(OUT_ROOTFS);popd
@# RK_PARTITION_FS_TYPE_CFG is defined outside of sysdrv,
@# so if defined RK_PARTITION_FS_TYPE_CFG, we ignore SYSDRV_ROOTFS_BUILD_TARGET
@test "$(ROOTFS_PART_SIZE)" = "FAIL" || \
test "$(RK_PARTITION_FS_TYPE_CFG)x" != "x" || \
make -C $(SYSDRV_DIR) $(SYSDRV_ROOTFS_BUILD_TARGET)
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_SOURCE_DIR), $(SYSDRV_DIR)/out/$(OUT_ROOTFS).tar )
$(call MAROC_COPY_PKG_TO_SYSDRV_OUTPUT, $(OUTPUT_ROOTFS_TOOLS_DIR), $(SYSDRV_DIR)/out/bin )
+ make -C $(SYSDRV_DIR) rootfs_version
@echo -e "$(C_GREEN) ==sysdrv== finish sysdrv build $(C_NORMAL)"
strip:
ifeq ($(SYSDRV_BUILD_VERSION),RELEASE)
@echo -e "$(C_GREEN) ==sysdrv== strip files of rootfs $(C_NORMAL)"
$(call MAROC_STRIP_DEBUG_SYMBOL, $(SYSDRV_DIR_OUT_ROOTFS))
endif
+ rootfs_version:
+ date +'%Y-%m-%d %H:%M:%S' > $(SYSDRV_DIR_OUT)/FS_VERSION
+ cp -fv $(SYSDRV_DIR_OUT)/FS_VERSION $(SYSDRV_DIR_OUT_ROOTFS)/lonbon/local/sbin
rootfs_ubi:
commit 64ffaa734ea657246ce3a7b1a2d38bef1eb6aa87 (HEAD -> master)
Author: longmin <1938049502@qq.com>
Date: Mon Jul 1 15:24:19 2024 +0800
add time for version.txt
diff --git a/build.sh b/build.sh
index a650527..cb48b1b 100755
--- a/build.sh
+++ b/build.sh
@@ -725,9 +725,15 @@ function build_lb_ota(){
msg_info "==build_lb_ota==not usb_pkg"
fi
+ kernel_version=`grep -rnHI "LB_KERNEL_VERSION" ../sysdrv/source/kernel/include/generated/compile.h | awk -F\" '{print $2}'`
+ uboot_version=`grep -rnHI "U_BOOT_TIMESTAMP" ../sysdrv/source/uboot/u-boot/include/generated/timestamp_autogenerated.h | awk -F\" '{print $2}'`
+ rootfs_version=$(cat ../sysdrv/out/rootfs_glibc_rv1126/lonbon/local/sbin/FS_VERSION)
+
pushd $RK_PROJECT_OUTPUT_IMAGES
md5sum $usb_pkg | awk '{print " - USB Image: "$2" [MD5:"$1"]"}' > version.txt
md5sum $ota_pkg | awk '{print " - OTA Package: "$2" [MD5:"$1"]"}' >> version.txt
+ echo " - Version: U-boot[$uboot_version], Kernel[$kernel_version], Rootfs[${rootfs_version}]" >> version.txt
mv version.txt ../
popd
pushd $RK_PROJECT_OUTPUT_IMAGE
这样实现一个简单的版本日期确定固件;后期生成固件会生成在固件尾部,这样就不会需要自己天天改固件的日期;