挪动基带平安研讨系列:观点和体系篇 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

挪动基带平安研讨系列:观点和体系篇

申博_安全防护 申博 45次浏览 已收录 0个评论

一、背景

跟着5G大海潮的推动,将来万物互联将会有极大的井喷迸发的能够,而挪动基带系统作为衔接天下的桥梁,势必成为将来异常重要的基础设施,而基础设施的手艺自立才能已上升到异常重要的国度层面上的战略意义,从美国看待中国的通讯产商华为的禁令就能够看得出基础手艺的生长对一个国度的震慑,当今人类的临盆生涯已离不开挪动通讯,将来也将会继承是引领人类科技的生长的重要序言,人工智能,自动驾驶,物联网以及你所能想到的统统科技相干的生长都邑与挪动通讯发作重要的联络,在此之上其平安性和可靠性将会成为人类所体贴的重要题目,这也是笔者为了写这个系列文章的初志,也愿望更多的平安研讨人员介入到基础设施的平安研讨当中来,发掘出更多的缺点与隐患,圆满将来的基础设施的平安。

二、观点和研讨目的

3GPP  挪动通讯的标准化构造 3rd Generation Partnership Project,成立于上世纪末,重要职能是为了制订挪动通讯的手艺标准,保证各个差别国度以及运营商在挪动通讯方面的兼容性,最罕见的例子就是能够让我们的手机能够做到在差别的国度遨游运用。

3GPP所制订的挪动通讯手艺标准涵盖了一切的2/3/4/5G通讯相干的手艺系统,发作了大批的手艺文档供研讨人员进修和参考,有兴致的能够从3GPP的官方网站猎取。

本系列文章研讨对像是指3GPP定义的挪动通讯相干2/3/4/5G的基带软硬件和通讯系统,比方手机的语音/短信/数据流量,以及物联网中运用的相干挪动通讯手艺的端装备。基带系统自身是泛指无线通讯系统内里的软/硬件和通讯手艺的集合体,比方蓝牙/Wi-Fi/GSM都有基带系统,所以本系列文章所指的基带系统单指挪动通讯相干的2/3/4/5G手艺相干的基带系统。

研讨对象和目的:高通的基带芯片以及对3GPP定义的对通讯协定栈的完成,基带系统是一个异常巨大且庞杂的系统,包括软/硬件和通讯手艺的圆满融会,所以具有相干设想才能的芯片产商很少,从2018年基带芯片的市场份额散布,高通是这个范畴市场份额做的最大的芯片产商,高通是多个国内手机产商的供应商,比方小米,oppo/vivo等,而华为如今已有了本身基于海思芯片设想的基带系统,打破了外洋基带芯片市场的垄断,如今华为的手机产物都是用的华为自产的海思基带芯片,不过软件系统照样基于人家的VxWorks,不过方才华为宣布了鸿蒙微内核系统,这个系统很有能够华为会把基带系统移植上去,如今应当抓紧举行基带系统的移植事情,自身各家的基带系统都是异常关闭的,因为触及各家的核心手艺才能,加上挪动通讯的庞杂性,研讨的人也比较少,我研讨的目的之一就是发掘内里的一些设想逻辑,连系3GPP的协定的定义来更好的明白全部基带系统的完成,而且深切发掘内里的攻击面以及怎样更好的发明内里的平安题目。

研讨要领:

全部系列文章将会缭绕高通基带系统对3GPP定义的协定栈的完成来发掘内里的一些营业逻辑以及发掘相干的攻击面来举行,所以我的研讨要领会针对以下条理来举行。

1、操纵系统

2、运用系统

3、3GPP完成的协定栈

4、攻击面研讨以及缺点发掘

关闭的基带系统须要大批的逆向工程的事情,来猎取对基带系统行动的相识,逆向工程是平安研讨者在发掘未知的必备妙技,什么时刻须要逆向工程,在你没法猎取目的研讨对象的源代码和设想文档或许仅能够猎取少少文档信息的情况下,想相识其目的对象的一些设想逻辑,道理和算法,这个时刻你只能经由历程逆向工程这类正当手腕来抵达上面的目的。

