我是靠谱客的博主 阳光红牛,这篇文章主要介绍Modem2G/3G/4G/5G:吐血总结:30分钟掌握高通modem RFFE driver(射频驱动)配置方法(一),现在分享给大家,希望可以做个参考。

By:GentlemanTsao

文章目录

    • 紧急任务
    • 1. 选择一个厨房(RF card)
      • 在哪里看厨房(RF card)选项?
      • 选哪个厨房(RF card)合适?
      • 在哪里登记我选好的厨房(RF card)?
      • 怎样登记呢?
    • 2. 采购食材(配置物理设备列表)
      • 采购清单(物理设备列表)写在哪里?
      • 采购清单撰写注意事项:
    • 3. 切配食材(配置逻辑设备列表)
      • 食材在哪里切配(逻辑设备列表)?
      • 切配食材注意事项

紧急任务

你是一位电子厨师,接到指挥官下达的紧急任务,要求在30分钟内为R星居民做出美食,否则R星将可能发生饥荒。

R星人以电磁波为食。

随即你收到了总部发来的美食图谱,如下:
在这里插入图片描述
这是R星语言。什么,没看懂?来来来,我搞到了一份带注释的图谱:
在这里插入图片描述
现在知道要做什么了吧?让我们动起来~

30分钟时间太紧张?别慌,30分钟=30X60=1800秒,足够电磁波从太阳到地球往返两个来回了。这样看还少吗?

1. 选择一个厨房(RF card)

做法式大餐和做中式大餐,对厨房配置的要求是不同的。因此,选择一个合适的厨房(RF card)可以让我们的烹饪得心应手。

在哪里看厨房(RF card)选项?

下面的文件列出了所有的备用厨房:
AMSS/modem_proc/rfc_jolokia/api/rfc_hwid.h

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* ------------------------------------------------------- ** The RF Card Id used in the target ** Note: The Id needs to be sequential ** ------------------------------------------------------- */ typedef enum { RF_HW_UNDEFINED = (uint8)0, RF_TARGET_NONE = RF_HW_UNDEFINED, RF_HW_WTR2965_CHN_ULCA_3P_APT = (uint8)3, RF_HW_WTR4905_NON_CA = (uint8)31, RF_HW_WTR2965_NON_CA_4360_CHIE_V2 = (uint8)75, RF_HW_WTR3925_QRD632_APT_QPA4361 = (uint8)87, RF_HW_WTR2965_DLCA_ULCA_4340 = (uint8)155, RF_HW_WTR2965_NON_CA_4373_V2 = (uint8)164, RF_HW_WTR2965_ULCA_QFE = (uint8)167, ... } rf_hw_type;

选哪个厨房(RF card)合适?

如果不能确定,请咨询RF大厨。

在哪里登记我选好的厨房(RF card)?

请登记到nv1878。
modem开机初始化RF时,先读取nv1878,然后准备厨房必须的装备(lib等文件)。

nv1878的名字是rfhardwareconfiguration。

怎样登记呢?

使用QXDM tool修改nv1878;
或者,load已经修改好的qcn or efs文件。

2. 采购食材(配置物理设备列表)

现在,我们已经是有房的人的(厨房也是房~~)。但是,俗话说,巧妇难为无米之炊。有了厨房只是第一步,接下来还需采购食材(配置物理设备列表)。

看下我们需要哪些食材:
在这里插入图片描述
从上图看,我们需要准备5种食材:
粉丝(QM56020)——供应商:第三方
黑鱼(QM57016)——供应商:第三方
姜(QFE2101)——供应商:高通
食用油(WTR2965)——供应商:高通
葱(MXD86A0S)

好,下面列一个采购清单,让ARM去采购。

采购清单(物理设备列表)写在哪里?

请写在对应RF Card目录的xxx_cmn_ag.cpp文件中。
例如:
Rfc_wtr2965_non_ca_saw_4320_cmn_ag.cpp
(modem_procrfc_tabascorf_cardrfc_wtr2965_non_ca_saw_4320commonsrc)

采购清单以下面的形式:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
rfc_phy_device_info_type rfc_wtr2965_non_ca_saw_4320_phy_devices_list[] = { { /*Device: WTR2965 */ WTR2965, /* PHY_DEVICE_NAME */ 0, /* PHY_DEVICE_INSTANCE */ RFC_NO_ALTERNATE_PART, /* PHY_DEVICE_ALT_PART_NUM_OF_INSTANCE */ RFDEVICE_COMM_PROTO_RFFE, /* PHY_DEVICE_COMM_PROTOCOL */ RFDEVICE_COMM_PROTO_VERSION_DEFAULT, /* PHY_DEVICE_COMM_PROTOCOL_VERSION */ { 0,0 /* 0 not specified */,}, /* PHY_DEVICE_COMM_BUS */ 0x0217, /* PHY_DEVICE_MANUFACTURER_ID */ 0xCA, /* PHY_DEVICE_PRODUCT_ID */ 0, /* PHY_DEVICE_PRODUCT_REV */ 0x01, /* DEFAULT USID RANGE START */ 0x01, /* DEFAULT USID RANGE END */ 0x01, /* PHY_DEVICE_ASSIGNED_USID */ 0 /*Warning: Not specified*/, /* RFFE_GROUP_ID */ FALSE, /* INIT */ RFC_TX_MODEM_CHAIN_0, /* ASSOCIATED_DAC */ }, /* END - Device: WTR2965 */ ... }

