RK3288 Android7.1 SN号相关问题

平台:RK3288 Android7.1

现象:使用工具RKDevInfoWriteTool烧录SN号以后,serialno出现unknown的情况
用UpgradeDllTool就可以

原因:读取SN号的接口没用对,UpgradeDllTool对应的是rkidb_get_sn接口,而RKDevInfoWriteTool对应的是vendor_storage_read

解决方法1:

SDK\u-boot\board\rockchip\rk32xx\rk32xx.c
--	char tmp_buf[32];
--	/* rk sn size 30bytes, zero buff */
--	memset(tmp_buf, 0, 32);
--	if (rkidb_get_sn(tmp_buf)) {
--		setenv("fbt_sn#", tmp_buf);
--	}

++	#define SN_ID 1
++	int ret;
++	char sn2_buf[32];
++	char env_sn[32];
++	memset(sn2_buf, 0, 32);
++    ret = vendor_storage_init(); //初始化vendor storage分区
++    if (ret) {
++            printf("SN:  vendor_storage_init failed %d\n", ret);
++            return 0;
++    }
++    ret = vendor_storage_read(SN_ID, sn2_buf, 32); //get sn from vendor storage
++    if (ret < 0) {
++            printf("SN: read size %d\n", ret);
++            return 0;
++    } else if(strncmp(env_sn, sn2_buf, strlen(sn2_buf)) != 0) {
++           printf("SN: sn from vendor storage: %s\n", sn2_buf);
++		   setenv("fbt_sn#", sn2_buf);
++    }

解决方法2:

SDK\system\core\drmservice\drmservice.c
--	#define SERIALNO_FROM_IDB 0
++	#define SERIALNO_FROM_IDB 1

SDK\system\core\init\init.cpp
prop_map[] = {
--             { "ro.boot.serialno",   "ro.serialno",   "", },
++        //{ "ro.boot.serialno",   "ro.serialno",   "", },
        { "ro.boot.mode",       "ro.bootmode",   "unknown", },
        { "ro.boot.baseband",   "ro.baseband",   "unknown", },
        { "ro.boot.bootloader", "ro.bootloader", "unknown", },
        { "ro.boot.hardware",   "ro.hardware",   "unknown", },
        { "ro.boot.revision",   "ro.revision",   "0", },
    };

参考:rk3399_android7.1读写sn和eth mac地址 - 灰信网(软件开发博客聚合) (freesion.com)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值