逆向工程也分软件和硬件,当今的数字系统基础上都是经由历程软件来定义的,我们关于硬件的逆向工程就不睁开讲了,有机遇零丁写出来,所以本文议论的也基础上是软件层面上的逆向工程,而基带系统与硬件连系又是异常严密的,所以对基带系统的逆向工程也须要硬件研讨才能的支撑,逆向工程的难易水平也是分等级的,以下是我个人对逆向工程难易的明白,默许下面一切运用的固件都能够猎取,经由历程研讨东西的猎取和研讨的成原本分类。

而我们挑选的研讨对象高通的MDM系列芯片按我的明白难度应当在上图的L3的级别,异常有限的芯片信息的情况下。

三、高通基带硬件系统引见

高通的基带硬件依据功用的差别分为两类:

1、MSM系列   (Mobile Station Modem)

2、MDM系列    (Mobile Data Modem)

MSM系列重假如给手持挪动通讯装备运用,比方手机等。

MDM系列重假如给挪动数据流量装备运用,车联网或别的物联网装备等。

MSM系列与MDM系列的辨别:

· MSM系列芯片包括运用处置惩罚器(Application Processor)和基带系统处置惩罚器(Baseband Processor)另有Wi-Fi,蓝牙等,这个重假如供应团体的手机解决方案来给手机产商运用,Android生态的大部份手机都是运转在高通的MSM系列的SoC之上,比方小米5手机搭载的高通骁龙系列S820的SoC就是MSM8996系列的芯片,运用处置惩罚器运转的是Android系统。

· MDM系列初期只包括(Baseband Processor),重假如供应数据modem和语音的功用,苹果手机生态和车联网以及4G无线上网卡等运用中比较罕见,比方iPhone 8/8 Plus和iPhone X都是装备的高通MDM9655的基带芯片,而宝马/奥迪车联网的TBOX则装备的MDM6x00系列的基带芯片,而15年临盆的通用安吉星系统TBOX则采纳的是MDM9215系列,为了能够供应更壮大的营业逻辑才能,MDM系列基带芯片SoC剥离了基带系统和营业系统,由两个core构成,比方mdm9xxx系列芯片包括一个hexagon的DSP基带处置惩罚核,以及一个ARM Cortex-A系列的核。

从功用上来讲,MSM系列的功用是包括了MDM系列的功用。

所以高通的MDM系列的Baseband Processor并非严厉意义上的一块处置惩罚器,而是至少有3个core。

1、一个基于ARM的微处置惩罚子系统

a. ARM1136        à MDM6600

b. ARM Cortex-A5 + Hexagon DSP   à MDM9215

2、一个基于高通Hexagon QDSP架构的Modem DSP(mDSP)

3、一个基于高通Hexagon QDSP架构的Application DSP(aDSP)

这3个core的重要功用以下:

1、这个基于ARM的微处置惩罚器属于基带系统的子系统(MDM6x00基于ARM1136的架构,MDM9x15系列基于ARM Cortex-A5以及新增了一个hexagon DSP处置惩罚器),它将辅佐mDSP和aDSP的初始化和与这两个core举行通讯交互以及完成3GPP定义通讯的所需的协定栈功用和算法,也可作为特定运用相干处置惩罚平台,比方在车联网中会将它作为TBOX的运用逻辑的处置惩罚器,MDM9x15把3GPP协定栈的完成转移到了hexagon DSP上,而MDM6x00的3GPP协定栈的完成是在这个ARM1136上完成。

2、mDSP的重要功用就是无线信号的调制与解调,在3G为代表的MDM6x00系列的mDSP重要完成CDMA/WCDMA/GSM/GNSS信号的调制与解调,在4G为代表的MDM9x15系列重要完成了包括CDMA/WCDMA/GSM/LTE/GNSS信号的调制与解调。

3、aDSP(Application DSP),重要功用是完成与运用相干的信号调制与解调,比方语音信号的调制与解调(Audio DSP),罕见的运用就是我们手机语音通话时编码与解码以及紧缩就是经由历程这个aDSP来完成。

下图为高通MDM系列基带芯片的一些特征:

