|
|
本帖最后由 xusheng 于 2025-11-13 20:00 编辑
上一篇文章,介绍了Android标准序列号 与 海思扩展序列号 存储位置不同,本文介绍在上层APK应用中,获取海思私有序列号的方法。
【海思私有序列号写入工具及存储位置】
海思提供PC端工具HiProinfo,可用于产线写入MAC和序列号:
通过该工具写入的MAC和序列号,存储于DeviceInfo分区中:
从上图中,可以看到Mac信息占用18个字节,以“\0"字节结束。序列号信息紧跟其后,占用了10个字节。
【序列号获取】
1. 驱动接口函数
在SDK中,提供了获取18字节MAC的接口函数如下:
- HI_S32 HI_UNF_PDM_GetDevInfo(HI_UNF_PDM_DEVINFO_TYPE_E enType, HI_VOID *pData, HI_U32 u32DataLen);
复制代码 其中,可获取的参数有:
- typedef enum hi_UNF_PDM_DEVINFO_TYPE_E {
- HI_UNF_PDM_DEVINFO_AMP = 0,
- HI_UNF_PDM_DEVINFO_PANELINDEX,
- HI_UNF_PDM_DEVINFO_TCONINDEX,
- HI_UNF_PDM_DEVINFO_MACADDRESS, // mac address,18 bytes,such as B6:43:73:C9:53:02
- HI_UNF_PDM_DEVINFO_POWERONMODE, // poweron mode
- HI_UNF_PDM_DEVINFO_UART, // uart switch
- HI_UNF_PDM_DEVINFO_ONETOUCHPLAY, // HDMI CEC one touch play switch
- HI_UNF_PDM_DEVINFO_SOUNDPORT, // sound port of speaker and headphone
- HI_UNF_PDM_DEVINFO_MPLUSMODE, // PQ MPLUS MODE
- HI_UNF_PDM_DEVINFO_EPIDATA, // EPI data for tconless panel
- HI_UNF_PDM_DEVINFO_WOLMODE, // Wol mode
- HI_UNF_PDM_DEVINFO_HDMITXMODE, // HDMITX boot mode
- HI_UNF_PDM_DEVINFO_LOGSTORE,
- HI_UNF_PDM_DEVINFO_BOOT_LOG_LEVEL,
- HI_UNF_PDM_DEVINFO_DTS_BYPASS, /* get data from dts enable/disable */
- HI_UNF_PDM_DEVINFO_PANEL_ABNORMAL_COUNT,
- HI_UNF_PDM_DEVINFO_HDCP_KEY, /* HDMI HDCP key */
- HI_UNF_PDM_DEVINFO_POWER_KEYVALUE,
- HI_UNF_PDM_DEVINFO_BUTT
- } HI_UNF_PDM_DEVINFO_TYPE_E;
复制代码
2. 代码修改
可借用上述调用接口函数,通过获取MACADDRESS的方式,获取扩展的序列号信息。
2.1 驱动层修改
文件bigfish/sdk/source/msp/api/pdm/unf_pdm.c,直接获取MAC之后的序列号信息
- static hi_s32 HI_PDM_Update_DevInfo(HI_UNF_PDM_DEVINFO_TYPE_E enType, hi_u32 u32DataLen, hi_void *pData,hi_bool update)
- {
- ......
- if (update) {
- ......
- }else{
- #if 0
- err_ret = memcpy_s(pData, u32DataLen, buf, read_len);
- #else
- err_ret = memcpy_s(pData, u32DataLen, buf+18, read_len-18);
- #endif
- }
- }
复制代码 文件bigfish/hippo/include/hi_mw_common.h,修改MAC长度保持与驱动一致
- //#define MAC_LENTH (18)
- #define MAC_LENTH (28)
复制代码
文件bigfish/hippo/api/java/com/hisilicon/android/tvapi/impl/FactoryImpl.java
借用获取panel信息的接口,修改为显示获取的序列号信息
- @Override
- public String getPanelBinVersionInfo() {
- String strName = "";
- Parcel request = Parcel.obtain();
- Parcel reply = Parcel.obtain();
-
复制代码
3. 测试验证
修改上述代码后,重新编译烧录,通过下述方式启动工厂菜单
- am start -n com.hisilicon.tv.menu/com.hisilicon.tv.menu.app.TvMenuActivity
复制代码 进入[System Infomation]子菜单,如下图已正确显示烧录的序列号信息
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|