rk3562 buildrooot编译更新的lib库push后无效问题分析

先show代码, 原本在idf2_dio_demo.cpp展示版本信息:

复制代码
zs@sr658:~/rk3562-optmv-idd1/external/opt_idf2_dio_lib$ git show  943bfd02c3f59d779fd1bf1c4b15c496fb88ee8d
commit 943bfd02c3f59d779fd1bf1c4b15c496fb88ee8d (HEAD)
Author: hzs <hzs@optmv.com>
Date:   Wed Apr 8 17:27:30 2026 +0800

    nav1: update OPTController_GetVersion() API to get version: 2026040865010230

diff --git a/OPTController.cpp b/OPTController.cpp
index 8db10ac..1790c37 100755
--- a/OPTController.cpp
+++ b/OPTController.cpp
@@ -28,10 +28,8 @@ using namespace std;
 // #define new DEBUG_NEW
 // #endif

-#define OPT_VERSION "202408100701010"
-//#define OPT_VERSION "202211120401230" //idf1 ar0234 200w
-//#define OPT_VERSION "20220721040105" //idf1 ar0521 500w
-//#define OPT_VERSION "20220726040108" //idf1 ar0822 800w
+#define OPT_VERSION "2026040865010230"
+
 /*****************************全局变量*****************************************/
 int g_dio_fd = 0;
 int g_spi_fd = 0;
@@ -759,10 +757,15 @@ long OPTController_ReadIPConfigBySN(char *SN, char *IP, char *subnetMask, char *

 long OPTController_GetVersion(char *version)
 {
-       version = strcpy(version,OPT_VERSION);
-       return 0;
+               char source[] = "2026040865010230"; //2026040865010230
+               // strncpy(destination, source, sizeof(destination) - 1);
+               //strncpy(version, source, sizeof(version) - 1);
+        // version = strcpy(version,OPT_VERSION);
+        version = strcpy(version,source);
+        return 0;
 }

+
 long OPTController_Get_Battery_capacity(char *capacity)
 {
        int ret = 0;
@@ -809,7 +812,6 @@ long OPTController_Get_Battery_capacity(char *capacity)

        pclose(battery_fp);

-       //capacity = strcpy(capacity,OPT_VERSION);
        capacity = strcpy(capacity,buffer);
        printf("to get battery capacity_buffer = %s, battery_cap = %d v \n", buffer, battery_cap);
        //printf("to get battery buffer capacity = %s, capacity = %d v \n", buffer, capacity);
diff --git a/idf2_dio_demo.cpp b/idf2_dio_demo.cpp
index c78c2c6..17ad22d 100755
--- a/idf2_dio_demo.cpp
+++ b/idf2_dio_demo.cpp
@@ -31,7 +31,7 @@ void menu(void)
            "28:设置wifi使能         29:读取wifi使能状态\n"
            "31:设置wifi未连接指示灯  32:读取wifi未连接指示灯状态     33:设置正常电量指示灯       34:读取正常电量指示灯状态\n"
            "35:设置低电量指示灯      36:读取低电量指示灯状态     37:读取充电状态   38:读取当前电池电量值 39:读取当前电池电压值\n"
-           "40:进入系统关机          41:读取固件版本号   100:菜单               其他: 退出\n"
+           "40:进入系统关机          100:菜单               其他: 退出\n"
            "=======================================================================================\n");
 }

@@ -58,7 +58,7 @@ int main(int argc, char *argv[])
     struct input_event inputevent;
     int dac_value = 0;
     const char *filename = "xxx";
-    char cur_version[40] = {0};
+    //char cur_version[40] = {0};
     char battery_capacity[10] = {0};
     int cn3927e_back_flag = 0;
     int cn3927e_adc = 0;
@@ -699,10 +699,10 @@ int main(int argc, char *argv[])
             //            "====================================================\n");
             // }
             break;