四、高通基带软件系统引见

高通基带的软件系统从2000年摆布就最先运用他们本身设想的嵌入式rtos系统REX来构建他们本身的手机基带运用系统AMSS,而且基础的运用软件架构一向相沿至今,因为基带运用系统其庞杂的特征以及大批的功用运用,为了保证其运用优越的移植性和兼容性,所以基带的底层系统采纳精简的微内核系统OKL4,这是一个开源的微内核系统,基于ARM的基带处置惩罚器都是采纳的OKL4微内核,自从高通开辟的新的hexagon DSP基带处置惩罚芯片后,一个名为QuRT嵌入式微内核系统因此而发作,这个QuRT前期也叫Blast,它的涌现应当是特地为QDSPv6架构的DSP处置惩罚器而开辟的,我们本日剖析的MDM6600基带芯片是基于OKL4的微内核+REX AMSS运用系统,而我们重点关注的实在也是运转在REX之上的AMSS运用,下图是全部基带系统的基于ARM和基于hexagon QDSP架构逻辑,将来5G运用还会继承相沿右侧的架构。

微内核的优点在于,运用系统能够坚持高度的可移植性,微内核系统只需满足基础的IPC通讯机制,内存治理,CPU调理机制即可,驱动文件系统等以及运用都能够在用户态来初始化完成,这关于须要支撑多个硬件平台的高通来讲无疑异常高效的做法,以下图是高通的系统架构。

基带软件系统重要包括以下部份:

a. 启动治理

b. 内存治理

c. 文件系统

d. 定时器机制

e. 使命治理和IPC通讯机制

f. 中缀治理

a. 基带系统启动历程

高通基带芯片很早就引入了secure boot的启动考证机制,来防备启动历程当中运转的代码或数据被改动,旨在平安可信盘算,如今大部份高通系的手机都有这个功用,芯片上电后先被芯片的BootRom接收,该BootRom内里的代码不可改动,内里存有flash控制器的基础读写功用,而且芯片的OTP地区能够存储产商受权的公钥证书,用于署名认证启动历程当中须要认证的分区数据。以MDM6600芯片在某个车联网运用基带装备为例,它的启动历程以下:

芯片上电后实行BootRom内里代码检测是不是从flash启动,假如是从flash的第一个扇区读入数据到内存并搜刮secureboot启动的Magic Header,然后剖析头部相应的数据构造,猎取代码和数据的大小和偏移以及装载到内存的地点信息,署名/证书数据偏移和长度,以下图是DBL头部地区信息。

0x00 – CodeWord (“D1 DC 4B 84”)

0x04 – Magic (“34 10 D7 73”)

0x14 – Body start offset (0x2050)

0x18 – Loading address (0x20012000)

0x1C – Body size (Code + Signature + Certificate store size)

0x20 – Code size

0x24 – Signature address

0x28 – Signature length (256 bytes)

0x2C – Certificate store address

0x30 – Certificate store length

当BootRom考证DBL代码和数据署名胜利后,今后DBL的代码接收实行,然后搜刮MIBIB分区表,猎取各个分区的肇端block信息,然后在相应的块去读取相应的数据,接着就是考证相应分区数据的署名,然后相应的分区代码接收,完成一系列的信托启动链,DBL考证胜利后,考证FSBL,然后是OSBL,末了是AMSS。

0x00 – CodeWord (“AA 73 EE 55”)

0x04 – Magic (“DB BD 5E E3”)

0x0C – Partition Nums (0xa)

每一个分区表信息长度0x1c,比方:

0x00 – 0x10 partition name (0:FSBL)

0x10 – Partition start block information (0x0f)

0x14 – Partition block length (0x2)

这里定义的每一个页是0x800字节,每一个块block有64个页,所以每一个block的长度是0x20000字节,所以依据这个信息我们就能够定位这些分区的物理偏移信息。

b. 基带系统内存治理

