当前位置: 首页 > news >正文

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_normalexport RK_MISC=wipe_all-misc.img#choose enable distro moduleexport 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=64UTS_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`\"

三、编译和执行的结果

http://www.lryc.cn/news/154343.html

相关文章:

  • Python操作Excel实战:Excel行转列
  • java实现迭代器模式
  • C++day7模板、异常、auto关键字、lambda表达式、数据类型转换、STL、list、文件操作
  • 【校招VIP】产品分析之活动策划宣传
  • node基础之一:fs 模块
  • 如何快速搭建母婴行业的微信小程序?
  • 【科普向】Jmeter 如何测试接口保姆式教程
  • 阿里云2核4G服务器5M带宽5年费用价格明细表
  • 【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么
  • springboot整合mybatis实现增删改查(xml)--项目阶段1
  • springboot文件上传异步报错
  • error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied
  • AJAX学习笔记3练习
  • springboot实战(五)之sql业务日志输出,重要
  • redis7.2.0 centos源码编译安装并设置开机自启动
  • 网易低代码引擎Tango正式开源
  • Apache Linkis 与 OceanBase 集成:实现数据分析速度提升
  • EXPLAIN概述与字段剖析
  • 基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
  • LinkedList(3):并发异常
  • vue里el-form+el-table实现验证规则的写法
  • K8S 基础概念学习
  • Java之正则表达式的详细解析
  • 移动端的屏幕分辨率与浏览器的视口宽度(视口大小)是两回事儿
  • 分布式 - 服务器Nginx:基础系列之Nginx静态资源优化配置指令sendfile | tcp_nopush | tcp_nodelay
  • Sentinel配置的blockHandler方法不生效
  • Mybatis的三种映射关系以及联表查询
  • 基于串口校时的数字钟设计
  • 支持向量机(二)
  • Arrays.asList 和 null 类型