找回密码
 立即注册
搜索
热搜: 星闪 最新 活动
查看: 261|回复: 0

[Hi3751v352] APK获取海思私有序列号的方式

[复制链接]

20

主题

0

回帖

180

积分

超级版主

积分
180
发表于 2025-11-13 19:40:32 | 显示全部楼层 |阅读模式
本帖最后由 xusheng 于 2025-11-13 20:00 编辑

上一篇文章,介绍了Android标准序列号 与 海思扩展序列号 存储位置不同,本文介绍在上层APK应用中,获取海思私有序列号的方法。



【海思私有序列号写入工具及存储位置】
海思提供PC端工具HiProinfo,可用于产线写入MAC和序列号:

通过该工具写入的MAC和序列号,存储于DeviceInfo分区中:

从上图中,可以看到Mac信息占用18个字节,以“\0"字节结束。序列号信息紧跟其后,占用了10个字节。

【序列号获取】
1. 驱动接口函数
在SDK中,提供了获取18字节MAC的接口函数如下:
  1. HI_S32 HI_UNF_PDM_GetDevInfo(HI_UNF_PDM_DEVINFO_TYPE_E enType, HI_VOID *pData, HI_U32 u32DataLen);
复制代码
其中,可获取的参数有:
  1. typedef enum hi_UNF_PDM_DEVINFO_TYPE_E {
  2.     HI_UNF_PDM_DEVINFO_AMP = 0,
  3.     HI_UNF_PDM_DEVINFO_PANELINDEX,
  4.     HI_UNF_PDM_DEVINFO_TCONINDEX,
  5.     HI_UNF_PDM_DEVINFO_MACADDRESS,         // mac address,18 bytes,such as B6:43:73:C9:53:02
  6.     HI_UNF_PDM_DEVINFO_POWERONMODE,           // poweron mode
  7.     HI_UNF_PDM_DEVINFO_UART,                          // uart switch
  8.     HI_UNF_PDM_DEVINFO_ONETOUCHPLAY,          // HDMI CEC one touch play switch
  9.     HI_UNF_PDM_DEVINFO_SOUNDPORT,             // sound port of speaker and headphone
  10.     HI_UNF_PDM_DEVINFO_MPLUSMODE,             // PQ MPLUS MODE
  11.     HI_UNF_PDM_DEVINFO_EPIDATA,                       // EPI data for tconless panel
  12.     HI_UNF_PDM_DEVINFO_WOLMODE,               // Wol mode
  13.     HI_UNF_PDM_DEVINFO_HDMITXMODE,            // HDMITX boot mode
  14.     HI_UNF_PDM_DEVINFO_LOGSTORE,
  15.     HI_UNF_PDM_DEVINFO_BOOT_LOG_LEVEL,
  16.     HI_UNF_PDM_DEVINFO_DTS_BYPASS,                         /* get data from dts enable/disable */
  17.     HI_UNF_PDM_DEVINFO_PANEL_ABNORMAL_COUNT,
  18.     HI_UNF_PDM_DEVINFO_HDCP_KEY,                        /* HDMI HDCP key */
  19.     HI_UNF_PDM_DEVINFO_POWER_KEYVALUE,
  20.     HI_UNF_PDM_DEVINFO_BUTT
  21. } HI_UNF_PDM_DEVINFO_TYPE_E;
复制代码

2. 代码修改
可借用上述调用接口函数,通过获取MACADDRESS的方式,获取扩展的序列号信息。

2.1 驱动层修改
    文件bigfish/sdk/source/msp/api/pdm/unf_pdm.c,直接获取MAC之后的序列号信息
  1. static hi_s32 HI_PDM_Update_DevInfo(HI_UNF_PDM_DEVINFO_TYPE_E enType, hi_u32 u32DataLen, hi_void *pData,hi_bool update)
  2. {
  3.     ......
  4.     if (update) {
  5.         ......
  6.     }else{
  7.         #if 0
  8.         err_ret = memcpy_s(pData, u32DataLen, buf, read_len);
  9.         #else
  10.         err_ret = memcpy_s(pData, u32DataLen, buf+18, read_len-18);  
  11.         #endif
  12.     }
  13. }
复制代码
   文件bigfish/hippo/include/hi_mw_common.h,修改MAC长度保持与驱动一致
  1. //#define MAC_LENTH                 (18)
  2. #define MAC_LENTH                 (28)
复制代码

    文件bigfish/hippo/api/java/com/hisilicon/android/tvapi/impl/FactoryImpl.java
借用获取panel信息的接口,修改为显示获取的序列号信息
  1. @Override
  2.     public String getPanelBinVersionInfo() {
  3.     String strName = "";
  4.     Parcel request = Parcel.obtain();
  5.     Parcel reply = Parcel.obtain();
  6.    
复制代码



3. 测试验证
修改上述代码后,重新编译烧录,通过下述方式启动工厂菜单
  1. am start -n com.hisilicon.tv.menu/com.hisilicon.tv.menu.app.TvMenuActivity
复制代码
进入[System Infomation]子菜单,如下图已正确显示烧录的序列号信息


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|【淇诺科技】技术论坛 ( 粤ICP备14010465号-1|粤ICP备14010465号-1 )

GMT+8, 2026-4-2 15:48 , Processed in 0.128129 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表