当基带系统的平安信托启动链考证完成后,末了系统被AMSS系统代码接收, AMSS系统定义了代码实行的内核特权形式以及AMSS运用形式,设置页表(映照硬件外设地点到页表中)而且开启MMU(内存治理单位),在某些敏感的内存地点地区经由历程MPU的特征来举行庇护,只要特定权限的运用的能够接见,运用形式的代码想要进入内核态(比方IPC音讯发送),能够经由历程设置的特权中缀指令SVC进入内核态,下图就是进入特权syscall的中缀向量表进口。

挪动基带平安研讨系列:观点和体系篇

挪动基带平安研讨系列:观点和体系篇

经由历程初始化页表完成内核地点空间和外设硬件地点映照,开启mmu,建立第一个rootTask后切入用户态空间,初始化用户态须要建立的运用与驱动,这里重要引见运用层堆内存构造以及内存分派和接纳算法。

REX系统堆内存分两种范例:

· Big chunk(大堆)

· small heap(小堆)

大堆在差别运用初始化的时刻指定内存的肇端地点与长度,而且依据运用功用的差别,分派体式格局也差别,小堆将会在大堆上举行分派运用,大堆因为给运用的运用差别,分派小堆的体式格局有所差别。

a.大堆范例1,内存一连,分派小堆的体式格局是递次分派,前面是分派好的小堆,背面是一连的余暇堆块,分派小堆只会在一连的余暇块上举行分派,比方前面多个分派好的小堆个中一个须要被开释后,只是把这个小堆的属性标记为freed,但因为它背面的小堆到一连的余暇块中心有标记为已分派属性,所以后续在分派小堆的历程当中不会斟酌这块已被开释的内存,除非要开释的小堆内存和一连的余暇块紧挨着,下一次分派内存时才会从这个已标记为开释的内存上举行分派,而是直接到背面的一连余暇块上举行分派,如许做的目的是为了分派和开释内存更高效,虽然捐躯了一些空间,构造以下图。

b.大堆范例2,(modem chunk),也是一个一连内存地区,然则chunk header在内存的底部,上部为分派小堆地区,分派递次也是从上往下分派,小堆的头部数据构造中会指向上一个已分派好的小堆,经由历程单向链表举行小堆内存的回溯,最上面的小堆回溯指针为空,然则它的内存分派算法跟上面的差别,就算要被开释的小堆内存和余暇块不挨着,然则它任能在下一次的堆内存请求中被重用,只需它的大小适宜,而且小堆数据构造与范例1也差别,基础构造以下图。

Agent 1433: 针对Microsoft SQL Server的远程攻击

全世界的大小公司都使用Microsoft SQL服务器进行数据库管理。虽然很流行,但是保护力度不够,该DBMS成为黑客的目标。基于Microsoft SQL服务器恶意job的远程攻击已经出现一段时间了,仍然被广泛用于访问工作站。 下图是2019年1月到7月针对Microsoft SQL Server的远程攻击地理分布图,其中攻击主要位于越南(约占16%)、俄罗斯(约占12%)、印度(约占7%)、中国(约占6%)、土耳其(约占5%)和巴西(约占5%)。 攻击描述 Microsoft SQL服务器攻击规模很大

Modem运用大堆构造示例

我们能够看到chunk范例1和chunk范例2上面分派的小堆内存构造稍有差别,数据构造以下:

Small heap1{
Uint32 size;//+0 分派内存空间的长度加上头部长度0xc字节
Uint8  mem_flag;//+0x4 内存属性标志,0示意已分派,0xff示意开释掉的内存
Uint8  extr_mem_flag;//+0x5 扩大内存属性标志,0示意内存分派过,0xff示意
//内存空间,没有被运用过
Uint8  mem_extra_size;//+0x6 分外分派的内存长度,为了内存0x10字节对齐
//所分外增添的请求内存长度,必需小0x10字节
Uint8  mem_pad_char;//+0x7 添补字节0xaa
Uint16 crc16_cookie;//+0x8  对传入的第三个参数的crc16盘算的值
Uint16 mem_id;//0x0a   内存标识,第四个参数传入
Uint8 mem_buffer[size-0x0c];//+0xc 用户运用内存buffer
}
Small modem heap{
  Uint32 size;// +0 分派内存空间的长度加上头部长度0x10字节
  Uint32 *pre_alloc_ptr;//+4 指向上一个分派好的小堆内存头部指针
  Uint8 client_id;//+8 请求内存的运用id值,modem功用中定义了
//RRC/CM/SM/RLC/gstk/wms等多个运用,这个id来标识请求内
//存的运用来自于那里
  Uint8  mem_flag;//+0x9 内存属性标志,0示意分派了,1示意开释了,
//3示意未运用
  Uint8  unknown_byte;//+0xa
  Uint8  mem_guard_bits;//+0xb modem内存庇护标志0x6a
  Uint32  alloc_ret_addr;//+0xc 分派内存函数的下一条指令地点,目的是为了
//肯定实行内存分派行动的准确地点
  Uint8  mem_buf[0xsize-0x10]; //+0x10 供用户运用的内存buffer
}

