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`\"

三、编译和执行的结果


相关文章:
2023-09-04 Linux 让shell编译脚本里面设置的环境变量改变kernel里面驱动文件的宏定义值方法,我这里用来做修改固件版本
一、原生的读取版本接口是/proc/version,我这里需要提供获取固件版本号的api给app,因为版本号会经常需要修改,如果每次都到kernel下修改比较麻烦,我这里是想在编译脚本里面对版本号进行修改,这样方便一点。 二、主要修…...
Python操作Excel实战:Excel行转列
# 1、原始数据准备 样例数据准备 地区1m2-5m6-10m11-20m21-40m地区单价计费单位费用最小值费用最大值北京13012011010090 天津13012011010090 石家庄13012011010090 保定140130120110100 张家口170150130120110 邢台1401201101…...
java实现迭代器模式
迭代器模式(Iterator Pattern)是一种行为型设计模式,它提供一种方法来顺序访问一个聚合对象(如列表、集合、数组等)中的元素,而不暴露聚合对象的内部表示。迭代器模式通常包括以下角色:迭代器&a…...
C++day7模板、异常、auto关键字、lambda表达式、数据类型转换、STL、list、文件操作
作业 封装一个学生的类,定义一个学生这样类的vector容器, 里面存放学生对象(至少3个) 再把该容器中的对象,保存到文件中。 再把这些学生从文件中读取出来,放入另一个容器中并且遍历输出该容器里的学生。 #include …...
【校招VIP】产品分析之活动策划宣传
考点介绍: 产品的上线运营是非常重要的。应该来说好的产品都是运营出来的,在一运营过程中难免会依靠策划活动来提高产品知名度、用户数。用户粘度等等指标一,如何策划一个成功的活动就显得非常重要。 产品分析之活动策划宣传-相关题目及解析…...
node基础之一:fs 模块
概念:文件的创建、删除、重命名、移动、写入、读取等 const fs require("fs");// 写入 fs.writeFile("./demo.txt", "hello", (err) > {}); fs.writeFileSync();// 追加 fs.appendFile("./demo.txt", "hello&quo…...
如何快速搭建母婴行业的微信小程序?
如果你想为你的母婴行业打造一个独特的小程序,但没有任何编程经验,别担心!现在有许多小程序制作平台提供了简单易用的工具,让你可以轻松地建立自己的小程序。接下来,我将为你详细介绍搭建母婴行业小程序的步骤。 首先&…...
【科普向】Jmeter 如何测试接口保姆式教程
现在对测试人员的要求越来越高,不仅仅要做好功能测试,对接口测试的需求也越来越多!所以也越来越多的同学问,怎样才能做好接口测试? 要真正的做好接口测试,并且弄懂如何测试接口,需要从如下几个…...
阿里云2核4G服务器5M带宽5年费用价格明细表
阿里云2核4G服务器5M带宽可以选择轻量应用服务器或云服务器ECS,轻量2核4G4M带宽服务器297元一年,2核4G云服务器ECS可以选择计算型c7、c6或通用算力型u1实例等,买5年可以享受3折优惠,阿腾云分享阿里云服务器2核4G5M带宽五年费用表&…...
【图解RabbitMQ-2】图解JMS规范与AMQP协议是什么
🧑💻作者名称:DaenCode 🎤作者简介:CSDN实力新星,后端开发两年经验,曾担任甲方技术代表,业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...
springboot整合mybatis实现增删改查(xml)--项目阶段1
目录 一、前言 二、创建项目 创建MySQL数据库和表 创建springboot项目 本文总体代码结构图预览 三、编写代码 (一)新建实体层属性类 (二)新建数据层mapper接口 (三)新建mapper的映射SQL(…...
springboot文件上传异步报错
因为迁移的生产环境,在新的服务器发生了之前没有遇到的问题,这种问题是在异步文件上传的时候才会出现 错误信息如下 16:17:50.009 ERROR c.w.einv.minio.service.impl.MinioFileServiceImpl - 文件上传错误! java.io.FileNotFoundException: /applicati…...
error: unable to unlink old ‘.gitlab-ci.yml‘: Permission denied
#gitlab-runner 执行代码git pull origin xxx 更新时候报 error: unable to unlink old ‘.gitlab-ci.yml’: Permission denied 问题环境:centos 部署gitlab-runner 执行脚本方式 选的shell 产生问题的原因:gitlab-runner程序进程占用锁定了.gitlab-ci…...
AJAX学习笔记3练习
AJAX学习笔记2发送Post请求_biubiubiu0706的博客-CSDN博客 1.验证用户名是否可用 需求,用户输入用户名,失去焦点-->onblur失去焦点事件,发送AJAX POST请求,验证用户名是否可用 新建表 前端页面 WEB-INF下新建lib包引入依赖,要用JDBC 后端代码 package com.web;import jav…...
springboot实战(五)之sql业务日志输出,重要
目录 环境: 一、mybatis-plus之sql分析日志输出 1.配置 2.验证 3.高级输出方式 二、业务日志输出到文件 1.添加log4j2依赖 2.排除logback依赖 3.新增log4j2的配置文件 4.添加配置 5.启动测试 6.给日志请求加个id 6.1、过滤器filter实现 6.2、测试 6.3、…...
redis7.2.0 centos源码编译安装并设置开机自启动
下载源码包 wget https://github.com/redis/redis/archive/7.2.0.tar.gz tar -zxf 7.2.0.tar.gz 编译编码 编译编码 cd redis-7.2.0 make && make install 此时默认redis-server redis-cli等命令行安装到目录/usr/local/bin/目录中。 如果你想安装命令行到指定目录中你…...
网易低代码引擎Tango正式开源
一、Tango简介 Tango 是一个用于快速构建低代码平台的低代码设计器框架,借助 Tango 只需要数行代码就可以完成一个基本的低代码平台前端系统的搭建。Tango 低代码设计器直接读取前端项目的源代码,并以源代码为中心,执行和渲染前端视图,并为用户提供低代码可视化搭建能力,…...
Apache Linkis 与 OceanBase 集成:实现数据分析速度提升
导语:恭喜 OceanBase 生态全景图中又添一员,Apache Linkis 构建了一个计算中间件层,以促进上层应用程序和底层数据引擎之间的连接、治理和编排。 近日,计算中间件 Apache Linkis 在其新版本中通过数据源功能,支持用户通…...
EXPLAIN概述与字段剖析
6. 分析查询语句:EXPLAIN(重点) 6.1 概述 定位了查询慢的sQL之后,我们就可以使用EXPLAIN或DESCRIBE 工具做针对性的分析查询语句。DESCRIBE语句的使用方法与EXPLAIN语句是一样的,并且分析结果也是一样的。 MySQL中有专门负责优化SELECT语句…...
基于Java IO 序列化方案的memcached-session-manager多memcached节点配置
session的序列化方案官方推荐的有4种 java serializationmsm-kryo-serializermsm-javolution-serializermsm-xstream-serializer 关于这几种,官方也给出了比较: Java serialization is very robust and a proven technology. The biggest disadvantage IMHO is th…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
用鸿蒙HarmonyOS5实现中国象棋小游戏的过程
下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