-        case 41:
-            OPTController_GetVersion(cur_version);
-            printf("当前固件版本号:%s\n",cur_version);
-            break;
+        // case 41:
+        //     OPTController_GetVersion(cur_version);
+        //     printf("当前固件版本号:%s\n",cur_version);
+        //     break;

         case 100:
             menu();
diff --git a/main.cpp b/main.cpp
index e3c9143..0775fba 100755
--- a/main.cpp
+++ b/main.cpp
@@ -16,6 +16,7 @@ void menue()
     printf("6.读取工作状态\n");
     printf("20.设置IAP/APP启动(0:APP,1:IAP)\n");
     printf("40.读取MCU版本号\n");
+    printf("41.读取固件版本号\n");
     printf("100 菜单\n");
     printf("其他 退出\n");
 }
@@ -23,7 +24,7 @@ void menue()
 int main(int argc, char *argv[])
 {
     /* code */
-
+    char buf2[200]={0};
     OPTController_Handle handle;
     const char* filename="/dev/opt_idf2_spi";
     long re=OPTController_OpenSPI((char *)filename, &handle);
@@ -102,6 +103,12 @@ int main(int argc, char *argv[])
             else
                 printf("读取MCU版本号失败 ret:%d\n",ret);
             break;
+        case 41:
+            printf("获取固件版本\n");
+            ret = OPTController_GetVersion(buf2);
+            printf("ret=%ld\n", ret);
+            printf("version: %s\n", buf2);
+            break;
         case 100:
             menue();
             break;
hzs@sr658:~/rk3562-optmv-idd1/external/opt_idf2_dio_lib$

根据CMakeLists.txt

将编译生成的库文件和idf2_dio_demo通过adb push到系统的/usr/lib/下面,测试还是未能读取正常

但修改idf2_dio_demo.cpp字符增加printf打印,则是可以变化,说明push也都是到位生效的,

中间也都尝试删除buildroot的out目录下面的生成文件尝试验证,也都验证未能生效

但里面的内容未和还没变动,百思不得其解,接着尝试对比其他rk3588平台代码,验证了代码的写法也都是大同小异,基本一致性的.接着我尝试将此demo移植到main代码来显示,修改方式如下:

后来改为main:

接口的代码:

通过adb push进行验证是奏效的,然后就先给出去了

但给到应用开发中,发现还是未能改动, version字符获取回来还是version "2025122930010000)", 什么原因呢 ?

最后发现: libIDDIOSDK.so这个库被应用打包到这里来了,在环境变量引用到估计引导到这个库导致的,实际应该是采用了/usr/lib/libIDDIOSDK.so

知道原因猜想,马上将/root/xxx/libIDDIOSDK.so下面的库给rm掉测试, 发现依旧还是不行

接着发现系统设备还没重新,马上重启设备再次测试即可ok正常获取回来,问题得到了解决.

因为rm掉libIDDIOSDK.so后,系统并没有马上生效,需要重启系统一下,这个也都相当注意.

真是老司机也都有大意的时候,时刻需要警醒着.

扩展一个linux命令实用的功能:

find -name "*defconfig" |xargs -I {} sed -i s/rockchip_rk3562_scd1/rockchip_rk3562_aaa/g {}

复制代码
hzs@sr658:~/rk3562-v1.2.0-sdk/device/rockchip/.chips/rk3562$ find  -name "*defconfig" |xargs -I {} sed  -i s/rockchip_rk3562_scd1/rockchip_rk3562_aaa/g {}
hzs@sr658:~/rk3562-v1.2.0-sdk/device/rockchip/.chips/rk3562$
hzs@sr658:~/rk3562-v1.2.0-sdk/device/rockchip/.chips/rk3562$ gst
On branch optmv-idr2
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        typechange: rockchip_defconfig
        modified:   rockchip_rk3562_rt_scd1_color_defconfig
        modified:   rockchip_rk3562_rt_scd1_mono_defconfig
        modified:   rockchip_rk3562_scd1_color_defconfig
        modified:   rockchip_rk3562_scd1_mono_defconfig

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        rockchip_rk3562_rt_scd1_lib_mono_defconfig

no changes added to commit (use "git add" and/or "git commit -a")
hzs@sr658:~/rk3562-v1.2.0-sdk/device/rockchip/.chips/rk3562$ git diff
diff --git a/.chips/rk3562/rockchip_defconfig b/.chips/rk3562/rockchip_defconfig
deleted file mode 120000
index 94967d7..0000000
--- a/.chips/rk3562/rockchip_defconfig
+++ /dev/null
@@ -1 +0,0 @@
-rockchip_rk3562_evb2_ddr4_v10_defconfig
\ No newline at end of file
diff --git a/.chips/rk3562/rockchip_defconfig b/.chips/rk3562/rockchip_defconfig
new file mode 100644
index 0000000..8f7ebe0
--- /dev/null
+++ b/.chips/rk3562/rockchip_defconfig
@@ -0,0 +1,5 @@
+RK_WIFIBT_CHIP="AP6275S"
+RK_UBOOT_SPL=y
+RK_KERNEL_DTS_NAME="rk3562-evb2-ddr4-v10-linux"
+RK_PARAMETER="parameter-buildroot-fit.txt"
+RK_USE_FIT_IMG=y
diff --git a/.chips/rk3562/rockchip_rk3562_rt_scd1_color_defconfig b/.chips/rk3562/rockchip_rk3562_rt_scd1_color_defconfig
index 46ecb47..42eefb2 100644
--- a/.chips/rk3562/rockchip_rk3562_rt_scd1_color_defconfig
+++ b/.chips/rk3562/rockchip_rk3562_rt_scd1_color_defconfig
@@ -17,7 +17,7 @@ RK_KERNEL_DTS_NAME="rk3562-scd1-color"
 RK_PARAMETER="parameter-buildroot-fit-rootfs-grow.txt"
 RK_USE_FIT_IMG=y

-RK_BUILDROOT_CFG="rockchip_rk3562_scd1_defconfig"
+RK_BUILDROOT_CFG="rockchip_rk3562_aaa_defconfig"

 RK_ROOTFS_HOSTNAME_ORIGINAL=y

diff --git a/.chips/rk3562/rockchip_rk3562_rt_scd1_mono_defconfig b/.chips/rk3562/rockchip_rk3562_rt_scd1_mono_defconfig
index 269052b..7ff8ab5 100644
--- a/.chips/rk3562/rockchip_rk3562_rt_scd1_mono_defconfig
+++ b/.chips/rk3562/rockchip_rk3562_rt_scd1_mono_defconfig
@@ -17,7 +17,7 @@ RK_KERNEL_DTS_NAME="rk3562-scd1-mono"
 RK_PARAMETER="parameter-buildroot-fit-rootfs-grow.txt"
 RK_USE_FIT_IMG=y

-RK_BUILDROOT_CFG="rockchip_rk3562_scd1_defconfig"
+RK_BUILDROOT_CFG="rockchip_rk3562_aaa_defconfig"
相关推荐
a里啊里啊2 小时前
常见面试题目集合
linux·数据库·c++·面试·职场和发展·操作系统
陳錄生2 小时前
ThinkBook ubuntu,TouchPad不起作用的解决办法
linux·运维·ubuntu
大卡片2 小时前
标准IO函数
linux
0xDevNull2 小时前
Linux Docker 安装与使用详细教程
linux·运维·docker
zzzsde2 小时前
【Linux】进程间通信(2)命名管道&&共享内存
linux·运维·服务器
铅笔小新z2 小时前
【Linux】进程(下)
java·linux·运维
IT北辰2 小时前
centos 安装最新jdk25
linux·运维·centos
菱玖2 小时前
Centos重连IP改变问题解决
linux·tcp/ip·centos
Industio_触觉智能2 小时前
玩转RK3588远程控制,Ubuntu22.04 Wayland安装RustDesk工具
linux·ubuntu·rk3588·远程工具·rustdesk·wayland·ubuntu22.04