c. 基带系统文件系统

因为篇幅题目,我会对Qualcomm基带的文件系统EFS零丁写一篇细致的剖析文章。

d. 高通基带芯片定时器(Timer)

定时器是嵌入式芯片异常重要的构成部份,它在嵌入式操纵系统的CPU调理和定时使命实行,以及准确的延时守候等操纵中扮演着异常重要的角色,高通的基带芯片的定时器调理算法大抵都差不太多,我们基于ARM1136架构的MDM6600基带芯片对定时器算法举行了深切剖析。

MDM6600的定时器是经由历程Sleep Timer控制器来完成的,它包括两个16位的Timer0和Timer1,以及一个32位的TimeTick的计数器(counter),它们的功用用处以下.

1.Timer0   供watchdog运用

2.Timer1   供3G的wcdma的功用模块运用

3.TimeTick 系统计数器,效劳于系统的子使命模块建立的定时器使命的实行以及延时功用的运用

Timer0运用于watchdog功用中,Watchdog在及时嵌入式系统中扮演着异常重要的角色,它监控使命的一般运转,监控的使命必需定时喂狗(feed dog),watchdog才以为你在一般事情,要不然就能够会直接reset系统,后续也会引见它在基带内里详细监控的运用。

Timer1将会在3G WCDMA运用中收发相干的定时中缀中会细致引见。

TimeTick是一个32位的系统计数器,初始化后会从0最先计数,计数到0xfffffff后溢出到0后重新最先计数,重要功用以下:

1. 实行定时使命

a. 实行一次

b. 周期性实行

2. 实行延时功用

a. 延时守候

TimeTick的时钟源为32768Hz,这意味着这个计数器1秒钟会计数32768次,经由历程这个信息我们能够大抵盘算出从0计数到0xffffffff须要36个小时。

定时使命功用特征:

a. 经由历程设置TimeTick的match value来决议计数器计数到这个值后发作一个中缀,中缀内里能够处置惩罚相应的定时使命,以及设置新的TimeTick match value。

b. 一切的定时使命都邑存储在定时使命列表中,供应定时使命的插进去,删除,停息,叫醒实行等功用。

下图描写了定时器使命实行的基础历程

在基带系统中存在多个运用使命,每一个使命的实行都是依靠内核的CPU调理,罕见的体式格局就是时候片和优先级切换让各个差别的使命有机遇获得实行,而某些使命在运转历程当中的某个机遇能够会建立一个或许多个定时器使命,比方上图所示的使命Task1建立的定时器使命Timer1,Task2建立的定时器使命Timer2和Timer3,处置惩罚这些使命的算法以下:

1.建立定时使命时,猎取当前TimeTick的计数

2.把延时换算法成计数,比方1秒即是32768次计数

3.把当前timetick计数加上延时的计数值作为该定时使命中缀触发的match value

4.遍历一切定时使命,依据使命设置的定时使命中缀触发的match value大小排序插进去到定时使命列表

5.当timetick的计数抵达某个定时使命的Match value的时刻发作中缀,中缀处置惩罚例程ISR会经由历程向DPC(Deferred Procedure Calls)发送实行定时使命的音讯去实行该定时使命的例程函数,假如只是延时使命就不须要实行了,同时更新timetick的下一次中缀发作的match value,并把这个定时使命从定时使命列表中移除

如上图举例:

