2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本

一、原生的读取版本接口是/proc/version,我这里需要提供获取固件版本号的api给app,因为版本号会经常需要修改,如果每次都到kernel下修改比较麻烦,我这里是想在编译脚本里面对版本号进行修改,这样方便一点。

二、主要修改kernel/fs/proc/version.c kernel/scripts/mkcompile_h ,我的编译脚本里面会去调用我的mk文件去设置环境变量。

复制代码
BOARD_CONFIG=$TOP_DIR/device/xxx/px30/BoardConfig-px30-evb-ddr4-v11-xxx-board.mk
source $BOARD_CONFIG


diff --git a/device/rockchip/px30/BoardConfig-px30-evb-ddr4-v11-uic-board.mk b/device/rockchip/px30/BoardConfig-px30-evb-ddr4-v11-uic-board.mk
index 21bc39866..b8841fb9f 100755
--- a/device/rockchip/px30/BoardConfig-px30-evb-ddr4-v11-uic-board.mk
+++ b/device/rockchip/px30/BoardConfig-px30-evb-ddr4-v11-uic-board.mk
@@ -51,3 +51,4 @@ export RK_USERDATA_DIR=userdata_normal
 export RK_MISC=wipe_all-misc.img
 #choose enable distro module
 export RK_DISTRO_MODULE=
+export DEVICE_FIRMWARE_VERSION=v2.00
\ No newline at end of file
diff --git a/kernel/fs/proc/version.c b/kernel/fs/proc/version.c
old mode 100644
new mode 100755
index b5d4a052a..27f8a15cf
--- a/kernel/fs/proc/version.c
+++ b/kernel/fs/proc/version.c
@@ -17,7 +17,7 @@ static int version_proc_show(struct seq_file *m, void *v)

 static int firmware_version_proc_show(struct seq_file *m, void *v)
 {
-       seq_printf(m, "V1.0 Date:%s",FIRMWARE_VERSION);
+       seq_printf(m, "%s",DEVICE_FIRMWARE_VERSION);
        return 0;
 }

diff --git a/kernel/scripts/mkcompile_h b/kernel/scripts/mkcompile_h
index 897165138..bac38c411 100755
--- a/kernel/scripts/mkcompile_h
+++ b/kernel/scripts/mkcompile_h
@@ -66,7 +66,7 @@ UTS_LEN=64
 UTS_TRUNCATE="cut -b -$UTS_LEN"

 # Generate a temporary compile.h
-
+echo DEVICE_FIRMWARE_VERSION:$DEVICE_FIRMWARE_VERSION
 ( echo /\* This file is auto generated, version $VERSION \*/
   if [ -n "$CONFIG_FLAGS" ] ; then echo "/* $CONFIG_FLAGS */"; fi

@@ -74,6 +74,7 @@ UTS_TRUNCATE="cut -b -$UTS_LEN"

   echo \#define UTS_VERSION \"`echo $UTS_VERSION | $UTS_TRUNCATE`\"
   echo \#define FIRMWARE_VERSION \"`echo $FIRMWARE_VERSION`\"
+  echo \#define DEVICE_FIRMWARE_VERSION \"`echo $DEVICE_FIRMWARE_VERSION`\"
   echo \#define FIRMWARE_VERSION_NUMBER \  `echo $FIRMWARE_VERSION_NUMBER`\
   echo \#define LINUX_COMPILE_BY \"`echo $LINUX_COMPILE_BY | $UTS_TRUNCATE`\"
   echo \#define LINUX_COMPILE_HOST \"`echo $LINUX_COMPILE_HOST | $UTS_TRUNCATE`\"

三、编译和执行的结果

相关推荐
用户9718356334663 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪4 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8820 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠20 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质21 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush421 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52021 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz21 小时前
Maven依赖冲突
java·服务器·maven
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理