采购清单撰写注意事项:

PHY_DEVICE_INSTANCE:
食材的清单编号,从0开始依次递增。

PHY_DEVICE_COMM_BUS:
食材的包装编号——总线。有的食材可以包装在同一个盒子里。有的要独立打包。
如何确认
看下上图的食材右侧标注的RFFE[n]_DATA/CLK。
在这里插入图片描述

n-1 即是该食材(物理设备)的包装编号。
例如QM56020,它的PHY_DEVICE_COMM_BUS值是(2-1),即1.

PHY_DEVICE_MANUFACTURER_ID:
PHY_DEVICE_PRODUCT_ID:
PHY_DEVICE_PRODUCT_REV:
每份食材都有自己的说明书——SPEC。SPEC中标注了生产厂家(MANUFACTURER_ID)、产品名称(PRODUCT_ID),批次(PRODUCT_REV)。这些都需要填写到采购清单中。请仔细查看SPEC。

DEFAULT USID:
PHY_DEVICE_ASSIGNED_USID:
这两个是食材的标签。
DEFAULT USID是出厂默认的唯一标签;
PHY_DEVICE_ASSIGNED_USID是我们给它贴的唯一标签。注意这个标签必须不同于其他食材。

好了,采购清单完成。

3. 切配食材(配置逻辑设备列表)

看一下最开始的菜谱。
在这里插入图片描述

水煮鱼片要用的配料是黑鱼片(PA57016),剁椒鱼头要用的配料是鱼头(ASM57016)。而我们采购来的是黑鱼(QM57016)。该怎么做,不用我多解释了吧?切起来~

现在我们要把原始食材切配分割成可以直接使用的食材,这一步又称为(配置逻辑设备列表)。

食材在哪里切配(逻辑设备列表)?

同样在RF Card目录的xxx_cmn_ag.cpp文件中。

例如:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
rfc_logical_device_info_type rfc_wtr2965_non_ca_saw_4320_logical_devices_list[] = { { /*Device: WTR2965 */ RFDEVICE_TRANSCEIVER, /* DEVICE_MODULE_TYPE */ WTR2965, /* DEVICE_MODULE_NAME */ 0, /* DEVICE_MODULE_TYPE_INSTANCE */ 0, /* ASSOCIATED_PHY_DEVICE_INSTANCE */ }, /* END - Device: WTR2965 */ { /*Device: QFE2101 */ RFDEVICE_PAPM, /* DEVICE_MODULE_TYPE */ QFE2101, /* DEVICE_MODULE_NAME */ 0, /* DEVICE_MODULE_TYPE_INSTANCE */ 1, /* ASSOCIATED_PHY_DEVICE_INSTANCE */ }, /* END - Device: QFE2101 */ { /*Device: QM56020 */ RFDEVICE_PA, /* DEVICE_MODULE_TYPE */ GEN_PA, /* DEVICE_MODULE_NAME */ 0, /* DEVICE_MODULE_TYPE_INSTANCE */ 2, /* ASSOCIATED_PHY_DEVICE_INSTANCE */ }, /* END - Device: QM56020 */ { /*Device: QM57016 pa */ RFDEVICE_PA, /* DEVICE_MODULE_TYPE */ GEN_PA, /* DEVICE_MODULE_NAME */ 1, /* DEVICE_MODULE_TYPE_INSTANCE */ 3, /* ASSOCIATED_PHY_DEVICE_INSTANCE */ }, /* END*/ { /*Device: QM57016 asm */ RFDEVICE_ASM, /* DEVICE_MODULE_TYPE */ GEN_ASM, /* DEVICE_MODULE_NAME */ 0, /* DEVICE_MODULE_TYPE_INSTANCE */ 3, /* ASSOCIATED_PHY_DEVICE_INSTANCE */ }, /*END*/

切配食材注意事项

DEVICE_MODULE_TYPE:
指的是食材种类。例如食用油(TRANSCEIVER),鱼片,粉丝等主料(PA),鱼头(ASM)等等。

DEVICE_MODULE_NAME:
切配后的食材名称。注意同一种原始食材,例如黑鱼(QM57016),切配后的名称可能会变成鱼片(PA)和鱼头(ASM)。

DEVICE_MODULE_TYPE_INSTANCE:
同一类食材的编号。从0开始。例如,假如有两种鱼片(PA QM56020 和PA QM57016),则第一个是0,第二个是1.

ASSOCIATED_PHY_DEVICE_INSTANCE:
指该食材是从哪个原始食材上切分的。填的是原始食材的编号(即对应的是物理设备列表的PHY_DEVICE_INSTANCE)。

好了,切配食材已经完成. 0(n_n)0

下一篇将继续我们的电子烹饪之旅:腌制和炒爆熘炸煎~
不要走开,马上回来。

作者:
GentlemanTsao, 资深Android大厨,带你探索舌尖之旅。

更多菜单:

RFFE Driver(射频前端驱动):高通平台GRFC配置方法

非诚勿扰!PLMN(啥?Piao.Liang.Mei.Nv…?)这么多,看移动终端该如何选择?

Java系列
Java并发和多线程教程2020版

Java函数式编程教程

最后

以上就是阳光红牛最近收集整理的关于Modem2G/3G/4G/5G:吐血总结:30分钟掌握高通modem RFFE driver(射频驱动)配置方法(一)的全部内容,更多相关Modem2G/3G/4G/5G:吐血总结:30分钟掌握高通modem内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部