依据时候推动历程,这些定时使命实行须要设置的Match value来发作中缀的递次顺次是:

M1 à M4 à M3 à M5 àM6 à M7

所以在基带系统内里会有一个专们的定时器运用使命来治理保护别的运用使命发作的定时器使命的调理

挪动基带平安研讨系列:观点和体系篇

e. 使命治理和IPC通讯机制

上面提到基带系统从内核态切入到运用态会建立第一个rootTask运用使命,这个使命有点相似linux系统内里的init历程,rootTask接下来会建立运用权限很高的DPC_task使命(担任高及时异步使命实行),权限仅次于IST(interrupt service threads,中缀效劳接收线程),然后是运用层的全局治理使命main_task将会启动,接下来营业所需的种种驱动相干的初始化和通讯营业逻辑使命将在main_task使命中得以建立,比方中缀接收效劳相干的IST(interrupt Service Threads),定时器营业相干的timer_task,qualcomm EFS文件系统相干的fs_task,使命监控相干的watchdog_task,以及GSM/UMTS营业相干的通讯层面的各个使命。

每一个使命被建立时,REX内核和用户态各自会保护一套数据构造,以及用户自定义的一套TCB构造:

· 内核态—>KTCB(Kernel Task Control Block)

· 用户态—>UTCB(User Task Control Block)

· 用户态—>REX_TCB(用户自定义TCB构造)

在内核态,cpu经由历程KTCB来治理调理一切的使命,以及治理用户态使命在切换时存储使命的context信息。

内核态的KTCB列表包括1个idle内核线程,8个IRQ和1个FIQ内核线程使命KTCB构造,以及每一个用户使命UTCB对应的在内核空间存储的KTCB构造。

在用户态,每一个使命都邑经由历程UTCB构造存储使命信息供用户读写,而且该UTCB构造也会映照到内核空间供内核读写,而用户态的REX_TCB是供用户自定义的数据构造,用户能够自定义一些轻易营业间通讯的数据构造。

使命的几个重要的特征:

1. 内核态读取0xf0000008地点存储着当前运动使命的KTCB指针

2. 内核态0xf001e000存储着一切KTCB构造的列表

3. 在用户态读取0xff000ff0地点值能够猎取当前运动使命的UTCB指针

KTCB,UTCB和用户定义的TCB构造关联以下图:

从上图可知,UTCB构造经由历程内存映照的体式格局会被内核态和用户态配合读写,utcb经由历程timetick计数器来纪录使命运用了若干cpu时候,为使命调理供应了很好的推断前提。

每一个被建立的使命都包括一些信息,初始化时会存储在UTCB构造和用户定义的TCB构造中:

1. 使命的实行函数地点

2. 使命实行函数参数

3. 客栈肇端地点

4. 客栈的长度

5. 使命优先级别

6. 存储用户tcb地点

7. 使命称号

使命建立函数定义相似构造以下,差别的版本能够会有一些变形:

Void *createTask(void *utcb,void *task_func_ptr,uint32 stack_size,void *stack_buttom,void *stack_top,uint32 task_priority,void *pararm)

用户定义tcb构造是一个双向链表构造,每一个用户tcb会把高于本身优先的使命插进去到前链,低于本身优先级的使命插进去到后链,一切的使命中中缀接收使命中的FIQ使命的优先级是最高的,它用于疾速处置惩罚来自于fiq中缀请求。

下图是枚举出的部份运转的使命列表:

挪动基带平安研讨系列:观点和体系篇

一切的使命经由历程优先级的上下,应用双向链表链接起来,以下图,FIQ使命具有最高优先级。

用户态使命运转特征:

a. 每一个被建立后的使命会被调理运转起来后,直至到守候信号的轮回,壅塞吸收音讯,此时交出cpu实行权,切换实行使命。

b. 当某个使命吸收到音讯后,使命守候信号的轮回返回,依据接收到信号去处置惩罚相应的例程,然后消灭接收到的信号值,继承新一轮的信号守候。

c. 使命经由历程设置接收信号的掩码来设置多个信号处置惩罚例程,每一个使命最多支撑设置32个信号接收值。

d. 信号接收值和信号接收掩码会在utcb构造中设置。

使命调理机制:

a. 中缀发作时,cpu将调理到IST接收中缀处置惩罚,因为IST的优先级比较高

b. 当使命守候音讯壅塞时,使命主动交出cpu控制权

c. 运用使命都在守候时,rootTask和Main Task接收CPU,相似idle loop

d. 当各个使命都有接收到音讯时,依据使命的优先级和cpu运用时候举行调理

以下图系统初始化历程当中的使命的切换历程以及CPU运用时候统计。

 挪动基带平安研讨系列:观点和体系篇

我们能够看到,在系统初始化历程当中,各个使命的初始化历程,cpu运用时候都差不太多,因为初始化完了都处于壅塞状况了,只要rootTask和Main Task占领大批的CPU时候,因为rootTask须要担任大批的KTCB切换的关照操纵,而且Main Task主动初始化那些运用使命。

IPC使命间通讯

IPC通讯是多使命合作关照和同步数据,异常重要的系统机制,在及时操纵系统中运用普遍,关于无线通讯庞杂的状况机制以及低延时同步处置惩罚,IPC通讯起到了至关重要的作用。

从上图我们可知每一个运转的使命都有自力运转环境,有本身的客栈空间,当差别使命之间举行数据交换和同步的时刻,这时候刻就须要用到IPC机制了,我们把用户使命的rex_tcb构造作为使命的唯一标示,用它与之差别的使命举行通讯,这里用到了很重要的信号关照和守候信号关照的机制,从上面我们可知每一个使命能够定义最多32个信号量来辨别吸收到的差别信号,然后依据接收到的差别信号举行相应的处置惩罚。

比方A使命须要告之B使命,是时刻处置惩罚B使命内里的某个分支逻辑时,A只须要设置B使命rex_tcb构造内里相应的信号值即可,当B使命被调理起来后的接收信号守候函数会返回掏出A设置的信号值,然后B使命作相应的处置惩罚,该IPC关照机制在基带系统内里运用普遍,后续我也会提到。

f. 中缀治理

基带系统在系统初始化历程当中会初始化中缀控制器,注册相应的中缀效劳例程,设置中缀优先级,而且见效中缀相应,在高通的MDM6600基带系统中设置了8个相应IRQ的IST使命,和1个相应FIQ的IST使命,优先级顺次提拔,FIQ的IST使命具有最高的优先级别,因为在中缀处置惩罚历程,能够会有更高优先级的中缀发作,这时候须要有高优先级的IST来接收相应来提拔中缀相应的及时性,因为中缀是由硬件发作,而IST在运用态,所以中缀处置惩罚历程以下。

1. 硬件中缀发作                                 (物理层)

2. 推断是不是是generic irq照样fiq                  (物理层)

3. 进入到irq exception或许fiq exception向量表    (内核)

4. 投递到相应中缀处置惩罚分发器                     (内核)

5. 查询IRQ和FIQ的内核KTCB状况是不是余暇        (内核)

6. 经由历程KTCB构造找到相应的IST使命                  (内核)

7. 相应的IST接收中缀,锁定该IST,并查询中缀号对应的ISR  (运用层)

8. 实行ISR后,消灭中缀状况,解锁IST,守候新的中缀相应   (运用层)

五、 结语

本文章的目的重假如为了对高通的基带系统有一个系统化的相识,操纵系统作为承载营业系统的基础设施,相识其运转道理关于研讨上层营业会有很大的协助,因为高通的的基带系统异常关闭,研讨须要大批的逆向工程的事情,纪录了大批的笔记,没法逐一整顿发出,所以也有能够会有一些脱漏和不足,假如有熟习的同砚,也愿望能够指出有毛病的处所,便于纠正,接下来系列的研讨文章将针对高通基带关于3GPP定义的GSM/UMTS/LTE,以及5G的完成上,而且在研讨历程当中,也会对照三星和华为在基带方面的完成和平安题目,而且发掘其平安攻击面。

阿里平安 谢君。

原文地点: https://www.4hou.com/technology/20226.html


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明挪动基带平安研讨系列:观点和体系篇
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址